C语言三个数输出最大值,求助
#include<stdio.h>int main()
{
int max(int a,int b,int c);
int a,b,c,x;
scanf("%d %d %d",&a,&b,&c);
x=max(a,b,c);
printf("max=%d\n",x);
return 0;
}
代码如上,编译错误,帮忙看看! 你只声明了函数原型max,但是还没定义啊
#include <stdio.h>
int main()
{
int max(int a, int b, int c);
int a, b, c, x;
scanf("%d %d %d", &a, &b, &c);
x = max(a, b, c);
printf("max=%d\n", x);
return 0;
}
int max(int a, int b, int c)
{
int tmp = a;
if (b > tmp)
tmp = b;
if (c > tmp)
tmp = c;
return tmp;
}
我就喜欢回答这样的问题,你的int max(inta, int b ,int c)函数体去哪了? 本帖最后由 傻眼貓咪 于 2021-10-16 11:53 编辑
我的代码供参考{:5_109:} {:5_106:} #include <stdio.h>
int max(int a, int b, int c){ return (a > b && a > c ? a : b > c ? b : c)};
int main(){
int a, b, c;
scanf("%d %d %d", &a, &b, &c);
printf("max = %d\n", max(a, b, c));
return 0;
} 傻眼貓咪 发表于 2021-10-16 08:40
我的代码供参考
此句用 gcc 10.2.0 编译出错
int max(int a, int b, int c) return (a > b && a > c ? a : b > c ? b : c);
具体信息为:
D:\00.Excise\C>g++ -o x x.c
x.c: In function 'int max(int, int, int)':
x.c:3:37: error: expected identifier before '(' token
3 | int max(int a, int b, int c) return (a > b && a > c ? a : b > c ? b : c)
;
| ^
x.c:3:30: error: named return values are no longer supported
3 | int max(int a, int b, int c) return (a > b && a > c ? a : b > c ? b : c)
;
| ^~~~~~
x.c:6:9: error: declaration of 'int a' shadows a parameter
6 | int a, b, c;
| ^
x.c:3:13: note: 'int a' previously declared here
3 | int max(int a, int b, int c) return (a > b && a > c ? a : b > c ? b : c)
;
| ~~~~^
x.c:6:12: error: declaration of 'int b' shadows a parameter
6 | int a, b, c;
| ^
x.c:3:20: note: 'int b' previously declared here
3 | int max(int a, int b, int c) return (a > b && a > c ? a : b > c ? b : c)
;
| ~~~~^
x.c:6:15: error: declaration of 'int c' shadows a parameter
6 | int a, b, c;
| ^
x.c:3:27: note: 'int c' previously declared here
3 | int max(int a, int b, int c) return (a > b && a > c ? a : b > c ? b : c)
;
| ~~~~^
D:\00.Excise\C>
必须改为
int max(int a, int b, int c) {return (a > b && a > c ? a : b > c ? b : c);} jackz007 发表于 2021-10-16 11:30
此句用 gcc 10.2.0 编译出错
具体信息为:
抱歉,已修改 桃花飞舞 发表于 2021-10-16 00:51
我就喜欢回答这样的问题,你的int max(inta, int b ,int c)函数体去哪了?
不好意思,函数体是什么? 傻眼貓咪 发表于 2021-10-16 08:40
我的代码供参考
请问能详细解释一下这句吗return (a > b && a > c ? a : b > c ? b : c),特别是“?”和“:”,感谢! 宫宸 发表于 2021-10-16 18:31
请问能详细解释一下这句吗return (a > b && a > c ? a : b > c ? b : c),特别是“?”和“:”,感谢!
? : 类似 if else 语句
范例 1: if (条件){
return a
}
else{
return b
}如同return 条件 ? a : b
范例 2: if (条件 A){
return a
}
else if (条件 B){
return b
}
else{
return c
}如同return 条件 A ? a : 条件 B ? b : c 宫宸 发表于 2021-10-16 18:28
不好意思,函数体是什么?
你这里声明了int max(int a, int b,int c);
函数体就是int max(int x, int b,int c)的定义,
就像下来这样的
int max(int a, int b, int c)
{
int temp;
if(a>b)
{
tmp = a;
}
else
{
tmp = b;
}
if(tmp < c)
{
tmp = c;
}
return temp;
}
页:
[1]