| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 518 人关注过本帖
标题:数组删除相同的数 然后从小到大排列。帮忙修改程序。
只看楼主 加入收藏
hxx4137
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2013-11-19
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:5 
数组删除相同的数 然后从小到大排列。帮忙修改程序。
#include <stdio.h>
#define M 100

void fun(int a[M])
{  int i,j=0;
if(a[i+1]==a[i])
   continue;
  else
  {
   a[j+1]=a[i+1];
   j++;
  }
}
 int main()
 { int a[M];
 int i,j=0;
 printf("输入原数组:\n");
 for(i=0;i<M;i++)
 {
  scanf("%d",&a[i]);
 }
fun(a);
printf("新数组为:\n");
 for(i=0;i<j;i++)
 printf("%d ",a[i]);
 printf("\n");
return 0
 }

个人感觉没错但是
C:\Windows\Cpp1.cpp(7) : error C2044: illegal continue
C:\Windows\Cpp1.cpp(28) : error C2143: syntax error : missing ';' before '}'
执行 cl.exe 时出错.

不知道为什么,。。。
搜索更多相关主题的帖子: Windows continue include return before 
2013-11-19 18:37
pangshch
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:2
帖 子:443
专家分:1966
注 册:2013-4-9
收藏
得分:0 
还没问题,
continue 是用在循环里面的。你用在if语句里面,
最后的return 0 后面少了个分号
这是表面的。
你的程序根本就实现不了你说的功能,这才是主要的。
2013-11-19 18:46
hxx4137
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2013-11-19
收藏
得分:0 
回复 2楼 pangshch
,一激动就发上来了。。我改改。
2013-11-19 18:51
hxx4137
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2013-11-19
收藏
得分:0 
回复 2楼 pangshch
#include <stdio.h>
#define M 5

void fun(int a[M])
{  int i,j=0;
if(a[i+1]==a[i])
  ;// continue;
  else
  {
   a[j+1]=a[i+1];
   j++;
  }
}
int main()
{ int a[M];
int i,k,t,j=0;
printf("输入原数组:\n");
for(i=0;i<=M-1;i++)
{
  scanf("%d",&a[i]);  //输入数组
}
fun(a);             //去重
k=j;
for(j=0;j<=k-1;j++)//排序
 for(i=1;i<=k-1-j;i++)
{if(a[j]>a[j+1])
 t=a[j];
 a[j]=a[j+1];
 a[j+1]=a[j];}

 
printf("新数组为:\n");//输出
for(j=0;j<=k-1;j++)
printf("%d ",a[j]);
printf("\n");
return;
}

请问这样呢, 编译没错 ,出不了结果
2013-11-19 18:58
hxx4137
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2013-11-19
收藏
得分:0 
回复 2楼 pangshch
#include <stdio.h>
#define M 5

void fun(int a[M])
{  int i,j=0;
if(a[i+1]==a[i])
  ;// continue;
  else
  {
   a[j+1]=a[i+1];
   j++;
  }
}
int main()
{ int a[M];
int i,k,t,j=0;
printf("输入原数组:\n");
for(i=0;i<=M-1;i++)
{
  scanf("%d",&a[i]);  //输入数组
}
fun(a);             //去重
k=j;
for(j=0;j<=k-1;j++)//排序
 for(i=1;i<=k-1-j;i++)
{if(a[j]>a[j+1])
 t=a[j];
 a[j]=a[j+1];
 a[j+1]=a[j];}

 
printf("新数组为:\n");//输出
for(j=0;j<=k-1;j++)
printf("%d ",a[j]);
printf("\n");
return;
}

请问这样呢, 编译没错 ,出不了结果
2013-11-19 19:03
pangshch
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:2
帖 子:443
专家分:1966
注 册:2013-4-9
收藏
得分:10 
回复 5楼 hxx4137
你 的fun()函数根本去不了重复, 循环都不用 一个怎么去。
去重复的话最好用一个数组保存新数据  
1. 从原数组中读一个值
2. 看这个值在不在新数组中,
3. 如果在,不操作, 如果不在就存到新数组,
4. 读下一个值
5. 循环, 直到原数组没有数据
还有你的排序也有问题,冒泡法会不会用?可以试试
2013-11-19 19:24
快速回复:数组删除相同的数 然后从小到大排列。帮忙修改程序。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014790 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved