国家二级C语言机试(操作题)模拟试卷547
程序填空题
1.给定程序中,函数fun的功能是:
将形参s所指字符串中的数字字符转换成对应的数值,计算出这些数值的累加和作为函数值返回。
例如,形参s所指的字符串为abs5defl26jkm8,程序执行后的输出结果为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;
printf(\\
(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。
请改正程序中的错误,使它能得出正确的结果。
注意:部分源程序在文件MODll.C中,不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
int fun(int k)
{int m=0,mc=0,j;
while((k>=2)&&(mc<10))
{
/*********found*********/
if((k%13=0)||(k%17=0))
{m=m+k;mc++;)
k–;
/*********found*********/
return m;
}
void main()
{system(\\
(1)if((k%13==0)||(k%17==0))
(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。
注意:部分源程序在文件PROGl.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include<math.h>
#include<stdio.h>
double fun(int n)
{
}
main()/*主函数*/
{void NONO();
printf(\\
double fun(int n)
{
doubte sum=0.0;
int i;
for(i=21;i<=n;i++)
if((i%3==0)&&(i%7==0))
sum+=i;
return sqrt(sum);
}
解析:本题考查算术运算的算法,首先利用一个for循环判断小于n且能同时被3和7整除的整数,并将满足条件的整数累加到sum,之后调用sqn函数计算sum的平方根,并作为函数的返回值。
本文档预览:3600字符,共2477字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载