鱼C论坛

 找回密码
 立即注册
查看: 1849|回复: 10

c语言的一个小问题

[复制链接]
发表于 2013-7-21 14:29:01 | 显示全部楼层 |阅读模式
1鱼币
#include<stdio.h>
void main()
{
int a,b,c,max,min;
printf("输入三个数字:\n");
scanf("%d %d %d",&a,&b,&c);
if(a>b)
{
        max=a;
        min=b;
}
else
{
        max=b;
        min=a;
}
if(max<c)
        max=c;

else
if(min>c);

        min=c;

printf("最大的数为:%d,最小的数为:%d\n",max,min);
}
这个程序运行出来输入3 4 5三个数,怎么会出来最大数为5,最小数为5啊,我按照培训视频输入的啊,怎么视频里面没错,我这个就有错啊,哪里出错误了啊!



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

使用道具 举报

发表于 2013-7-21 14:54:23 | 显示全部楼层
本帖最后由 565123 于 2013-7-21 14:56 编辑

if(min>c)//这里不用分号,如果有分号的话,那个if语句就没用了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-7-21 15:26:13 | 显示全部楼层
if(min>c);
如ls所说,当lz在if语句后面加;时,这个if语句就是一个空语句,后面的语句就都会执行,也就是说
 min=c;
一定会执行,所以lz的代码min一定为c的值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-7-21 15:40:34 | 显示全部楼层
怎么会有这种算法?
a>b?a:b;
用这种多好!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-7-21 15:44:32 | 显示全部楼层
if(max<c)
        max=c;

else
if(min>c);

        min=c;

最后这个如果语句句有了分号,就算一句了。下面的min=c;不论如何都会执行!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-7-22 11:19:06 | 显示全部楼层
#include<stdio.h>
void main()
{
int a,b,c,max,min;
printf("输入三个数字:\n");
scanf("%d %d %d",&a,&b,&c);
if(a>b)
{
        max=a;
        min=b;
                if(max<c)
        max=c;
        if(min>c)
        min=c;
}
else
{
        max=b;
        min=a;
                if(max<c)
        max=c;
        if(min>c)
        min=c;
}


printf("最大的数为:%d,最小的数为:%d\n",max,min);
}

本人已测,绝对成功。

稍后作详细解释
建议楼主用vc尝试以下程序,发现打印不出max,min,说明printf语句之前已经有问题。
#include<stdio.h>
void main()
{
int a,b,max,min;
printf("输入两个数字:\n");
scanf("%d %d ",&a,&b);
if(a>b)
{
        max=a;
        min=b;
                /*if(max<c)
        max=c;
        if(min>c)
        min=c;*/
}
else
{
        max=b;
        min=a;
                /*if(max<c)
        max=c;
        if(min>c)
        min=c;*/
}


printf("最大的数为:%d,最小的数为:%d\n",max,min);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-7-26 11:07:26 | 显示全部楼层
说实在的,你本身代码就有问题,在判断完max < c 后就else if 判断min > c。请问这两者之间有关系吗?建议还是一步一步来比较好,运行无误才是初学的标准
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-27 07:46:48 | 显示全部楼层
新人,路过学习一下{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-27 13:39:48 | 显示全部楼层
if(min>c);

        min=c;
相当于
if(min>c)
        ;
        min=c;
这样if只能控制中间那个空语句,min=c;这条语句就一定会执行,所以最小值始终等于c。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-23 10:15:14 | 显示全部楼层
{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-23 11:05:46 | 显示全部楼层
运行了一下没问题,楼主的这句if(min>c);的分号的问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-26 08:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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