标题:[求助]请问这个问题怎么处理?
只看楼主
kingma
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-4-1
 问题点数:0 回复次数:5 
[求助]请问这个问题怎么处理?

#include <stdio.h>
void main()
{
int i,sum=0,x;

for (i=0;i<100;i++){
scanf("%d",&x);
if (x>0) sum=sum+x;
}
printf("%d\n",sum);
}

题目是输入一百个数,求所有整数之和.这个程序段也是教材里写好的.
问题是我拿来运行后结果却是只算小于0前面的整数.
比方输入数据是:10 10 0.2 10 运行结果是20.
输入:10 10 -1 10 0.2 20 运行结果是30.
这个负数没关系.但算到0.x就会停止了.
因为是自学,苦于联系不到教材里的老师,烦请各位高手指点一二.不胜感激....

搜索更多相关主题的帖子: 自学 不胜感激 include 
2006-04-04 10:47
︷順⑦?zì繎
Rank: 1
等 级:新手上路
帖 子:255
专家分:0
注 册:2006-3-28
得分:0 
以下是引用kingma在2006-4-4 10:47:00的发言:

#include <stdio.h>
void main()
{
int i;
float sum = 0, x; /*既然你要输入小数部分.那么定义实型*/
for (i=0;i<100;i++)
{
scanf("%f",&x);
if ((int)x ==0) /*判断是否以0开头,是跳出,求出结果*/
break;
if (x<0) /*负数重新循环*/
continue;
sum=sum+x;
}
printf("%f\n",sum);
}
题目是输入一百个数,求所有整数之和.这个程序段也是教材里写好的.
问题是我拿来运行后结果却是只算小于0前面的整数.
比方输入数据是:10 10 0.2 10 运行结果是20.
输入:10 10 -1 10 0.2 20 运行结果是30.
这个负数没关系.但算到0.x就会停止了.
因为是自学,苦于联系不到教材里的老师,烦请各位高手指点一二.不胜感激....

好像能完成你的功能..

[此贴子已经被作者于2006-4-4 10:57:46编辑过]


2006-04-04 10:56
美丽心情
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2006-3-27
得分:0 
输入格式不对.
由于你定义的变量x是整型,所以执行语句scanf("%d",&x);时,输入0.1之类的数是不对的,必须输入的数全部为整数,不能有小数.


做一名C程序员怎么样?
2006-04-04 11:05
wzl520
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2006-3-30
得分:0 
你在输入的格式说明符是用了%d
%d输入的是要是整数

No pain No gain
2006-04-04 11:09
cordier
Rank: 2
等 级:论坛游民
威 望:1
帖 子:449
专家分:14
注 册:2006-2-9
得分:0 

整型输入,随到浮点会停止。


2006-04-04 11:11
kingma
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-4-1
得分:0 
谢谢,果然如此.
这个教材里我上面这个程序段是标准答案来着.
2006-04-04 11:29



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-54958-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.193014 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved