问题有2个。。
#define N 10
void del(int *shu,int *n) //删除函数
{
int i,j,m;
int con=0;
printf("qing shu ru ni yao sanchu de shu: ");
scanf("%d",&m); //输入要删除的数
i=0;
while(i<(*n-con)) //问题1 。con 没起作用
{ // 也就是底下输出。把一个数删除后以其他数填充了。
if (shu[i]==m)
{
for (j=i;j<*n;j++)
shu[j]=shu[j+1];
con++; //这里有增加
}
i++;
}
}
main()
{
int sum[N];
int i,j,n=0;
int m;
for(i=0;i<N;i++)
{
printf("shuru yizu shuzi 'q'wei quit xianzai shuru: ");
if (scanf("%d",&sum[i])!=1) //如果输入是Q。或者是说非法字符。
break; //那么就退出
n++; //问题2。 如果这里中断后。del 函数中。不执行scanf 函数。
}
printf("\nni shuru de shu wei :");
for (i=0;i<n;i++)
printf(" %d ",sum[i]);
printf("\n");
del(sum,&n); //难道n 值 没返回?! 也不对,我把 del 函数 放这里,也就是不用函数
printf("\nsan chu hou de shu you : "); //也一样的。删除后的数组结尾。就是被其他数值填充。
for (i=0;i<n;i++)
printf(" %d",sum[i]);
}
就是说。问题1 如果 我输入中 输入了个 Q。那么就不会提示 输入你要删除的数。
输出变为,刚输入正常的数。
问题2 如果全部输入。那么 比如 11 22 23 24 22 25 26 27 22 20
提示你要删除的数 比如22
那么 输出就会。
11 23 24 25 26 27 10 10 10
这3个10 就是填充的。
我不是一出问题。就贴的。我也自己想了很久了。 谢谢大家能帮我。