Dadi 发表于 2014-2-25 22:27:24

关于比大小的问题

本帖最后由 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
最多就是六个结果

machimilk 发表于 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");
}
这样写

苹果沃珂 发表于 2014-2-25 23:02:18

因为只有6个输出语句啊。。。。。。这个段代码,跟平台没有关系,建议使用Windows 下的Visual Studio编辑(带有自动对齐功能的代码编辑器都可以),你会发现你的代码……比如相等的情况???

lies_for_L 发表于 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);                //输出
}

Dadi 发表于 2014-2-26 17:39:57

machimilk 发表于 2014-2-25 23:21 static/image/common/back.gif
这样写

下面的system("pause")是什么意思?终于解决了我的问题哈哈

Dadi 发表于 2014-2-26 17:42:19

lies_for_L 发表于 2014-2-25 23:31 static/image/common/back.gif
首先这代码复制的很。。。。。。。
再来说一下你的逻辑有很大的错误
一个是else printf 的位置


:big虽然一些没学过看不懂,但是也是一种思路,haha

machimilk 发表于 2014-2-26 18:12:32

Dadi 发表于 2014-2-26 17:39 static/image/common/back.gif
下面的system("pause")是什么意思?终于解决了我的问题哈哈

system 是模拟dos的命令,pause是dos的暂停,如果不加这个,程序直接return了,效果就是控制台窗口一闪即逝,看不到结果,vc6 debug可能会自动暂停,其他vs不一样,要加这个才能看结果

Simanzen 发表于 2014-2-27 01:40:00

machimilk 发表于 2014-2-25 22:27 static/image/common/back.gif
这样写

应包含#include<stdlib.h>这个头文件

Simanzen 发表于 2014-2-27 01:43:33

Dadi 发表于 2014-2-26 17:39 static/image/common/back.gif
下面的system("pause")是什么意思?终于解决了我的问题哈哈

system("pause");是让系统等待;头文件为#include<stdlib.h>

machimilk 发表于 2014-2-27 03:11:12

Simanzen 发表于 2014-2-27 01:40 static/image/common/back.gif
应包含#include这个头文件

确实粘贴的时候忘了说明应该包含这个,而且用system不一定非要stdlib,#include <iostream>也一样
页: [1]
查看完整版本: 关于比大小的问题