福建李逵 发表于 2021-8-16 22:34:15

刚看自学视频一天,求助个问题

题目是:选出三个整数中的最大数。


#include<stdio.h>
int main()
{
        int n1,n2,n3,max;
        printf("整数1");scanf("%d",&n1);
        printf("整数2");scanf("%d",&n2);
        printf("整数3");scanf("%d",&n3);
        (max==n1);
        if(n2>max);max=n2;
        if(n3>max);max=n3;
        if(n2>n3);max=n2;
        printf("最大数值为%d",max);
        return 0;

}

我想问下if(n2>n3);max=n2;这段加不加有区别吗

不能懒 发表于 2021-8-16 22:41:29

有,区别就是判断2和3谁大

福建李逵 发表于 2021-8-16 22:56:09

不能懒 发表于 2021-8-16 22:41
有,区别就是判断2和3谁大

就是如果不加这段显得不够严谨是吗

Max472 发表于 2021-8-16 23:00:48

福建李逵 发表于 2021-8-16 22:56
就是如果不加这段显得不够严谨是吗

不用加。
这没有什么严谨不严谨,对了就是对了,错了就是错了
你前边已经把通过两个 if ,把三个数都进行了比较大小,最大的已经选出来了,还比什么?

人造人 发表于 2021-8-16 23:13:54

你的编译器什么提示也没有?换一个好一点的吧

$ gcc -g -Wall -o main main.c
main.c: In function ‘main’:
main.c:8:13: warning: statement with no effect [-Wunused-value]
    8 |         (max==n1);
      |         ~~~~^~~~~
main.c:9:9: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation]
    9 |         if(n2>max);max=n2;
      |         ^~
main.c:9:20: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘if’
    9 |         if(n2>max);max=n2;
      |                  ^~~
main.c:10:9: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation]
   10 |         if(n3>max);max=n3;
      |         ^~
main.c:10:20: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘if’
   10 |         if(n3>max);max=n3;
      |                  ^~~
main.c:11:9: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation]
   11 |         if(n2>n3);max=n2;
      |         ^~
main.c:11:19: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘if’
   11 |         if(n2>n3);max=n2;
      |                   ^~~

福建李逵 发表于 2021-8-17 00:08:51

人造人 发表于 2021-8-16 23:13
你的编译器什么提示也没有?换一个好一点的吧

{:10_258:}裁剪的啊{:10_247:}

wutianlong220 发表于 2021-8-17 00:19:29

没区别,如果前一步已经比较出了大小,并且已经赋值给了max,那右面再比一次的意义是什么?

还有啊,老铁你这个;分号结束了能否另起一行啊,你这个格式写的看的有点别扭

福建李逵 发表于 2021-8-17 05:04:58

Max472 发表于 2021-8-16 23:00
不用加。
这没有什么严谨不严谨,对了就是对了,错了就是错了
你前边已经把通过两个 if ,把三个数都进 ...

谢谢啦

人造人 发表于 2021-8-17 08:37:08

福建李逵 发表于 2021-8-17 00:08
裁剪的啊

?

番杰 发表于 2021-8-18 16:33:32

本帖最后由 番杰 于 2021-8-18 16:36 编辑

如果只是单纯地判断出最大的数
if(n2>n3);max=n2;这条语句可以去掉,意义不是很大,

但是,程序里最大的问题是(max==n1);这句
你不能这么写,==双等号是判断左右两端的值是否相等,
相等:这个语句为逻辑真(即为1)
不相等:这个语句为逻辑假(即为0)

而在这个地方,你想要的目的应该是:想把n1的值赋值给max,
所以,这个地方应该用 “=” 而不是 “==”。
页: [1]
查看完整版本: 刚看自学视频一天,求助个问题