Amarantos 发表于 2021-3-14 18:54:14

求教,为什么运行时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,根本没有起到输出最大值的作用,求教代码哪里出了问题!

一枚丶学渣 发表于 2021-3-14 19:18:13

代码没问题啊,你这不就是输出最大值

kogawananari 发表于 2021-3-14 19:27:32

scanf("%d%d",&x, &y);

改成scanf("%d %d",&x, &y);

输入的时候加个空格

否则你输入的两个数被第一个%d匹配了 第二个%d匹配失败


scanf的返回值==2也可以验证

kogawananari 发表于 2021-3-14 19:29:29

不推荐逗号是英文中英文可能不一样{:10_292:}

ACDCAC 发表于 2021-3-14 19:29:53

我用的VC++6.0是OK的

baige 发表于 2021-3-14 19:32:43

本帖最后由 baige 于 2021-3-14 19:34 编辑

scanf -- 格式化输入
空白字符:该函数将读取并忽略空白字符(空白字符包含空格、回车和制表符);
除了格式占位符(% 开头)外的非空白字符:指定函数必须从输入流中读取到的字符,如果读取不匹配,则函数调用失败,并从匹配失败处截断输入流;
你的scanf("%d%d",&x.&y);输入的时候不需要加,加了之后读取不匹配,则函数调用失败,并从匹配失败处截断输入流;
这样输入就行:
2 3

Minecraft程序猿 发表于 2021-3-14 19:34:57

你输入的时候输入的是中文逗号,所以不被程序匹配,需要英文逗号或空格或Tab或换行

Amarantos 发表于 2021-3-14 20:22:25

kogawananari 发表于 2021-3-14 19:27
scanf("%d%d",&x, &y);

改成scanf("%d %d",&x, &y);




求教,我用空格隔开之后,保存完运行还是不对,哈哈哈

Amarantos 发表于 2021-3-14 20:24:05

baige 发表于 2021-3-14 19:32
scanf -- 格式化输入
空白字符:该函数将读取并忽略空白字符(空白字符包含空格、回车和制表符);
除了 ...

谢谢,但是我这样改完之后还是不对,不知道怎么回事。请看8楼我截了个图

Amarantos 发表于 2021-3-14 20:25:05

一枚丶学渣 发表于 2021-3-14 19:18
代码没问题啊,你这不就是输出最大值

它把第一个输入的小数给输出了

baige 发表于 2021-3-14 20:32:59

Amarantos 发表于 2021-3-14 20:25
它把第一个输入的小数给输出了

你重新发下你刚才的代码,代码可能有错,截图的返回值错了

baige 发表于 2021-3-14 20:35:02


baige 发表于 2021-3-14 20:36:13

#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;
}

Amarantos 发表于 2021-3-14 20:42:07

baige 发表于 2021-3-14 20:36


我这是把您发的代码复制过去又运行了下,结果非常离谱,哈哈哈我真懵了

baige 发表于 2021-3-14 20:46:05

重新编译下,dev对于代码细微的改动是不会管的

Amarantos 发表于 2021-3-14 20:49:19

baige 发表于 2021-3-14 20:46
重新编译下,dev对于代码细微的改动是不会管的

哈哈哈原来是这样!就是这个原因,运行正常了。谢谢!!!
页: [1]
查看完整版本: 求教,为什么运行时max只会输出第一个数