鱼C论坛

 找回密码
 立即注册
查看: 2271|回复: 9

关于比大小的问题

[复制链接]
发表于 2014-2-25 22:27:24 | 显示全部楼层 |阅读模式
5鱼币
本帖最后由 Dadi 于 2014-2-25 22:32 编辑
#include <stdio.h>

void main()
{
int a=1,b=3,c=4;        
if(a>b){if(a>c){if(b>c){printf("a>b>c");else printf("a>c>b");}}}
else if(b>a){if(b>c){if(a>c){printf("b>a>c");else {printf("b>c>a");}}}}
else if(c>b){if(c>a){if(a>b){printf("c>a>b");else {printf("c>b>a");}}}}
        
}
可恶啊符合逻辑但是却执行不了,要怎么样才能执行呢?这个问题是小甲鱼的题目啊,做不过这个题目我就不往下看了!


a>b>c   a>c>b
b>a>c   b>c>a
c>a>b   c>b>a
最多就是六个结果

最佳答案

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

使用道具 举报

发表于 2014-2-25 22:27:25 | 显示全部楼层
#include <stdio.h>

void main()
{
        int a=1,b=2,c=4;  
        if(a>b)
        {
                if(a>c) 
                {
                        if(b>c)        printf("a>b>c\n");
                        else        printf("a>c>b\n");
                }
         }
        if(b>a)
        {
                if(b>c)
                {
                        if(a>c)        printf("b>a>c\n");
                        else printf("b>c>a\n");
                }
    }
        if(c>b)
        {
                if        (c>a)
                {
                        if(a>b)  printf("c>a>b\n");
                        else printf("c>b>a\n");
                 }
    }
        system("pause");
}
这样写
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-2-25 23:02:18 | 显示全部楼层
因为只有6个输出语句啊。。。。。。这个段代码,跟平台没有关系,建议使用Windows 下的Visual Studio编辑(带有自动对齐功能的代码编辑器都可以),你会发现你的代码……比如相等的情况???
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-2-25 23:31:20 | 显示全部楼层
本帖最后由 lies_for_L 于 2014-2-25 23:35 编辑

首先这代码复制的很。。。。。。。
再来说一下你的逻辑有很大的错误
一个是else printf 的位置
第二个是根据你写的程序,我看了下,运行过程是这样的
->if(a>b)
->else if(b>a)
->if(b>c)
->else if(c>b)
->over
这样想必你已经明白为什么会没有输出



好了,关于这道题目个人认为应该是这样做
#include <stdio.h>

void main()
{
        int a=1,b=3,c=4;
        char max, mid='a', min, temp, temp_name;

        temp=(a>b)? a:b;
        temp_name=(a>b)? 'a':'b';
        max=(temp>c)?temp_name:'c';    //这三步求出了最大的那个值的变量名
        temp=(a<b)? a:b;
        temp_name=(a<b)? 'a':'b';
        min=(temp<c)?temp_name:'c';     //这三步求出了最小的那个值的变量名

        while(mid==max || mid==min)    //此循环把mid变为与‘max’&‘min’不同的变量名
        {
                mid++;
        }
        printf("%c>%c>%c\n",max, mid, min);                //输出
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-2-26 17:39:57 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-2-26 17:42:19 | 显示全部楼层
lies_for_L 发表于 2014-2-25 23:31
首先这代码复制的很。。。。。。。
再来说一下你的逻辑有很大的错误
一个是else printf 的位置

:big虽然一些没学过看不懂,但是也是一种思路,haha
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-2-26 18:12:32 | 显示全部楼层
Dadi 发表于 2014-2-26 17:39
下面的system("pause")是什么意思?终于解决了我的问题哈哈

system 是模拟dos的命令,pause是dos的暂停,如果不加这个,程序直接return了,效果就是控制台窗口一闪即逝,看不到结果,vc6 debug可能会自动暂停,其他vs不一样,要加这个才能看结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-2-27 01:40:00 | 显示全部楼层

应包含#include<stdlib.h>这个头文件
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-2-27 01:43:33 | 显示全部楼层
Dadi 发表于 2014-2-26 17:39
下面的system("pause")是什么意思?终于解决了我的问题哈哈

  system("pause");是让系统等待;头文件为#include<stdlib.h>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-2-27 03:11:12 | 显示全部楼层
Simanzen 发表于 2014-2-27 01:40
应包含#include这个头文件

确实粘贴的时候忘了说明应该包含这个,而且用system不一定非要stdlib,#include <iostream>也一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 19:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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