该问题是比较三个整数大小,当我输入三个正整数或者两个正整数一个负数时都没问题,但是当有两个负数一个正数时,就会输出两次正数,这是为啥啊?
#include
int main(){
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
if(a>b){
if(c>a){printf("%d",c);
}if(cprintf("%d",a);
}if(a>c>b){printf("%d",a);
}
}if(b>a){
if(c>b){printf("%d",c);
}if(cprintf("%d",b);
}if(b>c>a){printf("%d",b);
}
}
return 0;
}
#include <stdio.h>
int main() {
int a, b, c;
scanf("%d %d %d", &a, &b, &c);
if (a > b) {
if (c > a) {
printf("%d", c);
}
if (c < b) {
printf("%d", a);
}
if (a > c && c > b) {
printf("%d", a);
}
}
if (b > a) {
if (c > b) {
printf("%d", c);
}
if (c < a) {
printf("%d", b);
}
if (b > c && c > a) {
printf("%d", b);
}
}
return 0;
}
运行结果:
因为if(a>c>b){printf("%d",a); 和if(b>c>a){printf("%d",b); 这两句代码有逻辑错误,你前面两句代码第一句要表达的意思应该是a>c并且c大于b,第二句的意思应该是b>c并且c大于a,C语言里面要表达这个意思需要用到&& 这个操作符,如果是你那个的那样会先比较第一个数和第二个数,然后拿他们比较的结果的真假值(0或1)再和第三个数比较,结果显而易见是不对的。所以需要修改这两句代码,修改如下:
#include<stdio.h>
int main(){
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
if(a>b){
if(c>a){printf("%d",c);
}if(c<b){printf("%d",a);
}if(a>c&&c>b){printf("%d",a);
}
}if(b>a){
if(c>b){printf("%d",c);
}if(c<a){printf("%d",b);
}if(b>c&&c>a){printf("%d",b);
}
}
return 0;
}
代码逻辑有问题,就拿a>b来说c<b和a>c>b都表示a为最大值,重复了自然会输出两次,使用if else链接判断语句
c语言能这么写吗??还有我不太明白只是要判断最大值而已,你为什么要写这么复杂?
#include<stdio.h>
int main(){
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
if(a>b)
{
if(c>a)
{
printf("%d",c);
}
if(c<b)
{
printf("%d",a);
}
if(a>c && c > b)
{
printf("%d",a);
}
}
if(b>a)
{
if(c>b)
{
printf("%d",c);
}
if(c<a)
{
printf("%d",b);
}
if(b>c && c > a)
{
printf("%d",b);
}
}
return 0;
}