2009年上机考试第1套题
第1套第1题
题目描述:由1、2、3、4这4个数字,能组成多少个互不相同且无重复数字的三位数?分别是多少?
输出要求:
1)输出总个数。
2)每行输出4个数,数之间用制表符分隔。
程序运行效果如下: 满足条件的数有:
123 124 132 134 …...
总共有N个数
注意:N需替换为具体的值
第1套第2题
题目描述:求正整数的逆序数。
要求:
1)设计一个递归函数int reverse(int num),求正整数num的逆序数。如123的逆序数是321。
2)设计main函数,从键盘接收一个正整数,输出其逆序数。请写出完整C语言程序。假设:用户输入的肯定是正整数,程序不需要对异常输入进行处理。 3)给定函数length和power如下,分别用于求整数长度,以及x的y次方(如power(10,2)返回值为100),需要的话可以使用该函数: int length (int num)//求正整数num的长度 {
int len=0; while(num>0){ num/=10; len++; }
return len; }
int power(int num,int len) //求num的len次方 {
int n=1; if (len<0) return -1; while (len>0){ n*=num; len--; }
return n; }
程序运行效果如下: 1)请输入一个正整数: 5↙
逆序数是: 5
2)请输入一个正整数: 500↙
逆序数是: 005
3)请输入一个正整数: 12345↙ 逆序数是: 54321 说明:在第2种情况中,虽调用reverse函数得到的结果是5,但是需要输出之前的两个0。
第1套第3题
题目描述:从键盘输入5个学生的信息,包括:姓名、成绩。要求求出这5个学生的平均成绩,以及分数最高的学生名单和成绩(如果最高分有多个,只需要输出一个即可)。
要求:
1)定义一个结构,对应的结构变量可以保存一个学生的信息。姓名用长度为20的字符数组保存,成绩为浮点数。
2)这5个学生的信息用一个一维结构数组保存。
3)定义两个函数分别求平均成绩和分数最高的学生的数组下标编号。
程序运行效果如下:
请输入5个学生的姓名和成绩: Tom 72.5↙ Jerry 79↙ Philip 60↙ Marry 53.5↙ Robot 84.5↙
平均成绩为:69.9
分数最高的学生是:Robot,成绩为:84.5.
第1套第4题 题目描述:
从键盘输入偶数个正整数保存到链表中,以-1结束,形成先进先出的链表。 然后往该链表中插入n个结点,插入规律是: 在原来的第1、2个结点中新插入1个结点,结点数据域值为第1、2个结点数据域之和;…,在原来的第2i-1、2i个结点中插入第i个结点, 结点数据域值为原来的第2i-1、2i个结点数据域之和。
假设输入30 5 15 10 -1,则创建的链表如下
执行插入操作后,链表如下:
25
15
35
30
已提供函数: 1)main()函数 2)void destroyList(LISTNODEPTR headPtr),用于释放链表,链表头结点由headPtr指向。 3)void printList(LISTNODEPTR headPtr),用于打印链表,链表头结点由headPtr指向。 要求:
1)设计函数LISTNODEPTR createFIFOList();
用于从键盘输入若干正整数,以-1结束,保存到链表,形成先进先出的链表,返回指向链表头结点的指针。
2)设计函数void insertNodes(LISTNODEPTR headPtr) 实现结点的插入。
3)将上面两个函数定义补充到提供给大家的源文件 链表1-结点插入(结点1和2之间插入一个结点).c中,形成完整程序。
程序运行效果:
1)请输入偶数个正整数(整数之间用空格分隔),以-1结束: 10 15 5 30 -1↙ 链表是:
10--->15--->5--->30--->NULL 插入结点后,链表是:
10--->25--->15--->5--->35--->30--->NULL
2)请输入偶数个正整数(整数之间用空格分隔),以-1结束: 10 15 -1↙ 链表是:
10--->15--->NULL
插入结点后,链表是: 10--->25--->15--->NULL