C语言新手极致问题!!!

oowangfanoo 2011-09-22 10:31:04
怎样写一个程序是把1,2,2,2,3,4,5,5变成1,2,3,4,5?

void main(){
int i,j=0,a[10],b[10],n=1;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
if(a[i]<a[i+1]){
b[j]=a[i];
j++;
n++;
}
for(j=0;j<n;j++)
printf("%d",b[j]);
}
这上面是我写的 ,调不出来 不知道错哪里
有一数列非递减有序,使其为递增有序

新手求解!!!!!!!!!!!!!!!!!!!!!!!!!!!
...全文
178 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
cocoabird 2011-09-23
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 qq806418714 的回复:]

我给个思路吧
b[a[i]]=a[i];
[/Quote]
这是碰巧了,数变了就不行了
oowangfanoo 2011-09-23
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 zhao4zhong1 的回复:]
仅供参考

C/C++ code

//将out.txt文件中的内容排序并去重,结果保存到unique.txt中
#include <stdio.h>
#include <stdlib.h>
#define MAXLNO 10000000 //能处理的最大行数
#define MAXLEN 20 //能处理的最大行宽,包括行尾的\n和字符串尾的\0
char buf[……
[/Quote]

大哥 你写的很好;太深奥了;
我仅仅只是想对 1 4 4 5 6 3 6 2 9 8 7 7 ;
对这个进行排序 先消除重复的 然后递增排序; 你懂了? 你写的太深奥了,我还是新手嘛;
赵4老师 2011-09-23
  • 打赏
  • 举报
回复
仅供参考
//将out.txt文件中的内容排序并去重,结果保存到unique.txt中
#include <stdio.h>
#include <stdlib.h>
#define MAXLNO 10000000 //能处理的最大行数
#define MAXLEN 20 //能处理的最大行宽,包括行尾的\n和字符串尾的\0
char buf[MAXLNO][MAXLEN];
int ln,i;
FILE *f;
int cmpfun( const void *arg1, const void *arg2 ) {
return strcmp((const char *)arg1,(const char *)arg2);
}
int main() {
f=fopen("out.txt","r");
if (NULL==f) {
printf("Can not find file out.txt\n");
return 1;
}
ln=0;
while (1) {
if (NULL==fgets(buf[ln],MAXLEN,f)) break;
ln++;
if (ln>=MAXLNO) {
printf("Lines >%d ignored.",MAXLNO);
break;
}
}
fclose(f);
if (ln>1) qsort(buf,ln,MAXLEN,cmpfun);
f=fopen("unique.txt","w");
if (NULL==f) {
printf("Can not create file unique.txt\n");
return 2;
}
fprintf(f,"%s",buf[0]);
if (ln>1) for (i=1;i<ln;i++) {
if (strcmp((const char *)buf[i-1],(const char *)buf[i])) fprintf(f,"%s",buf[i]);
}
fclose(f);
return 0;
}
w372011482 2011-09-23
  • 打赏
  • 举报
回复
你没有考虑到数组最后一个元素啊
君恪 2011-09-23
  • 打赏
  • 举报
回复
记得可以用位图的思想来做~
AndyZhang 2011-09-23
  • 打赏
  • 举报
回复
那就从1开始,a[i]和a[i-1]作比较
qiuhui00 2011-09-22
  • 打赏
  • 举报
回复
不知道,你自己试试吧
oowangfanoo 2011-09-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 qiuhui00 的回复:]

C/C++ code
#include <stdio.h>

int main(void)
{
int i, j;
int a[10], b[10];

for(i = 0; i < 10; i++) {
scanf("%d", &a[i]);
}

j = 0;
b[j] = a[0];
for(i = ……
[/Quote]

这个有用的?
低头思蚊香 2011-09-22
  • 打赏
  • 举报
回复
我给个思路吧
b[a[i]]=a[i];
低头思蚊香 2011-09-22
  • 打赏
  • 举报
回复
lz算法本身有问题,如果全1的话b数组根本没有元素
qiuhui00 2011-09-22
  • 打赏
  • 举报
回复
或者可以这样写
#include <stdio.h>

int main(void)
{
int i, j;
int a[10], b[11];

b[0] = ~0;
for(i = 0, j = 0; i < 10; i++) {
scanf("%d", &a[i]);
if (b[j] < a[i])
b[++j] = a[i];
}

for (i = 1; i <= j; i++)
printf("%d\n", b[i]);

return 0;
}
qiuhui00 2011-09-22
  • 打赏
  • 举报
回复
#include <stdio.h>

int main(void)
{
int i, j;
int a[10], b[10];

for(i = 0; i < 10; i++) {
scanf("%d", &a[i]);
}

j = 0;
b[j] = a[0];
for(i = 1; i < 10; i++)
if (b[j] < a[i])
b[++j] = a[i];

for (i = 0; i <= j; i++)
printf("%d\n", b[i]);

return 0;
}
「已注销」 2011-09-22
  • 打赏
  • 举报
回复
if(a[i]<a[i+1]){

越界。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧