计算机等级考试二级C语言内部教材
/**********found**********/
return __2__(x); f1 else
/**********found**********/
return __3__(x, y); f2 } main()
{ double x1=5, x2=3, r; r = fun(1, x1, x2); r += fun(2, x1, x2);
printf(\}
解题思路:
本题是根据给定的公式来计算函数的值。
第一处:程序中使用双精度double类型进行计算,所以函数的返回值类型也为double,所以应填:double。 第二处:当i等于1时,则返回f1函数的值,所以应填:f1。 第三处:如果i不等于1,则返回f2函数的值,所以应填:f2。
第07套
程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的信息。函数fun的功能是输出这位学生的信息。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! 给定源程序: #include
struct { int year,month,day ;} birthday; float score[3]; }STU;
/**********found**********/
void show(STU ___1___) tt { int i;
printf(\tt.birthday.year, tt.birthday.month, tt.birthday.day); for(i=0; i<3; i++)
/**********found**********/
printf(\printf(\} main( )
{ STU std={ 1,\
6
计算机等级考试二级C语言内部教材
printf(\/**********found**********/
show(___3___); std }
解题思路:
本题是利用结构体变量存储了一名学生的信息。
第一处:tt变量在函数体fun已经使用,所以应填:tt。
第二处:利用循环分别输出学生的成绩数据,所以应填:tt.score[i]。 第三处:函数的调用,所以应填:std。
第08套
给定程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的学号、姓名和3门课的成绩。函数fun的功能是将该学生的各科成绩都乘以一个系数a。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! 给定源程序: #include
void show(STU tt) { int i;
printf(\for(i=0; i<3; i++)
printf(\printf(\}
/**********found**********/
void modify(___1___ *ss,float a) STU { int i;
for(i=0; i<3; i++)
/**********found**********/
ss->___2___ *=a; score[i] } main( )
{ STU std={ 1,\float a;
printf(\show(std);
printf(\/**********found**********/
modify(___3___,a); &std printf(\
7
计算机等级考试二级C语言内部教材
show(std); }
解题思路:
本题是利用结构体存储学生记录并由实参ss返回。 第一处:实参ss是一个结构型指针变量,所以应填:STU。
第二处:该学生的各科成绩都乘以一个系数a,所以应填:score[i]。
第三处:函数的调用,由于函数定义时使用的指针结构型变量,所以应填:&std。
第09套
给定程序中,函数fun的功能是将不带头节点的单向链表结点数据域中的数据从小到大排序。即若原链表结点数据域从头至尾的数据为:10、4、2、8、6,排序后链表结点数据域从头至尾的数据为:2、4、6、8、10。 请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! 给定源程序: #include
typedef struct node { int data;
struct node *next; } NODE;
void fun(NODE *h) { NODE *p, *q; int t; p = h; while (p) {
/**********found**********/
q = __1__ ; p->next /**********found**********/
while (__2__) q { if (p->data > q->data)
{ t = p->data; p->data = q->data; q->data = t; } q = q->next; }
/**********found**********/
p = __3__ ; p->next } }
NODE *creatlist(int a[]) { NODE *h,*p,*q; int i; h=NULL;
for(i=0; i { q=(NODE *)malloc(sizeof(NODE)); q->data=a[i]; q->next = NULL; if (h == NULL) h = p = q; 8 计算机等级考试二级C语言内部教材 else { p->next = q; p = q; } } return h; } void outlist(NODE *h) { NODE *p; p=h; if (p==NULL) printf(\else { printf(\do { printf(\while(p!=NULL); printf(\} } main() { NODE *head; int a[N]= {0, 10, 4, 2, 8, 6 }; head=creatlist(a); printf(\outlist(head); fun(head); printf(\outlist(head); } 解题思路: 本题是考察使用链表方法,使用两重while循环语句,对链表的结点数据进行升序排列。 第一处:由于外循环变量使用p指针,内循环变量使用q指针,所以q指向必须指向p的next指针,因此应填写:p->next。 第二处:判断内循环q指针是否结束,所以应填:q。 第三处:外循环控制变量p指向自己的next指针,所以应填:p->next。 第10套 给定程序中,函数fun的功能是:判定形参a所指的N×N(规定N为奇数)的矩阵是否是\幻方\,若是,函数返回值为1; 不是,函数返回值为0。\幻方\的判定条件是:矩阵每行、每列、主对角线及反对角线上元素之和都相等。 例如,以下3×3的矩阵就是一个\幻方\: 4 9 2 3 5 7 8 1 6 请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! 给定源程序: #include 9 计算机等级考试二级C语言内部教材 #define N 3 int fun(int (*a)[N]) { int i,j,m1,m2,row,colum; m1=m2=0; for(i=0; i { j=N-i-1; m1+=a[i][i]; m2+=a[i][j]; } if(m1!=m2) return 0; for(i=0; i row=colum= __1__; 0 for(j=0; j { row+=a[i][j]; colum+=a[j][i]; } /**********found**********/ if( (row!=colum) __2__ (row!=m1) ) return 0; || } /**********found**********/ return __3__; 1 } main() { int x[N][N],i,j; printf(\for(i=0; i for(j=0; j { for(j=0; j if(fun(x)) printf(\else printf(\} 解题思路: 第一处:行列变量row和colum的值初始化为0。 第二处:两个条件只要有一个不满足就返回0,所以应填:||。 第三处:如果矩阵是“幻方”,则返回1。 第11套 给定程序中,函数fun的功能是将带头结点的单向链表逆置。即若原链表中从头至尾结点数据域依次为:2、4、6、8、10,逆置后,从头至尾结点数据域依次为: 10、8、6、4、2。 请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! 给定源程序: #include 10