| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 627 人关注过本帖
标题:[求助]关于一道初学者的题目,小弟有些迷茫
只看楼主 加入收藏
dearbot
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2007-8-12
收藏
 问题点数:0 回复次数:3 
[求助]关于一道初学者的题目,小弟有些迷茫

题目是这样的:编写一个程序,用于接收用户输入的两个数(可以是整数也可以是小数),对其执行加 减 乘 除 及求余运算,然后以格式化的方式显示计算结果,要求小数点保留两位有效数字.

我觉得像我这么写没有什么不对的地方,检查的时候也没发现错误和警告,但执行时却说程序遇到问题需要关闭,调式的时候弹出C++的信息窗口:"Unhandled exception in kdkd.exe(kdkd.exe为我写的程序名):0xc0000094:Integer Divide by Zero."然后进入C++调试一个黄色箭头指向这句:
remainder=int(num1)%int(num2);//只有整数可以求余
************************************************************************************************************************************
正确答案已经找到,但我不明白我写的CODE哪里有不对的地方.求助!




#include <stdio.h>
void main()
{
double num1,num2;//声明变量和变量类型
printf("请输入您要求值的两个数:");//输出语句
scanf("%f%f",&num1,&num2);//完成输入函数

/*声明变量及运算工式*/

double sum,minus,product,quotient,remainder;//声明运算变量
sum=num1+num2;
minus=num1-num2;
product=num1*num2;
quotient=num1/num2;
remainder=int(num1)%int(num2);//只有整数可以求余

/*输出结果&结束*/

printf("\n和为:%7.2f",sum);
printf("\n差为:%7.2f",minus);
printf("\n积为:%7.2f",product);
printf("\n商为:%7.2f",quotient);
printf("\n余数为:%7.2d",remainder);

}

搜索更多相关主题的帖子: 黄色 小数点 信息 
2007-08-12 12:23
未完成交响曲
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-8-12
收藏
得分:0 

double num1,num2;

这一句改成
float num1,num2;
就可以正确运行了。

错误的原因我也不是很懂,我要再想一想。不过,我可以把自己调试的过程给你说以下,用的是VC 6.0。
我第一次运行你的程序时结果和你所说的一样。于是,我把无关的语句全部删除,剩下下面的:

#include <stdio.h>
void main()
{
double num1,num2;
printf("请输入您要求值的两个数:");
scanf("%f%f",&num1,&num2);

double remainder;
remainder=int(num1)%int(num2);

printf("\n余数为:%7.2d",remainder);

}
然后开始调试,我发现当我输入num1,num2的数值后,local窗口里的num1,num2的数值不仅没有变化,
反而变成红色,这样才知道其实错误的根源在scanf这一句。
再后来,我想到把double 改成 float,因为感觉这里“太大了”,就这样就对了。我也是第一次
遇到这种错误。

如果有哪位路过的高手,希望指点一下原因,我也很想知道。

2007-08-12 14:30
未完成交响曲
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-8-12
收藏
得分:0 
还有,就是把 printf("\n余数为:%7.2d",remainder); 这一句的7.2d改成7.2f。
2007-08-12 14:34
戒不掉
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2007-8-11
收藏
得分:0 

[QUOTE]#include <stdio.h>
void main() //改成int main(void)或者main()
{
double num1,num2;//声明变量和变量类型
printf("请输入您要求值的两个数:");//输出语句
scanf("%lf%lf",&num1,&num2);//完成输入函数

/*声明变量及运算工式*/

double sum,minus,product,quotient,remainder;//声明运算变量 // 改成 int remainder 主要问题在这
sum=num1+num2;
minus=num1-num2;
product=num1*num2;
quotient=num1/num2;
remainder=(int)(num1)%(int)(num2);//只有整数可以求余

/*输出结果&结束*/

printf("\n和为:%7.2f",sum);
printf("\n差为:%7.2f",minus);
printf("\n积为:%7.2f",product);
printf("\n商为:%7.2f",quotient);
printf("\n余数为:%7.2d",remainder);

return 0;

你的程序还应该改进,添加一条用于检测除数是否为0的代码。

}
[/QUOTE]


2007-08-12 14:58
快速回复:[求助]关于一道初学者的题目,小弟有些迷茫
数据加载中...
 
   



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

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