1、国家二级 C语言机试(操作题)模拟试卷 296及答案解析(总分:6.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:2.00)1.给定程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的学号、姓名和 3门课的成绩。函数 fun的功能是将该学生的各科成绩都乘以一个系数 a。 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构! 试题程序: #includestdioh typedef struct int num; char name9; float score3;STU; void sho
2、w(STU tt) int i ; printf(“ds:“,ttnum,ttname); for(i=0;i3;i+) printf(“5lf“,ttscorei); printf(“n“); *found* void modify( 【1】 *ss,float a) int i; for(i=0;i3;i+) *found* ss 【2】 *=a; main() STU std=(1,“Zhanghua“,765,780,820; float a; printf(“nThe original numbet and name and scores:n“); show(std); printf
3、(“nTnput a number:“); scanf(“f“,a); *found* modify( 【3】 ,a); printf(“nA result of modifying:n“); show(std); (分数:2.00)_二、程序修改题(总题数:1,分数:2.00)2.下列给定程序中,函数 fun的功能是:实现两个整数的交换。例如,给 a和 b分别输入 60和 65,输出为:a=65 b=60。请改正程序中的错误,使它能得出正确的结果。注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构。试题程序:#includestdioh#includeconioh#inclu
4、destdlibh*found*void fun(int a,b) int t;*found* t=b;b=a;a=t ;void main() int a,b; system(“CLS“); printf(“Enter a,b:“); scanf(“dd“,a,b); fun(a,b); printf(“a=d b=dn“,a,b);(分数:2.00)_三、程序设计题(总题数:1,分数:2.00)3.编写函数 fun,其功能是:将两个两位数的正整数 a、b 合并成一个整数放在 c中。合并的方式是:将a数的十位和个位数依次放在 e数的个位和百位上,b 数的十位和个位数依次放在 c数的十位和千位
5、上。例如,当 a=45,b=12 时,调用该函数后 c=2514。注意:部分源程序给出如下。请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。试题程序:#includeconioh#includestdiohvoid fun(int a,int b,long*c)main() int a,b; long c; printf(“Input a,b:“); scanf(“dd“,a,b); fun(a,b,c); printf(The result is:ldn“,C);(分数:2.00)_国家二级 C语言机试(操作题)模拟试卷 296答案解析(总分:
6、6.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:2.00)1.给定程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的学号、姓名和 3门课的成绩。函数 fun的功能是将该学生的各科成绩都乘以一个系数 a。 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构! 试题程序: #includestdioh typedef struct int num; char name9; float score3;STU; void show(STU tt) int i ; printf(“ds:“,t
7、tnum,ttname); for(i=0;i3;i+) printf(“5lf“,ttscorei); printf(“n“); *found* void modify( 【1】 *ss,float a) int i; for(i=0;i3;i+) *found* ss 【2】 *=a; main() STU std=(1,“Zhanghua“,765,780,820; float a; printf(“nThe original numbet and name and scores:n“); show(std); printf(“nTnput a number:“); scanf(“f“,
8、a); *found* modify( 【3】 ,a); printf(“nA result of modifying:n“); show(std); (分数:2.00)_正确答案:(正确答案:(1)STU (2)scorei (3)&std)解析:解析:本题是利用结构体存储学生记录,对记录进行修改并由实参 ss返回。 填空 1:实参 ss是一个结构型指针变量,所以应填 STU。 填空 2:该学生的各科成绩都乘以一个系数 a,所以应填 scorei。填空 3:函数的调用,由于函数定义时使用的指针结构型变量,所以应填&std。二、程序修改题(总题数:1,分数:2.00)2.下列给定程序中,函数
9、fun的功能是:实现两个整数的交换。例如,给 a和 b分别输入 60和 65,输出为:a=65 b=60。请改正程序中的错误,使它能得出正确的结果。注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构。试题程序:#includestdioh#includeconioh#includestdlibh*found*void fun(int a,b) int t;*found* t=b;b=a;a=t ;void main() int a,b; system(“CLS“); printf(“Enter a,b:“); scanf(“dd“,a,b); fun(a,b); printf(
10、“a=d b=dn“,a,b);(分数:2.00)_正确答案:(正确答案:(1)void fun(int*a,int*b) (2)t=*b;*b=*a;*a=t;)解析:解析:(1)本题考查指针变量作函数参数。采用一般变量作参数,不能改变实参的值,采用指针变量作为参数则能够改变实参的值。主函数中 fun的调用方式说明 fun函数的参数应当为指针类型。 (2)此处错误比较明显,因为 a和 b都是指针变量,进行变量交换时不能直接引用,应加上“*”号。三、程序设计题(总题数:1,分数:2.00)3.编写函数 fun,其功能是:将两个两位数的正整数 a、b 合并成一个整数放在 c中。合并的方式是:将a
11、数的十位和个位数依次放在 e数的个位和百位上,b 数的十位和个位数依次放在 c数的十位和千位上。例如,当 a=45,b=12 时,调用该函数后 c=2514。注意:部分源程序给出如下。请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。试题程序:#includeconioh#includestdiohvoid fun(int a,int b,long*c)main() int a,b; long c; printf(“Input a,b:“); scanf(“dd“,a,b); fun(a,b,c); printf(The result is:ldn
12、“,C);(分数:2.00)_正确答案:(正确答案:Void fun(int a,int b,long*c) *b10 获取 b的个位,a10 获取 a的十位,a10 获取 a的个位,b10 获取 b的十位* *c=a10+(b10)*10+(a10)*100+(b10)*1000; )解析:解析:本题的主要问题是如何取出 a和 b的个位数和十位数,取出后如何表示成 c中相应的位数。由于 a和 b都是只有两位的整数,所以分别对它们除 lO可得到它们的十位数,分别用 10对它们求余可得到它们的个位数。得到后对应乘以 1000、100、10、1,就可得到 c的千位数、百位数、十位数和个位数。注意使用 c时要进行指针运算。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1