C语言for语句的问题

2025-01-07 16:42:20
推荐回答(5个)
回答1:

你在执行scanf语句的时候是从键盘上输入一个值对i进行初始化赋值
然而i还可以直接赋值
当执行for语句的时候,又会重新对i进行赋值为1,所以结果是55

//-----
若要达到你的那种输出结果,改成这样
#include
void main()
{
int i,sum=0;
scanf("%d",&i);
for(;i<=10;i++)//这里不再对i赋值
sum=sum+i;
sum=sum+i;//因为你输入大于10的值,上面那个循环里的sum=sum+i不会被执行,所以这里再添一个
printf("%d\n",sum);

}

不过这样纯粹无聊了,学编程深究可以,但别钻牛角尖,不然你会天天头痛的

回答2:

按照你写的这个程序来看,你所创建的int i 与for循环里边的i没有任何关系,只是变量名一样,int i,这个i属于全局变量, for循环里边的i 属于局部变量,实际上是内存新开辟一个空间,放for循环里边的i,变量名一样,内存地址不一样,两个i由于作用域不同,所以并不冲突,你可以试试我给你改写这段代码,应该会明白
#include
void main()
{
int i,sum=0;
scanf("%d",&i);
for(i=1;i<=10;i++)
{
sum=sum+i;
printf("%d\n",i);
}
printf("%d\n",sum);
printf("%d\n",i);
}
这样看,在for循环里边的i输出结果是1到10;
而最后边的i输出结果就是你输入的数值

回答3:

for(i=1;i<=10;i++) 中,对i重新赋值,所以,你对i的输入操作根本没起任何作用,永远是从1开始算起,所以sum的值就是1~10的累加,可以这样写
for( ;i<=10;i++)

回答4:

你这个无论输入什么数输出都会是55,因为你把输入的数存在i中后,在for循环中又不断的改变i的值,所以你输入的数已经没有意义了

回答5:

for(i=1;i<=10;i++)

你在这里又把 i 赋值 为 1 了,所以刚才的输入无效了。

不论刚才输入多少,总是 sum = 1+2+。。。+10 = 55