鱼C论坛

 找回密码
 立即注册
查看: 1979|回复: 9

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

[复制链接]
发表于 2021-8-16 22:34:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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


#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;这段加不加有区别吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-16 22:41:29 | 显示全部楼层
有,区别就是判断2和3谁大
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-16 22:56:09 | 显示全部楼层
不能懒 发表于 2021-8-16 22:41
有,区别就是判断2和3谁大

就是如果不加这段显得不够严谨是吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-16 23:00:48 | 显示全部楼层
福建李逵 发表于 2021-8-16 22:56
就是如果不加这段显得不够严谨是吗

不用加。
这没有什么严谨不严谨,对了就是对了,错了就是错了
你前边已经把通过两个 if ,把三个数都进行了比较大小,最大的已经选出来了,还比什么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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;
      |                   ^~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-17 00:08:51 From FishC Mobile | 显示全部楼层
人造人 发表于 2021-8-16 23:13
你的编译器什么提示也没有?换一个好一点的吧

裁剪的啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-17 00:19:29 | 显示全部楼层
没区别,如果前一步已经比较出了大小,并且已经赋值给了max,那右面再比一次的意义是什么?

还有啊,老铁你这个;分号结束了能否另起一行啊,你这个格式写的看的有点别扭
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-17 05:04:58 From FishC Mobile | 显示全部楼层
Max472 发表于 2021-8-16 23:00
不用加。
这没有什么严谨不严谨,对了就是对了,错了就是错了
你前边已经把通过两个 if ,把三个数都进 ...

谢谢啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-17 08:37:08 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-18 16:33:32 | 显示全部楼层
本帖最后由 番杰 于 2021-8-18 16:36 编辑

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

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

而在这个地方,你想要的目的应该是:想把n1的值赋值给max,
所以,这个地方应该用 “=” 而不是 “==”。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 14:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表