刚看自学视频一天,求助个问题
题目是:选出三个整数中的最大数。#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;这段加不加有区别吗 有,区别就是判断2和3谁大 不能懒 发表于 2021-8-16 22:41
有,区别就是判断2和3谁大
就是如果不加这段显得不够严谨是吗 福建李逵 发表于 2021-8-16 22:56
就是如果不加这段显得不够严谨是吗
不用加。
这没有什么严谨不严谨,对了就是对了,错了就是错了
你前边已经把通过两个 if ,把三个数都进行了比较大小,最大的已经选出来了,还比什么? 你的编译器什么提示也没有?换一个好一点的吧
$ 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-16 23:13
你的编译器什么提示也没有?换一个好一点的吧
{:10_258:}裁剪的啊{:10_247:} 没区别,如果前一步已经比较出了大小,并且已经赋值给了max,那右面再比一次的意义是什么?
还有啊,老铁你这个;分号结束了能否另起一行啊,你这个格式写的看的有点别扭 Max472 发表于 2021-8-16 23:00
不用加。
这没有什么严谨不严谨,对了就是对了,错了就是错了
你前边已经把通过两个 if ,把三个数都进 ...
谢谢啦 福建李逵 发表于 2021-8-17 00:08
裁剪的啊
? 本帖最后由 番杰 于 2021-8-18 16:36 编辑
如果只是单纯地判断出最大的数
if(n2>n3);max=n2;这条语句可以去掉,意义不是很大,
但是,程序里最大的问题是(max==n1);这句
你不能这么写,==双等号是判断左右两端的值是否相等,
相等:这个语句为逻辑真(即为1)
不相等:这个语句为逻辑假(即为0)
而在这个地方,你想要的目的应该是:想把n1的值赋值给max,
所以,这个地方应该用 “=” 而不是 “==”。
页:
[1]