西安交大计算机考研软件工程编程题库(一)
- 鄙人今年备考,主要目的在于记录学习历程,望道友们勿喷~
- 希望能做到每日一题~
- 开始炼丹~
下篇链接:西安交大计算机考研软件工程编程题库(二)
一、题目
有三个数据abc,它们由键盘输入,编写程序将他们按从大到小排序。
二、解答
1.分析
强行分析一波,我的第一想法是将数据输入到数组中,然后写一个冒泡升序排序,实现一下。 (Ps:不出意外鄙人的此系列文章都会用C实现,其他语言的道友见谅~)。
2.代码实现
代码如下:
#include<stdio.h>
int main(){
int i = 0, j = 0;
float temp[4]={0, 0, 0, 0};
printf("请输入3个数:\n");
for(i = 1; i < 4; i++){
scanf("%f", &temp[i]);
printf("%f\n", temp[i]);
}
for(i = 1; i < 3; i++){
for(j = i+1; j < 4; j++){
if(temp[i] > temp[j]){
temp[0] = temp[j];
temp[j] = temp[i];
temp[i] = temp[0];
}
}
}
printf("三个数由小到大是:%f,%f,%f", temp[1], temp[2], temp[3]);
return 0;
}
总结
这道题思路相对简单,主要考察“标准输入输出”和“数据升序排序”,鄙人依据自己最上手的冒泡排序为例写了该题,实际上排序的方式有很多,参考答案中提供了最基础的“用if判断不断比较三个数的大小”的方式,个人感觉较为麻烦,考试手写不太划算。应试还是需要注意时间的掌控,对于基础的排序算法应该能够有几个可以做到较为熟练的掌握。
Ps: 提供另一种想法,用一个链表存入三个数据,写一个选取链表最小值的函数,调用三次,每次调用后输出并删除最小值数据。如果数据量大的话,该算法的时间复杂度为O(n),比上面O(n2)要好,但是实际考试不好写。
|