黑马程序员技术交流社区

标题: C语言求助 怎样在比较变量值的大小后用变量名输出结果? [打印本页]

作者: 徐开伟    时间: 2014-6-3 12:56
标题: C语言求助 怎样在比较变量值的大小后用变量名输出结果?
本帖最后由 徐开伟 于 2014-6-6 08:32 编辑

比如 int a = 10;
       int b = 20;
       int c = 30;
怎样样通过一个函数实现输出 c > b >a , 即使值变成了a = 20; b = 10  ;c=5 也会相应的输出a>b>c, 而不是通过交换法输出30>20>10?
刚才忘了说了 是c语言哦

作者: 徐开伟    时间: 2014-6-3 13:17
大神块出现~~~{:3_50:}
作者: ゞ导火索゛    时间: 2014-6-3 13:33
本帖最后由 ゞ导火索゛ 于 2014-6-3 13:35 编辑
  1. import java.util.*;

  2. public class fawef {
  3.         public static void main(String[] args) {
  4.                
  5.                 int a = 9;
  6.                 int b = 10;
  7.                 int c = 7;
  8.                 Map<Character, Integer> map = new HashMap();
  9.                
  10.                 map.put('a', a);
  11.                 map.put('b', b);
  12.                 map.put('c', c);
  13.                 comp(map);
  14.         }
  15.         
  16.         public static void comp(Map<Character, Integer> map){
  17.                 int a = map.get('a');
  18.                 int b = map.get('b');
  19.                 int c = map.get('c');
  20.                
  21.                 String str = "";
  22.                
  23.                 ///a>b>c a>c>b b>a>c b>c>a c>a>b c>b>a
  24.                 if(a>b && a>c)
  25.                 {
  26.                         if(b>c)
  27.                                 str = "a>b>c";
  28.                         else
  29.                                 str = "a>c>b";
  30.                 }
  31.                 if(b>a && b>c)
  32.                 {
  33.                         if(a>c)
  34.                                 str = "b>a>c";
  35.                         else
  36.                                 str = "b>c>a";
  37.                 }
  38.                 if(c>a && c>b)
  39.                 {
  40.                         if(a>b)
  41.                                 str = "c>a>b";
  42.                         else
  43.                                 str = "c>b>a";
  44.                         
  45.                 }
  46.                
  47.                 System.out.println(str);        
  48.                
  49.         }
  50. }
复制代码


作者: 徐开伟    时间: 2014-6-3 13:38
ゞ导火索゛ 发表于 2014-6-3 13:33

多谢回答,,,不好意思啊 忘记说了是C语言的,,
作者: 夏沫的黄昏′    时间: 2014-6-3 21:01
随便写个排序就行了啊 只有三个数的 话 那更简单 了。。

int num[4],i,j;
num[0] = a;
num[1] = b;
num[2] = c;
for(i = 0; i < 3; i++)
for(j = i+1; j < 3; j++)
if(num[i] < num[j] )
{
  int temp = num[i];
num[i] = num[j];
num[j] = temp;
}

这是一个冒泡排序 你可以试一下  直接打上去的 我也没测 不过应该不会出错  大于号跟小于号互换就可以改变排序方式(大到小或者小到大)
作者: 徐开伟    时间: 2014-6-3 22:16
本帖最后由 徐开伟 于 2014-6-3 22:22 编辑
夏沫的黄昏′ 发表于 2014-6-3 21:01
随便写个排序就行了啊 只有三个数的 话 那更简单 了。。

int num[4],i,j;

冒泡不行的  比如 a = 30 b = 10 c= 20  冒泡只是输出成 (a=10) < (b=20)<(c=30)  我需要的是输出成
(b=10)<(a=20)<(c=30) 变量值和变量名保持配套不变  我知道可以用很笨的一个一个比较的方法输出成这样,但是一个一个比好麻烦,代码也不好看。 我想问下有没有一个简单点的方法
作者: 夏沫的黄昏′    时间: 2014-6-4 09:55
徐开伟 发表于 2014-6-3 22:16
冒泡不行的  比如 a = 30 b = 10 c= 20  冒泡只是输出成 (a=10) < (b=20)

也可以啊 定义一个结构体
struct D{
int num;
char c;
};
用结构体排序
作者: 徐开伟    时间: 2014-6-4 17:27
夏沫的黄昏′ 发表于 2014-6-4 09:55
也可以啊 定义一个结构体
struct D{
int num;

多谢 原来要用到结构体,我还没学到这个地方来{:3_59:}
作者: 黄莉萍    时间: 2014-6-5 23:01
看不懂好好研究下下。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2