很简单的编程问题

来源:百度知道 编辑:UC知道 时间:2024/09/20 23:31:18
#include<stdio.h>
void main()
{
int i,j,sum=0;
while(scanf("%d",&j)!=EOF)
for(i=0;i<=j;i++)
sum+=i;
printf("%d",sum);
}
为什么我加了while(.....!=EOF)就不能运行出结果?
去掉就能运行
还有
#include<stdio.h>
void main()
{
int i,j,sum;
while(scanf("%d",&j)!=EOF)
{

for(i=0;i<=j;i++)

{

sum=0;
sum=sum+i;
}
printf("%d",sum);
}
}
的话为什么输入是多少输出也是多少的??
用EOF到底该怎样才能对??
请把所有问题给解释下!
第二问明白了~~第一个问题还是不清楚,怎么会没结果的说...

#include<stdio.h>
int main()
{
int i,j,sum=0;
while (scanf("%d",&j) != EOF)
{
for (i=0;i<=j;i++)
sum+=i;
printf("%d",sum);
}
}
这样就有结果输出了。

先说下EOF 是end of file 是文件结束标志
在C里面有明确的定义 #define EOF (-1)
其他平台也有可能能不是-1

scanf()函数会返回成功赋值的数据项数,出错时则返回EOF。

你只有出错的时候才会停止循环 所以你在家了后没有得到结果,如果不加 实际上结果的值会不正确,因为j未被赋初始值。
for(i=0;i<=j;i++)

{
sum=0; 在这里每次sum加完i之后都被重新归0了,去掉 或者定义成static
sum=sum+i;
}

当你是在命令行方式下运行程序的,当你输入ctrl+z则scanf()返回的就是EOF ,由于你把sum=0; 写在循环里面,每次都清0 了,所以最后得到的就是你输入 什么就是什么。。。还你你加了while(scanf("%d",&j)!=EOF)
你要是没有输入 ctrl+z则就一直在输入 然后运行
for(i=0;i<=j;i++)
sum+=i;
一直退不出这个循环。。。 就没有结果了

EOF 就是文件结束标志, 也就是-1

EOF 是文件结束符标志
一般是读取文件的时候用到,判断是否达到文件结尾

scanf("%d",&j)!=EOF 这是什么意思??
判断用户输入结束??
EOF一般不用做拥护输入

int i,j,