知ing

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

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

゛Zirro、Y 上传

查看本书

87套: 

函数fun的功能是:统计长整数n的各个位上出现数字123的次数,并通过外部(全局)变量c1c2c3返回主函数。例如:当n=123114350时,结果应该为: c1=3 c2=1 c3=2。 

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 

注意:源程序存放在考生文件夹下的BLANK1.C中。 

不得增行或删行,也不得更改程序的结构! 

给定源程序: 

#include <stdio.h> 

int c1,c2,c3; 

void fun(long n) 

{ c1 = c2 = c3 = 0; 

while (n) { 

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

switch(___1___) 

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

case 1: c1++;___2___; 

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

case 2: c2++;___3___; 

case 3: c3++; 

n /= 10; 

main() 

{ long n=123114350L; 

fun(n); 

printf("\nThe result :\n"); 

printf("n=%ld c1=%d c2=%d c3=%d\n",n,c1,c2,c3); 

解题思路: 

第一处:取个位数上的数,所以n%10就可以得到个位数。 

第二处:switch条件判断中,满足条件做好后,必须使用break语句跳出选择体,所以应填: break。 

第三处:同第二处。 

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

给定程序MODI1.C中函数fun的功能是统计一个无符号整数中各位数字值为零的个数通过形参传回主函数;并把该整数中各位上最大的数字值作为函数值返回。例如若输入无符号整数30800, 则数字值为零的个数为3, 各位上数字值最大的是8。 

请改正函数fun中指定部位的错误使它能得出正确的结果。 

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

给定源程序: 

#include <stdio.h> 

int fun(unsigned n, int *zero) 

{ int count=0,max=0,t; 

do 

{ t=n%10; 

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

if(t=0) 

count++; 

if(max<t) max=t; 

n=n/10; 

}while(n); 

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

zero=count; 

return max; 

main() 

{ unsigned n; int zero,max; 

printf("\nInput n(unsigned): "); scanf("%d",&n); 

max = fun( n,&zero ); 

printf("\nThe result: max=%d zero=%d\n",max,zero); 

解题思路: 

第一处:条件相等符号为==。 

第二处:由于zero是一个指针型变量,所以给它进行赋值时应带指针,因此应改为: 

*zero=count;。 

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

请编写函数fun, 其功能是计算并输出下列多项式的值

 1        1             1 

S = 1 + ── ─── … ───── 

       1*2      1*2*3        1*2*3*…50 

例如在主函数中从键盘给n输入50,输出为:s=1.718282。 

注意要求n的值大于1但不大于100。 

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

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

给定源程序: 

#include <stdio.h> 

double fun(int n) 

main() 

{ int n; double s; 

printf("\nInput n: "); scanf("%d",&n); 

s=fun(n); 

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

NONO(); 

解题思路: 

本题是根据公式计算多项式的值。注意变量的取值范围。 

参考答案: 

double fun(int n) 

double s=0, t=1; 

int i ; 

for(i=1; i<=n; i++) { 

t *= i; 

s += 1./t; 

return s; 

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


查看更多