急急急!帮我改一下这个C语言程序

来源:百度知道 编辑:UC知道 时间:2024/05/05 11:10:07
我刚开始学C语言,题目是要求删除一个集合中多余的数,为什么我做出来的只要是出现2个以上相同的数就不能删除完,
下面这个程序要的结果是0,1,3,4,5 ,可我的却是0,1,1,3,4,5
请大家帮我看看是什么地方错了,拜托了! 急急急

在线等 !!!!!!!!!!!!!!!!!!!

#include(stdio.h)
main()
{
int m[10]={0,1,1,1,3,3,4,4,5,5}
int i,j,length,k;
length=9;
printf("\n");
for(i=0;i<=length;i++);
printf("%5d",m[i]);
printf("\n");
for(i=0;i<length;i++);
for(i=i+1;j<=length;i++)
if(m[i]==m[j])
{
for(k=j;k<length;k++)
m[k]=m[k+1];
length--;
}
for(i=0;i<=length;i++)
printf("%5d",m[i]);
}

#include<stdio.h>
void main()
{
int m[10]={0,1,1,1,3,3,4,4,5,5};
int i,j,length,k;
length=9;
printf("\n");
for(i=0;i<=length;i++)printf("%5d",m[i]);
printf("\n");
for(i=0;i<length;i++)
for(j=i+1;j<=length;j++)
if(m[i]==m[j])
{
for(k=j;k<length;k++)
m[k]=m[k+1];
length--;
j--;//加了这一句,你移动元素的时候刚好跳过j的一次比较
}
for(i=0;i<=length;i++)
printf("%5d",m[i]);
}

for(i=0;i<=length;i++);
for(i=0;i<length;i++);
这两句没有循环执行的语句阿。要这样写
for(i=0;i<=length;i++)
{
printf("%5d",m[i]);
printf("\n");
}

for(i=0;i<length;i++)
{
for(i=i+1;j<=length;i++) //你写错了吧?for(j=i+1;j<=length;j++)
if(m[i]==m[j])
{
for(k=j;k<length;k++)
m[k]=m[k+1];
length--;
}

}

在18行加j--,这是修改后的程序: