国家二级C语言机试(操作题)模拟试卷433
程序填空题
1.给定程序中,函数fun的功能是:
将形参s所指字符串中的数字字符转换成对应的数值,计算出这些数值的累加和作为函数值返回。
例如,形参s所指的字符串为abs5def126jkm8,程序执行后的输出结果为22。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:部分源程序在文件BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include < stdio.h >
#include < string.h >
#include < ctype.h >
int fun(char*s)
{int sum=0;
while(*s){
/*********found*********/
if(isdigit(*s))
sum+=*s一【1】;
/*********found*********/
【2】;
}
/*********found*********/
return【3】;
}
main()
{char s[81];int n;
pr2ntf(\\
(1)48或’0’
(2)s++
(3)sum
解析:本题是把字符串中是数字字符转换成对应的数值并进行累加。
填空1:’0’字符对应的ASCII码值是48,因此数字字符转换成对应数值时只要减去48,即是该数字字符对应的数值,所以应填48或者’0’。
填空2:判断完一个字符之后,将字符串指针移到下一个位置,所以应填s++。
填空3:返回累加和sum,所以应填sum。
程序修改题
2.下列给定的程序中,函数fun的功能是:计算并输出k以内最大的10个能被13或17整除的自然数之和。k的值由主函数传人,若k的值为500,则函数的值为4622。
请改正程序中的错误,使它能得出正确的结果。
注意:部分源程序在文件MOD11.C中,不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include < stdio.h >
#include < conio.h >
#include < atdlib.h >
int fun(int k)
{int m=0,mc=0,j;
while((k >=2)&&(mc < 1 0))
{
/*********found*********/
if((k%13=0)||(k%17=0))
{ra=m+k;mc++;)
k一一j
/*********found*********/
return m;
}
void main()
{system(\\
(2) } retum m,
解析:(1)C语言中,x能被y整除的表示方法是x%y==0,而不是题目中所表示的x%y=0。所以,if ( (k%13 =0)||(k%17 =0))修改后的结果应该是答案所示信息。
(2)程序中缺少程序完整所需的\\
程序设计题
3.编写函数fun,它的功能是:求小于形参n同时能被3与7整除的所有自然数之和的平方根,并作为函数值返回。
例如,若n为1000时,程序输出应为:s=153.909064。
注意:部分源程序在文件PROG1.c中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include < math.h >
#include < stdio.h >
double fun(int n)
{
}
main()/*主函数*/
{ void NONO();
printf (\\
double fun ( int n)
{
double sum =0 .0;
int i;
sum + =i;
return sqrt (sum) ;
}
解析:本题考查算术运算的算法,首先利用一个for循环判断小于n且能同时被3和7整除的整数,并将满足条件的整数累加到sum,之后调用sqrt函数计算sum的平方根,并作为函数的返回值。
本文档预览:3600字符,共2413字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载