初学C语言,试编了一个程序。调试成功,但结果很怪!!!
解决时间 2021-02-12 23:56
- 提问者网友:沉默的哀伤
- 2021-02-12 00:53
#include
void main()
{
int a,b,c;
scanf ("%d,%d",&a,&b);
if (a>b) c=a;
else c=a;
printf ("max is %d\n",c);
}
我编写的代码是这样。我试验时得的结果是这样。
21564651,5649845614654
max is 3307
123456,3214
max is 3214
12345,123456
max is 12345
12345,32948
max is 12345
11111,13458
max is 13458
16345,94152
max is 28616
为什么会这样啊?
求高手解答,谢谢。
第7行,我提问时打错了,应该是 else c=b;
这个小编程是 求两数中比较大的数
我听了 回答者: sza302 的建议 把else c=b; 删掉。我试了三组数,但结果还是一样
546512,4185
max is 22224
95486,5843
max is 29950
64189912,2
max is 30168
我又试了 回答者: alskdjfhcy 的建议,把int 换成了double 试了三组数
541415,12
max is 925
654879,2546
max is 925
925,926
max is 925
最佳答案
- 五星知识达人网友:迟山
- 2021-02-12 01:46
#include
void main()
{
double a,b,c;
scanf ("%lf,%lf",&a,&b);
if (a>b) c=a;
else c=b;
printf ("max is %lf\n",c);
}
这是改动后的程序,我运行的可以~~
全部回答
- 1楼网友:深街酒徒
- 2021-02-12 06:29
//546512,4185 //逗号应该在英文模式下书写,且后面不能有空格
//max is 546512
//请按任意键继续. . .
#include
int main()
{
int a,b,c;
scanf ("%d,%d",&a,&b);//因为lz设置的格式,输入的两个数据之间有个逗号
if (a>b) c=a; //逗号应该在英文模式下书写,另外不能有空格符
else c=b;
printf ("max is %d\n",c);
}
- 2楼网友:山君与见山
- 2021-02-12 05:28
你输的数太大了,int类型的范围是 -32768~32767
你可以定义 long int
- 3楼网友:青灯有味
- 2021-02-12 04:21
a,b,c不能用int定义,int是-32768~32767,你给的数字溢出了
(说错了)应该用long int定义变量,但也就是-2^31~(2^31-1)
要是用double的话,%d要改为%f
附变量范围:
type length (bit) range
int 16 -32768~32767
unsigned [int] 16 0~65535
short [int] 16 -32768~32767
unsigned short [int] 16 0~65535
long [int] 32 -231~(231-1)
unsigned long [int] 32 0~(232-1)
type length(bit) 有效数字 magnitude
float 32 6~7 10-37~1038
double 64 15~16 10-307~10308
long double 128 18~19 10-4931~104932
1、编译目标,也就是右上角的“tdm-gcc 4.9.2 64bit release”需要改到 debug模式才能够输出调试信息。(提示你选择,起始你选yes的时候ide会帮你做这件事,不过只是一次,下次可能还要点yes)
2、断点要加在程序的执行语句上,比如说加在scanf的那一行,你加在main上是没用的,因为那只是个函数头,并没有执行指令。
问题出在else c=a;
应该改无else c=b;
改后你试一下
我要举报
大家都在看
推荐资讯