首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C语言中,有没有办法比较九个不带数组的整数?

在C语言中,有没有办法比较九个不带数组的整数?
EN

Stack Overflow用户
提问于 2018-03-16 10:46:00
回答 1查看 55关注 0票数 0

最近,我不得不做一个编程项目,这个项目是制作一个课程注册系统。其中一条指令是按照升序对这9门课程进行编码。我已经将这些课程代码设置为整数,但我不知道如何在不使用数组的情况下实现它……有人能教我吗?非常感谢!我采用的变量名是code1、code2、code3、code4、code5、code6、code7、code8、code9……

EN

回答 1

Stack Overflow用户

发布于 2018-03-16 12:15:29

代码按升序排列。

但是我不知道不使用数组怎么做

不使用数组是一个糟糕的想法,但可能对学习有好处。

关键的想法是以某种方式将问题分解为更小的部分。

下面使用了一个递归解决方案,它可能会导致n*n的递归深度--不是很好。让OP去考虑一种更有效的方法,并将其扩展到9个变量。

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>

void swap(int *v1, int *v2) {
  int t = *v1;
  *v1 = *v2;
  *v2 = t;
}

void sort4(int *v1, int *v2, int *v3, int *v4) {
  if (*v1 > *v2) swap(v1,v2);
  else if (*v2 > *v3) swap(v2,v3);
  else if (*v3 > *v4) swap(v3,v4);
  else return;
  sort4(v1,v2,v3,v4);
  return;
}

int main(void) {
  for (int i=0; i< 10; i++) {
    int code1,code2,code3,code4;
    code1 = rand()%1000;
    code2 = rand()%1000;
    code3 = rand()%1000;
    code4 = rand()%1000;
    sort4(&code1, &code2, &code3, &code4);
    printf("%3d %3d %3d %3d\n", code1, code2, code3, code4);
  }
}

输出

代码语言:javascript
复制
262 529 743 933
256 508 700 752
119 256 351 711
108 393 705 843
169 330 366 932
847 868 917 972
223 549 592 980
164 169 427 551
190 624 635 920
310 484 862 944
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49312400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档