国家二级C语言机试(操作题)模拟试卷584
程序填空题
1.给定程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的学号、姓名和3门课的成绩。函数fun的功能是将该学生的各科成绩都乘以一个系数a。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
typedef struct
{ int=num;
char Flame[9];
float score[3];
}STU;
void show(STU tt)
{ int i;
printf(\\
(1)STU
(2)score[i]
(3)&std
解析:本题考查:数组变量赋值;函数实参定义。
本题是利用结构体存储学生记录,对记录进行修改并由实参ss返回。
填空1:实参ss是一个结构型指针变量,所以应填STIJ。
填空2:该学生的各科成绩都乘以一个系数a,所以应填score[i]。
填空3:函数的调用,由于函数定义时使用的指针结构型变量,所以应填&std。
程序修改题
2.下列给定程序中,函数fun的功能是:求k!(k<13),所求阶乘的值作为函数值返回。例如,若k=10,则应输出3628800。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<conio.h>
#include<stdio.h>
long fun(int k)
{
/*********found*********/
if k>1
return(k,lc fun(k一1));
return 1;
}
main()
{
int k=10;
printf(\\
if(k>1)
解析:本题考查:if语句,考生需要根据题意来确定if语句是否是正确的,if条件语句经常考,考生需掌握。
语法错误,if条件表达式应写在小括号内。
程序设计题
3.程序定义了N X N的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][N],intn),该函数的功能是:使数组左下半三角元素中的值乘以n。例如,若n的值为3,a数组中的值为:
则返回主程序后a数组中的值应为:
void fun(int a[][N],int n)
{
int i,j;
for(i:0;i<N;i++)
for(j=0;j<=i;j++)
/*矩形的下三角时,积相乘*/
a[i][j]=a[i][j]*n;
}
解析:本题的fun的功能是使数组的左下半三角元素中的值乘以n,因此本题需要使用双重for循环,for循环需要注意的是:
(1)循环初值,根据题意要求控制循环变量的取值范围;
(2)循环条件,确定循环结束的条件,即当不满足条件时,结束循环。
首先从数组中找出要被乘以n的那部分元素,这一过程其实就是找出将被挑出的元素在原数组中的分布规律的过程。通过观察得出,要被处理的元素下标值的范围是每行中从第一个元素开始,直到列数等于该行行数时为止。找到这个规律后,依次从数组中取得符合要求的元素,然后乘以n。
本文档预览:3600字符,共2069字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载