发布网友 发布时间:2023-06-06 08:44
共1个回答
热心网友 时间:2024-12-05 06:13
这个程序是错误的。i没有定义。C语言,大小写是不一样的。
另外还有一个错误,n=0时,10-n=10,k<10,最大为9,9+1=10,a数组有10个元素,但是下标最多为9,a[k+1]越界。
程序本身,似乎是要删除数组中的重复的元素,最后输出删除重复之后的结果。如果有连续的两个都是重复的,程序不会删除后面一个!"%d"的引号是中文的,不行;%d输出连成一片,看不清,因此加宽度"%3d"。j--是为了将刚才从后面移动过来的数也检查一次。
修改如下:
#include <stdio.h>
int main()
{int a[10]={1,2,2,3,4,3,4,5,1,5};
int n=0,i,j,c,k;
for(i=0;i<10-n;i++)
{c=a[i];
for(j=i+1;j<10-n;j++)
if(a[j]==c)
{for(k=j;k<10-n-1;k++)
a[k]=a[k+1];
n++;j--;
}
}
for(i=0;i<10-n;i++)
printf("%3d",a[i]);
getchar();
return (0);
}