知ing

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

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

゛Zirro、Y 上传

查看本书

90套: 

函数fun的功能是:统计所有小于等于n(n>2)的素数的个数,素数的个数作为函数值返回。 

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

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

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

给定源程序: 

#include <stdio.h> 

int fun(int n) 

{ int i,j, count=0; 

printf("\nThe prime number between 3 to %d\n", n); 

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

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

for (___1___; j<i; j++) 

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

if (___2___%j == 0) 

break; 

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

if (___3___>=i) 

{ count++; printf( count%15? "%5d":"\n%5d",i); } 

return count; 

main() 

{ int n=20, r; 

r = fun(n); 

printf("\nThe number of prime is : %d\n", r); 

解题思路: 

第一处:素数的条件是除1和其本身外不能整除该数,所以应填:2。 

第二处:判断i是否素数,所以应填:i。 

第三处:如果内循环for中所有数都不能整除i,那么i是素数且j大于等于i,所以应填:j。 

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

数列中,第一项值为3, 后一项都比前一项的值增5;给定程序MODI1.C中函数fun的功能是计算前n(4<n<50)项的累加和;每累加一次把被4除后余2的当前累 加值放入数组中符合此条件的累加值的个数作为函数值返回主函数。 

例如n的值为20,该数列为3,8,13,18,23,28,……,93,98。符合此条件的累加值应为42,126,366,570,1010。 

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

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

给定源程序: 

#include <stdio.h> 

#define N 20 

int fun(int n,int *a) 

{ int i,j,k,sum; 

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

sum=j==0; 

for(k=3,i=0;i<n;i++,k+=5) 

{ sum=sum+k; 

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

if(sum%4=2) 

a[j++]=sum; 

return j; 

main() 

{ int a[N],d,n,i; 

printf("\nEnter n (4<n<=50): ");scanf("%d",&n); 

d=fun(n,a); 

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

for(i=0; i<d; i++)printf("%6d",a[i]);printf("\n\n"); 

解题思路: 

第一处连续赋初值为0中间使用条件相等符号了所以应改为sum=j=0; 

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

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

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

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

注意要求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("\ns=%f\n",s); 

NONO(); 

解题思路: 

本题是根据公式计算多项式的值。 

参考答案: 

double fun(int n) 

int i; 

double sum=0.0; 

if (n>1 && n<=100) { 

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

sum+=1.0/(2*i-1)-1.0/(2*i); 

return sum; 

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


查看更多