这段C语言我想这样改可以吗?

来源:百度知道 编辑:UC知道 时间:2024/06/18 04:28:57
从键盘输入10个互不相同的整数并存放在一维数组中,删除其中下标为4的元素
#include<stdio.h>
main()
{
int i=0,k=0,a[10]={0};
printf("Input data:");
for(i=0;i<10;i++)\
{
scanf("%d",&a[i]);printf("%4d",a[i]);}
printf("\n");
k=4;
for(i=k;i<9;i++)a[i]=a[i+1];
for(i=0;i<9;i++)printf("%4d",a[i]);
printf("\n");
}
我想改为
#include<stdio.h>
main()
{
int i=0,a[10]={0};
printf("Input data:");
for(i=0;i<10;i++)\
{
scanf("%d",&a[i]);printf("%4d",a[i]);}
printf("\n");
for(i=4;i<9;i++)a[i]=a[i+1];
for(i=0;i<9;i++)printf("%4d",a[i]);
printf("\n");
}

这样行吗?就是那个k不要了
为什么还多定一个int k呢?

是一样的 可是当 k=4 被多次调用
要修改它的值就比较麻烦了
所以定义一个变量 只要重新赋值就可以了

在你的代码里,i是用于控制循环的执行的,
你的最外层循环是:for(i=0;i<10;i++)
目的是控制循环进行10次,

但是在你的内部循环内:
for(i=k;i<9;i++)a[i]=a[i+1];
for(i=0;i<9;i++)printf("%4d",a[i]);
或者
for(i=4;i<9;i++)a[i]=a[i+1];
for(i=0;i<9;i++)printf("%4d",a[i]);

上面的两段代码,在循环执行完毕后,i的值都会变成9,
再执行最外层for循环中的i++后,i的值就变为10了,
最外层for循环中的i<10判断条件不成立。

所以你的最外层循环永远只能执行1回。