知ing

最新计算机二级C语言上机试题汇编100套

NCRE研究组 编 / 高等教育出版社

゛Zirro、Y 上传

查看本书

48套: 

给定程序中,函数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; 

printf("\nEnter a string:\n\n"); gets(s); 

n=fun(s); 

printf("\nThe result is: %d\n\n",n); 

解题思路: 

本题是把字符串中是数字字符转换成对应的数值并进行累加。 

第一处:'0'字符对应的ASCII值是48,因此数字字符转换成对应数值时只要减去48,即是该数字字符对应的数值,所以应填:48。 

第二处:到字符串下一个位置,所以应填:s++。 

第三处:返回累加和sum,所以应填:sum。 

*************************************************** 

给定程序MODI1.C中函数fun的功能是:计算小于形参k的最大的10个能被1317整除的自然数之和。k的值由主函数传入,若k的值为500,则函数值为4622。 

请改正程序中的错误,使程序能输出正确的结果。 

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! 

给定源程序: 

#include <stdio.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--; 

return m; 

/ ************found************/ 

 

_____ 

main ( ) 

printf("%d\n", fun (500)); 

解题思路: 

第一处:判断相等的条件是==,而不是=,所以只能在比较处再添加一个=。 

第二处:经过编译可知,"{""}"没有配对,所以在横线处加上"}"。 

*************************************************** 

编写函数fun,它的功能是:求小于形参n同时能被37整除的所有自然数之和的平方根,并作为函数值返回。 

例如若n1000时,程序输出应为:s = 153.909064。 

注意部分源程序在文件PROG1.C文件中。 

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 

给定源程序: 

#include <math.h> 

#include <stdio.h> 

double fun( int n) 

main() / * 主函数 */ 

printf("s =%f\n", fun ( 1000) ); 

NONO(); 

解题思路: 

本题是求小于形参n同时能被37整除的所有自然数之和的平方根,并作为函数值返回。 

参考答案: 

double fun( int n) 

 

double sum=0.0; 

int i; 

for(i=21; i<=n; i++) 

if((i % 3==0) && (i % 7==0)) sum+=i; 

return sqrt(sum) ; 

※※※※※※※※※※※※※※※※※※※※※※※※※ 


查看更多