65-68c语言试题
第65套
1.填空题
请补充函数fun(),该函数的功能是把数组aa中的奇数元素按原来的先后顺序放在原数组后面。
例如,输入"33,67,42,58,25,76,85,16,41,56",输出结果"42,58,76,16,56,33,67,25,85,41"。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。
试题程序:
#include
#define N 10
void fun(int aa[])
{
int i, j=0,k=0;
int bb[N];
for (i=0; i
{
if (【1】)
bb[k++]=aa[i];
else
aa[j++]=aa[i];
}
for(i=0; i
aa[j]=bb[i];
}
main()
{
int i;
int aa[N]={33,67,42,58,25,76,85,16,
41,56};
clrscr();
printf("\n*** original list ***\n");
for (i=0; i
printf("%4d", aa[i]);
fun(aa);
printf("\n*** new list ***\n");
for (i=0; i
printf("%4d", aa[i]);
}
【1】aa[i]%2!=0或aa[i]%2==1
【2】i++,j++
【解析】填空1:如果一个数对2求余,结果不为0,也就是等于1,则这个数为奇数,就把这个数先暂时存在数组bb中。否则这个数为偶数,就存在数组aa中。填空2:最后,将数组bb中的奇数都拷贝到数组aa中偶数的后面。每执行一次循环体,数组aa的下标j和数组bb的下标i都要加1。
2. 改错题
下列给定程序中,函数fun()的功能是:用递归算法计算斐波拉契级数列中第n项的值。从第一项起,斐波拉契级数序列为1,1,2,3,5,8,13,21,……例如,若给n输入7,该项的斐波拉契级数值为13。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
long fun(int g)
{
/**********************found***********************/
switch(g);
{case 0:return 0;
switch(g)
case 1; case 2:return 1;
}
return (fun(g-1)+fun(g-2));
}
main()
{
long fib; int n;
printf("Input n:");scanf("%d",&n);printf("n=%d\n",n);
fib=fun(n);
printf("fib=%d\n\n",fib);
}
(1)错误:switch(g);
正确:去掉分号
(2)错误: case 1;case 2: return 1;
正确:case 1:case2:return 1;
【解析】C语言中,Switch语句之后不能有分号,并且Case语句常量后应用的是冒号。
3. 编程题
学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),它的功能是:按分数的高低排列学生的记录,高分在前。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
#define N 16
typedef struct
{ char num[10];
int s ;
}STREC;
int fun (STREC a[])
{
}
main ()
{
STREC s[N]={{ "GA005",85},{"GA003",76},{"GA002",69},{"GA004",85},
{"GA001",91},{"GA007",72},{"GA008",64},{"GA006",87},
{"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},
{"GA011",66},{"GA017",64},{"GA018",64},{"GA016",72}};
int i;
FILE *out;