求教,为什么运行时max只会输出第一个数
#include <stdio.h>int max(int a, int b);
main()
{
int x, y, z;
int max(int a, int b);
printf("input two numbers:\n");
scanf("%d%d",&x, &y);
z = max(x, y);
printf("maxmum = %d", z);
}
int max(int a, int b)
{
if(a>b)return a;else return b;
}
我用的是Dev-C++,下边也没有提示报错,我输入9,5它就会输出9,我输入5,9他就会输出5,根本没有起到输出最大值的作用,求教代码哪里出了问题!
代码没问题啊,你这不就是输出最大值 scanf("%d%d",&x, &y);
改成scanf("%d %d",&x, &y);
输入的时候加个空格
否则你输入的两个数被第一个%d匹配了 第二个%d匹配失败
scanf的返回值==2也可以验证 不推荐逗号是英文中英文可能不一样{:10_292:} 我用的VC++6.0是OK的 本帖最后由 baige 于 2021-3-14 19:34 编辑
scanf -- 格式化输入
空白字符:该函数将读取并忽略空白字符(空白字符包含空格、回车和制表符);
除了格式占位符(% 开头)外的非空白字符:指定函数必须从输入流中读取到的字符,如果读取不匹配,则函数调用失败,并从匹配失败处截断输入流;
你的scanf("%d%d",&x.&y);输入的时候不需要加,加了之后读取不匹配,则函数调用失败,并从匹配失败处截断输入流;
这样输入就行:
2 3
你输入的时候输入的是中文逗号,所以不被程序匹配,需要英文逗号或空格或Tab或换行 kogawananari 发表于 2021-3-14 19:27
scanf("%d%d",&x, &y);
改成scanf("%d %d",&x, &y);
求教,我用空格隔开之后,保存完运行还是不对,哈哈哈 baige 发表于 2021-3-14 19:32
scanf -- 格式化输入
空白字符:该函数将读取并忽略空白字符(空白字符包含空格、回车和制表符);
除了 ...
谢谢,但是我这样改完之后还是不对,不知道怎么回事。请看8楼我截了个图 一枚丶学渣 发表于 2021-3-14 19:18
代码没问题啊,你这不就是输出最大值
它把第一个输入的小数给输出了 Amarantos 发表于 2021-3-14 20:25
它把第一个输入的小数给输出了
你重新发下你刚才的代码,代码可能有错,截图的返回值错了
#include <stdio.h>
int max(int a, int b);
main()
{
int x, y, z;
int max(int a, int b);
printf("input two numbers:\n");
scanf("%d %d",&x, &y);
z = max(x, y);
printf("maxmum = %d", z);
return 0;
}
int max(int a, int b)
{
if(a>b)return a;
else return b;
} baige 发表于 2021-3-14 20:36
我这是把您发的代码复制过去又运行了下,结果非常离谱,哈哈哈我真懵了
重新编译下,dev对于代码细微的改动是不会管的
baige 发表于 2021-3-14 20:46
重新编译下,dev对于代码细微的改动是不会管的
哈哈哈原来是这样!就是这个原因,运行正常了。谢谢!!!
页:
[1]