鱼C论坛

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

关于比大小的问题

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

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


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 | 显示全部楼层

  1. #include <stdio.h>

  2. void main()
  3. {
  4.         int a=1,b=2,c=4;  
  5.         if(a>b)
  6.         {
  7.                 if(a>c)
  8.                 {
  9.                         if(b>c)        printf("a>b>c\n");
  10.                         else        printf("a>c>b\n");
  11.                 }
  12.          }
  13.         if(b>a)
  14.         {
  15.                 if(b>c)
  16.                 {
  17.                         if(a>c)        printf("b>a>c\n");
  18.                         else printf("b>c>a\n");
  19.                 }
  20.     }
  21.         if(c>b)
  22.         {
  23.                 if        (c>a)
  24.                 {
  25.                         if(a>b)  printf("c>a>b\n");
  26.                         else printf("c>b>a\n");
  27.                  }
  28.     }
  29.         system("pause");
  30. }
复制代码
这样写
想知道小甲鱼最近在做啥?请访问 -> 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
这样想必你已经明白为什么会没有输出



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

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

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

  12.         while(mid==max || mid==min)    //此循环把mid变为与‘max’&‘min’不同的变量名
  13.         {
  14.                 mid++;
  15.         }
  16.         printf("%c>%c>%c\n",max, mid, min);                //输出
  17. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> 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-5-19 13:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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