鱼C论坛

 找回密码
 立即注册
查看: 5715|回复: 26

关于if语句

[复制链接]
发表于 2013-9-25 23:00:09 | 显示全部楼层 |阅读模式
1鱼币
#include <stdio.h>
main()
{
int max(int x,int y,int k);
int a , b , c,d;
printf("请输入整数 a,b,c\n");
scanf("%d, %d, %d", &a ,&b,&c );
d=max(a,b,c);
printf("max=%d\n",d);
return 0;
}
int max(int x, int y,int k)
{
int max=x;
if (max<y)
  max=y;
    if (max<k)
  max=k;
    return(max);
}
这个程序为什么不能这样写
#include <stdio.h>
main()
{
int max(int x,int y,int k);
int a , b , c,d;
printf("请输入整数 a,b,c\n");
scanf("%d, %d, %d", &a ,&b,&c );
d=max(a,b,c);
printf("max=%d\n",d);
return 0;
}
int max(int x, int y,int k)
{
int max=x;
if (max<y)
  max=y;
    else if (max<k)
  max=k;
else max=x;
    return(max);
}
结果就不对了



最佳答案

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-25 23:00:10 | 显示全部楼层
if (max<y)
  max=y;
if (max<k)
  max=k;
return(max);
上面是两个if语句执行完第一个也就是得出x,y之间的大者,再执行第二if,他们是相互独立的

if (max<y)
  max=y;
else if (max<k)
  max=k;
else max=x;
return(max);
上面这个却是一个if语句他们是一个整体,只执行if或者else if或else,如果max<y,那么上面的语句会和K比较吗!显然不会!如果想用if。。。else
if (max < y)
        if(y < k)
                  max=k;
        else
                max=y;
else
        if(max < k)
                max = k;
return(max);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-25 23:10:05 | 显示全部楼层
肯定不对啊,你这样就只能比较一次,如果前面有一个条件满足了,后面的就不会执行了,当然会错了,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-9-25 23:35:21 | 显示全部楼层

都是if 就会一直比较下去么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-26 08:56:50 | 显示全部楼层
路过,学习一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-26 11:52:03 | 显示全部楼层
max不是你定义的函数名吗?貌似不能赋值的吧,max好像是函数地址,你赋值就把地址给赋掉了。建议再定义个变量来代替他。哥们,你可能理解错了,函数的返回值是整形,不代表max就是整形啊,max只是一个用来调用的函数名。我也是新手,也许我理解有问题,回答错了勿喷哦。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-26 12:00:15 | 显示全部楼层
落。尘 发表于 2013-9-26 11:52
max不是你定义的函数名吗?貌似不能赋值的吧,max好像是函数地址,你赋值就把地址给赋掉了。建议再定义个变 ...

我错了,不好意思。。。。恶补基础知识去了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-26 13:01:21 | 显示全部楼层
残II 发表于 2013-9-25 23:35
都是if 就会一直比较下去么?

恩,if和if之间是并列的关系,是独立的,if和else这种类型是一个整体,程序只能执行其中的一部分
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-26 13:18:02 | 显示全部楼层
你要实现3个数中的最大值,但是你的max函数中所实现的功能在x<y的情况下,只实现了两个数的比较,没有达到所要实现的功能。if...else中的else是和它最近的if相连的。认真理解代码的功能,祝你成功!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-26 15:51:53 | 显示全部楼层

学习,支持一下!加油
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-9-26 20:12:03 | 显示全部楼层
落。尘 发表于 2013-9-26 12:00
我错了,不好意思。。。。恶补基础知识去了

是的  你的确错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-26 21:39:02 | 显示全部楼层
多个分支应该这么用,else if可以重复无限次
if (a==1)
{

}
else if ( a == 2)
{

}
else
{

}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-9-26 22:23:07 | 显示全部楼层
Skyline 发表于 2013-9-26 13:18
你要实现3个数中的最大值,但是你的max函数中所实现的功能在x

嗯,         谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-9-26 22:24:20 | 显示全部楼层
拽拽、圈圈 发表于 2013-9-26 13:01
恩,if和if之间是并列的关系,是独立的,if和else这种类型是一个整体,程序只能执行其中的一部分

哦                                      

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

使用道具 举报

 楼主| 发表于 2013-9-26 22:31:43 | 显示全部楼层

嗯,知道了                 
谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-9-26 23:34:42 | 显示全部楼层


int max(int x, int y,int k,int l)
{
        int max=x;
        if (max<y)
                if(y<k)
                        if(k<l)
                                max=l;
                        
                        else
                                max=k;
                else
                        if(y<l)
                                max=l;
                        else
                                max=y;
        else
                if(max<k)
                        if(k<l)
                                max=l;
                        else
                                max=k;
        else
                if(max<l)
                        max=l;
                else
                        max=x;
    return(max);
}
比较4个值的大小,这样怎么又不行了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-27 09:16:16 | 显示全部楼层
加油。加油。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-27 16:40:06 | 显示全部楼层
残II 发表于 2013-9-26 20:12
是的  你的确错了

嘘。。低调,丢人的。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-9-27 20:40:20 | 显示全部楼层
落。尘 发表于 2013-9-27 16:40
嘘。。低调,丢人的。。。

你C语言学到哪里了?   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-27 22:28:24 | 显示全部楼层
残II 发表于 2013-9-27 20:40
你C语言学到哪里了?

我原来学过C++,所以C是跳着学的。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 19:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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