国家二级C语言机试(操作题)模拟试卷628
程序填空题
1.使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。在此程序中,函数fun的功能是进行数字字符转换。若形参ch中是数字字符‘0’~‘9’,则将‘0’转换成‘9’,‘1’转换成‘8’,‘2’转换成‘7’,…,‘9’转换成‘0’;若是其他字符则保持不变;并将转换后的结果作为函数值返回。
请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
/*********found*********/
【1】fun(char ch)
{
/*********found*********/
if(ch>=’0’&【2】)
/*********found*********/
return’9’(ch-【3】);
return ch;
}
main()
{char c1,c2;
printf(\\
(1)char
(2)ch<=’9’
(3)’0’
解析:填空1:函数定义时,类型标识符指明了函数的类型,函数的类型实际上是函数返回值的类型,所以此处应该填入chart。
填空2:通过if条件语句判断字符串中字符是否为数字字符,即大于等于字符‘0’,同时小于等于字符‘9’。
填空3:return语句完成函数返回操作,要实现字符转换,完整语句为:return’9’-(ch-’0’)。
程序修改题
2.使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数fun的功能是:实现两个整数的交换。例如,给a和b分别输入60和65,输出为:a=65 b=60。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
/*********found*********/
void fun(int a,b)
{
int t;
/*********found*********/
t=b;b=a;a=t;
}
void main()
{
int a,b;
system(\\
(1)void fun(int*a,int*b)
(2)t=*b;*b=*a;*a=t;
解析:(1)本题考查指针变量作函数参数。采用一般变量作参数,不能改变实参的值,采用指针变量作为参数则能够改变实参的值。主函数中fun的调用方式说明fun函数的参数应当为指针类型。
(2)此处错误比较明显,因为a和b都是指针变量,进行变量交换时不能直接引用,应加上“*”号。
程序设计题
3.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写函数fun,它的功能是计算下列级数和,和值由函数值返回。
double fun(double x,int n)
{
int i;
double s=1.0,s1=1.0;
for(i=1;i<=n;i++)
{s1=s1*i;/*各项中的阶乘*/
s=s+pow(x,i)/s1;/*按公式求出*/
}
return s;
}
解析:程序定义了变量s1和s,s1表示每项的分母(即各项的阶乘),s存放累加和。循环语句控制累加的次数,在循环体中进行阶乘和累加操作,累加的结果存入s中。此处使用了求乘方函数pow(x,i),其含义是求x的i次方的值。
本文档预览:3600字符,共2189字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载