(完整版)C语言考试题库及答案 下载本文

5、在考生文件夹下,给定程序FILL.C的功能是: 计算并输出下列多项式的值。

S = 1 + 1/(1+2) + 1/(1+2+3) + …… + 1/(1+2+3+……+50) 例如,若主函数从键盘给n输入50后,则输出为S=1.960784。 #include

/************found************/ ___1___ fun(int n) {

float fun(int n) int i,j;

double sum=0.0, t; for(i=1;i<=n;i++) {

t=0.0; T=T+J; T+=J; for(j=1;j<=i;j++)

/************found************/ t+= ___2___; sum+= 1.0/t; t+=j; }

return sum; }

main() {

int n; double s; printf(\ \ scanf(\ s=fun(n);

printf(\}

6、在考生文件夹下,给定程序FILL.C的功能是:

计算两个整数n和m(m<1000)之间所有数的和。n和m从键盘输入。例如,当n=1,m=100时,sum=5050,当n=100,m=1000时,sum=495550。 #include #include main() {

int n,m; int sum;

/************found************/ ___1___; sum=0; printf(\ scanf(\ while( n<=m ) {

/************found************/ ___2___; sum=sum+n; n++; }

printf(\ }

7、在考生文件夹下,给定程序FILL.C的功能是:

计算N*N矩阵的主对角线元素和副对角线元素之和,并作为函数值返回。(要求:先累加主对角线元素中的值,然后累加副对角线元素中的值。)

例如,若N=3,有下列矩阵: 1 2 3

4 5 6

7 8 9

fun函数首先累加1、5、9,然后累加3、5、7,函数的返回值为30。 #include #define N 3

fun(int t[][N], int n) {

int i, sum;

/************found************/ ___1___; sum=0; for(i=0; i

/************found************/ sum+=___2___ ; sum+=t[i][i]; for(i=0; i

sum+= t[i][n-i-1] ; return sum; }

main() {

int t[][N]={1,2,3,4,5,6,7,8,9},i,j; for(i=0; i

for(j=0; j

printf(\ printf(\ }

printf(\ %d\\n\ }

8、在考生文件夹下,给定程序FILL.C的功能是:

打印出1至1000中满足其个位数字的立方等于其本身的所有整数。本题的结果为:1 64 125 216 729。 #include main() {

int i,g;

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

/************found************/ g=i___1___10; g=i; /************found************/ if(___2___) if(i==g*g*g) printf(\ }

printf(\}

- 25 -

9、在考生文件夹下,给定程序FILL.C的功能是:

把数组a(大小为M)中前M-1个元素中的最小值放入a的最后一个元素中

#include #define M 11 void main() { int a[M],i;

for(i=0;i

/************found************/ for(i=1; ___(1)___;i++)

for(i=1;ia[i]) a[M-1]=a[i];

printf(\ }

10、在考生文件夹下,给定程序FILL.C的功能是: 统计一维数组a中素数的个数。

例如:如果数组a的元素为:2,3,5,7,8,9,10,11,12,13, 则程序的输出应为:prime number(s) is(are): 6。

#include #include #include prinum( int a[]) { int count,i,j,k; count = 0;

for ( i=0; i<10; i++) {

k=a[i]-1;

for ( j=2; j<=k; j++) if (a[i] % j == 0) break;

if(j >= k+1) count++; }

/************found************/ ____(1)____;

return count; }

void main()

{ int a[10]={2,3,5,7,8,9,10,11,12,13},n; /************found************/ n = ____(2)____;

n=prinum(a); printf(\ }

11、在考生文件夹下,给定程序FILL.C的功能是: 求一维数组a中素数之和。

例如:如果数组a的元素为:2,3,5,7,8,9,10,11,12,13,15,17, 则程序的输出应为:Sum is: 58。

#include #include #include void main()

{ int a[12]={2,3,5,7,8,9,10,11,12,13,15,17},i,j,k,s; /************found************/ ___(1)___; s=0; for ( i=0; i<12; i++) {

k=(int)sqrt(a[i]); for ( j=2;j <= k; j++) if (a[i] % j == 0) break; if( j>k )

/************found************/ s=s+__(2)__; s=s+a[i]; }

printf(\ }

12、在考生文件夹下,给定程序FILL.C的功能是: 从键盘上输入两个正整数x,y,求它们的最大公约数。 例如:如果从键盘上输入24,36, 程序的输出应为:max is : 12。

#include #include #include void main() { int x,y,t,i;

printf(\ scanf(\ if(x < y)

/************found************/ {t = x; ____(1)____ ; y = t;} t = x % y; while( t ) x=y; { x = y; y=t;

t = x % y; }

/************found************/ printf(\} printf(\- 26 -

13、在考生文件夹下,给定程序FILL.C的功能是: 求一维数组a中非素数之和。

例如:如果数组a的元素为:2,3,5,7,8,9,10,11,12,13,15,17, 则程序的输出应为:Sum is: 54。

#include #include #include void main()

{ int a[12]={2,3,5,7,8,9,10,11,12,13,15,17},i,j,k,s; /************found************/ ____(1)____; s=0; for ( i=0; i<12; i++) {

k=sqrt(a[i]);

for ( j=2;j <= k; j++) if (a[i] % j == 0) break; if( j<=k )

/************found************/ s=s+____(2)____; s=s+a[i]; }

printf(\}

14、在考生文件夹下,给定程序FILL.C的功能是: 查找n在数组a中最后一次出现的位置(数组首元素的位置为零)。

例如:如果a数组中的元素为:1,5,2,5,6,8,7,4,3,0, 当n=5时,程序的输出结果为:5 is No.3 。

当n=10时,程序的输出结果应为:10 not found !。

#include void main( )

{ int a[10]={1,5,2,5,6,8,7,4,3,0}; int i,k,n,f=0; scanf(\ for(i=0;i<10;i++)

/************found************/ if(___(1)___) if(a[i]==n) { f=1;

/************found************/ ___(2)___; } k=i; if(f)

printf(\ is No. %d\\n\ else

printf(\ }

15、在考生文件夹下,给定程序FILL.C的功能是: 求两个正整数x,y的最大公约数和最小公倍数。 例如:如果x=24,y=36,程序的输出应为: max is : 12 min is : 72 。

#include #include #include void main()

{ int x,y,t,max,min,i,n1,n2;

printf(\ scanf(\ if(x > y)

{t = x; x = y; y = t;} n1=x; n2=y; t = n2 % n1;

/************found************/ while( ____(1)____ ) while(t!=0) {

n2 = n1 ; n1 = t ; t = n2 % n1; }

/************found************/ max = ____(2)____ ; max=n1; min = x * y / max ;

printf(\ printf(\}

- 27 -

程序设计题(共15题)

1、在考生文件夹下,要求程序PROG.C的功能是: 将字符串中所有的大写字母转换为小写,其它字符不变(不使用转换函数)。

例如,当字符串为\ 输出:\

#include void fun(char str1[]) {

/***********begin***********/ int i=0; while(str1[i]!='\\0') { if (str1[i]>='A' && str1[i]<='Z') str1[i]+=32; else; i++;

} /************end************/ }

void main() {

void NONO( );//函数声明 char str1[80];

printf(\ gets(str1); fun(str1);

printf(\ NONO( ); }

void NONO( ) { FILE *fr,*fw; int i;

char s[80];

fr=fopen(\ fw=fopen(\ for(i=1;i<=2;i++) { fgets(s,80,fr); fun(s);

fprintf(fw,\ fclose(fr); fclose(fw); }

2、在考生文件夹下,要求程序PROG.C的功能是: 求[1,1000]之间既不能被7整除也不能被5整除的整数之和,将结果存入变量s中。

#include \ #include \ #include \ void main() {

void NONO( int y);//函数声明 int s; int i;

/***********begin***********/ s=0; for(i=1;i<=1000;i++) if(i%5!=0 && i%7!=0) s=s+i;

else; /************end************/ printf(\ NONO(s); }

void NONO( int y) { FILE *f;

f=fopen(\ fprintf(f,\ fclose(f); }

- 28 -