C语言for语句的问题

来源:百度知道 编辑:UC知道 时间:2024/06/09 13:59:53
#include<stdio.h>
void main()
{
int i,sum=0;
scanf("%d",&i);
for(i=1;i<=10;i++)
sum=sum+i;
printf("%d\n",sum);

}
请问这个程序为什么i>10时仍然输出的是55,不是输出输入的i的值吗?例如输入14,不是应该输出14吗?怎么是55,请高手解释一下
请问用for语句的话怎样修改才能打到我说的那种输出结果,即输出大于10的值,输出输入的i值

按照你写的这个程序来看,你所创建的int i 与for循环里边的i没有任何关系,只是变量名一样,int i,这个i属于全局变量, for循环里边的i 属于局部变量,实际上是内存新开辟一个空间,放for循环里边的i,变量名一样,内存地址不一样,两个i由于作用域不同,所以并不冲突,你可以试试我给你改写这段代码,应该会明白
#include<stdio.h>
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输出结果就是你输入的数值

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

//-----
若要达到你的那种输出结果,改成这样
#include<stdio.h>
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);

}

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

for(i=1;i<=10;i++) 中,对i重新赋值,所以,你对i的输入操