最近,我不得不做一个编程项目,这个项目是制作一个课程注册系统。其中一条指令是按照升序对这9门课程进行编码。我已经将这些课程代码设置为整数,但我不知道如何在不使用数组的情况下实现它……有人能教我吗?非常感谢!我采用的变量名是code1、code2、code3、code4、code5、code6、code7、code8、code9……
发布于 2018-03-16 12:15:29
代码按升序排列。
但是我不知道不使用数组怎么做
不使用数组是一个糟糕的想法,但可能对学习有好处。
关键的想法是以某种方式将问题分解为更小的部分。
下面使用了一个递归解决方案,它可能会导致n*n的递归深度--不是很好。让OP去考虑一种更有效的方法,并将其扩展到9个变量。
#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);
}
}输出
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 944https://stackoverflow.com/questions/49312400
复制相似问题