知ing

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

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

゛Zirro、Y 上传

查看本书

86套: 

甲乙丙丁四人同时开始放鞭炮,甲每隔t1秒放一次,乙每隔t2秒放一次丙每隔t3秒放一次,丁每隔t4秒放一次,每人各放n次。函数fun的功能是根据形参提供的值,求出总共听到多少次鞭炮声作为函数值返回。注意,当几个鞭炮同时炸响,只算一次响声,第一次响声是在第0秒。 

例如,若t1=7t2=5t3=6t4=4n=10,则总共可听到28次鞭炮声。 

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

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

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

给定源程序: 

#include <stdio.h> 

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

#define OK(i, t, n) ((___1___%t==0) && (i/t<n)) 

int fun(int t1, int t2, int t3, int t4, int n) 

{ int count, t , maxt=t1; 

if (maxt < t2) maxt = t2; 

if (maxt < t3) maxt = t3; 

if (maxt < t4) maxt = t4; 

count=1; / * count赋初值 */ 

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

for(t=1; t< maxt*(n-1); ___2___) 

if(OK(t, t1, n) || OK(t, t2, n)|| OK(t, t3, n) || OK(t, t4, n) ) 

count++; 

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

return ___3___; 

main() 

{ int t1=7, t2=5, t3=6, t4=4, n=10, r; 

r = fun(t1, t2, t3, t4, n); 

printf("The sound : %d\n", r); 

解题思路: 

第一处:根据定义的要求,所以应填:i。 

第二处:for循环语句的增量,所以应填:t++。 

第三处:返回统计次数,所以应填:count。 

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

给定程序MODI1.C中函数fun的功能是根据输入的三个边长(整型值), 判断能否构成三角形构成的是等边三角形还是等腰三角形。若能构成等边三角形函数返回3,若能构成等腰三角形函数返回2, 若能构成一般三角形函数返回1, 若不能构成三角形函数返回0。 

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

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

给定源程序: 

#include <stdio.h> 

#include <math.h> 

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

void fun(int a,int b,int c) 

{ if(a+b>c && b+c>a && a+c>b) { 

if(a==b && b==c) 

return 3; 

else if(a==b||b==c||a==c) 

return 2; 

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

else retrun 1 

else return 0; 

main() 

{ int a,b,c,shape; 

printf("\nInput a,b,c: "); scanf("%d%d%d",&a,&b,&c); 

printf("\na=%d, b=%d, c=%d\n",a,b,c); 

shape =fun(a,b,c); 

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

解题思路: 

第一处:函数有返回值,不能定义为void,所以应改为:int fun(int a,int b,int c)。 

第二处:语句后缺少分号。 

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

请编写函数fun, 其功能是计算并输出3n之间(3n)所有素数的平方根之和。 

例如在主函数中从键盘给n输入100,输出为: sum=148.874270。 

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

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

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

给定源程序: 

#include <math.h> 

#include <stdio.h> 

double fun(int n) 

main() 

{ int n; double sum; 

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

sum=fun(n); 

printf("\n\nsum=%f\n\n",sum); 

NONO(); 

解题思路: 

本题是计算并输出3n之间(3n)所有素数的平方根之和。 

参考答案: 

double fun(int n) 

int i,j=0; 

double s=0; 

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

for (j=2; j<i; j++) 

if (i%j == 0) break; 

if (j == i) s=s+sqrt(i); 

return s; 

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


查看更多