百科园C语言题库
更新时间:2024-04-04 18:56:01 阅读量: 综合文库 文档下载
第一章
1.以下叙述中错误的是( )B.C语言编写的每个函数都可以进行独立编译并执行
2. 计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是( ) A.C语言程序仅可以编译执行
3. C语言规定:在一个源程序中,main的位置( ) A.可以任意
4. 一个C语言程序是由( ) C.函数组成
5. 以下关于结构化程序设计的叙述中正确的是( ) B.c语言中,程序的模块化是利用函数实现的
6. 以下叙述正确的是( ) C.c语言本身没有输入和输出语句
7. 以下叙述中错误的是( ) A.C语言编写的每个函数都可以进行独立编译并执行
8. 以下叙述正确的是( )B.c程序中注释部分可以单独占一行
9. 以下叙述正确的是( )
D.c语言函数可以嵌套调用,如fun(fun(x))
10. 一个C程序的执行是从( )
D.本程序main函数开始,到main函数结束
11. 以下叙述不正确的是( )
A.在c程序中,注释说明只能位于一条语句后面
第二章
单项选择
1以下选项中非法的字符常量是( ) (B ‘/019’)
2设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为( ) (C double)
3判断字符型变量c1是否为数字字符的正确表达式为( ) (A (C1>=‘0’)&&(C1<=‘9’))
4若有定义语句:int k1=10,k2=20;,执行表达式(k1=k1>k2)&&(k2=k2>k1)后,k1和k2的值分
别为 ( )
(B 0和20)
5下面四个选项中,均是不合法的用户标识符的选项是( )。 (B b-a goto int)
6判断字符型变量c1是否为小写字母的正确表达式为( )。 (B (c1>=’a’)&&(c1<=’z’))
7表达式18/4*sqrt(4.0)/8值的数据类型为( )。 (B double)
8下面四个选项中,均是合法的用户标识符的选项是( )。 (A -123 temp INT)
9若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是( ) (D 1)
10假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是( )。 (B 8)
11以下选项中关于C语言常量的叙述错误的是:( )
(D 经常被使用的变量可定义为常量)
12若x,i,j和k都是int型变量,则计算表达式x=(i=4,j=16,k=32)后,x的值为( (B 32)
13下面正确的字符常量是( ) (B ‘w’)
14在C语言中,要求运算数必须是整型的运算符是( )
(A %)
15以下关于C语言数据类型使用的叙述中错误的是( )
(B 若只处理’真’和’假’两种逻辑值,应使用逻辑类型) 16以下选项中,能表示逻辑值\假\的是( ) (B 0)
17C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符( ) (D 必须为字母或下划线)
18在C语言中,char型数据在内存中的存储形式是( )。 (C ASCLL码)
19下列表达式中,不满足\当x的值为偶数时值为真,为奇数时值为假\的要求的是( )(C !(x%==0))
20设:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b) && (n=c>d)后n的值为( )。 (C 2)
3ae21若有数学式bc,则不正确的C语言表达式是( )
(A 3*a*e/b*c)
。 )
第三章 程序改错
1/*下列给定程序中,函数fun的功能是:计算S=f(-n)+f(-n+1)+…+f(0)+f(1)+f(2)+…f(n)的
值。
例如,当n为5时,函数值应为10.407143。f(x)函数定义如下:
f(x)= 请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: */
#include
/**********ERROR**********/ f(double x) {
if(x==0.0||x==2.0) return 0.0; else if(x<0.0)
return(x-1)/(x-2); else
return(x+1)/(x-2); }
double fun(int n) {
int i; double s=0.0,y; for(i=-n; i<=n;i++) { y=f(1.0*i); s+=y;} /**********ERROR**********/ return s }
void main() {
printf(\}
参考答案double f(double x) return s;
?(x?1)?(x?2)??0?(x?1)?(x?2)?x?0x?0或x?2x?02./*下列给定程序中,函数fun的功能是:求三个数的最小公倍数。例如,给变量x1、x2、x3分别
输入15、11、2,则输出结果应当是330。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序: */
#include
int fun(int x,int y,int z) { int j,t,n,m;
/**********ERROR**********/ j=1; t=m=n=1;
/**********ERROR**********/ while (t!=0 && m!=0 && n!=0) {
j=j+1; t=j%x; m=j%y; n=j%z; }
return j; }
void main() {
int x1,x2,x3,j;
printf(\ scanf(\
printf(\ j=fun(x1,x2,x3);
printf(\}
参考答案 j=0; while (t!=0 || m!=0 || n!=0)
3/*下列程序中函数fun的功能是:计算正整数num各位上的数字之积。例如,若输入252,则输出
应该是20。若输入202,则输出应该是0。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:*/
#include
/**********ERROR**********/ long k; do {
k *=num;
/**********ERROR**********/ num \\=10; }while(num); return(k); }
void main() {
int n;
printf(\ scanf(\
printf(\}
参考答案 long k=1; num/=10;
4/*下列给定程序中,函数fun()的功能是:根据整型形参m的值,计算如下公式的值:
t=1-1/(2?2)?1/(3?3)?...?1/(m?m) 请改正函数fun()中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: */
#include
/**********ERROR**********/ for(i=2;i /**********ERROR**********/ y-=1/(i*i); return(y); } void main() {int n=5; printf(\} 参考答案 for(i=2;i<=m;i++) y-=1.0/(i*i); 5/*下列给定的程序中,函数fun的功能是:计算并输出k以内最大的10个能被13或17整除的自然 数之和。 k的值由主函数传入,若k的值为500,则函数的值为4622。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:*/ #include while((k>=2)&&(mc<10)) { /**********ERROR**********/ if((k=0)||(k=0)) { m=m+k;mc++;} k--; } int n; double s; printf(\ scanf(\ s=fun(n); printf(\ 参考答案 for(i=1;i<=n;i++) if(i%3==0||i%7==0) sum+=1.0/i; 7/*请补充main函数,该函数的功能是:计算两个自然数n和m(m<10000)之间所有数的和(n和m从 键盘输入)。 例如,当n=1,m=100时,sum=5050;当n=100,m=1000时,sum=495550。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。 试题程序:*/ #include int n,m; long sum; /**********FILL**********/ [1] ; printf(\ scanf(\ while(n<=m) { /**********FILL**********/ [2] ; n++; } /**********FILL**********/ printf(\} 参考答案 sum=0; sum+=n; ld 8/*请补充函数fun,该函数的功能是:判断某一个年份是否为闰年。 例如,1900年不是闰 年,2004是闰年。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。 试题程序:*/ #include { int flag=0; if(n%4==0) { /**********FILL**********/ if ( [1] ) flag=1; } /**********FILL**********/ if ( [2] ) flag=1; /**********FILL**********/ return [3] ; } void main() { int year; printf(\ scanf(\ if (fun(year)) printf(\ else printf(\} 参考答案 if(n0!=0) if (n@0==0) return flag; 程序设计(无答案) 1/*请编写函数fun,它的功能是:计算并输出n(包括n)以内所有能被5或9整除的自然数的倒数 之和。 例如,若主函数从键盘给n输入20后,则输出为s= 0.583333。 注意:n的值要求不大于100。部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: */ #include /************Begin*************/ /************End***************/ } void main() { int n; double s; FILE *out,*in; printf(\ scanf(\ s=fun(n); printf(\ /******************************/ in=fopen(\ out=fopen(\ fscanf(in,\ fprintf(out,\ fscanf(in,\ fprintf(out,\ fclose(out); /******************************/ 2/*请编写函数fun,该函数的功能是:计算并输出 S=1+(1+2 0.5 0.5 )+(1+2+3)+…+(1+2+3+… 0.50.50.50.5 +n) 例如,若主函数从键盘给n输入20后,则输出为S=534.188884 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: */ #include /***********Begin**************/ /**********End***************/ } void main() { FILE *wf,*in; int n; double s; printf(\ scanf(\ s=fun(n); printf(\ /******************************/ in=fopen(\ wf=fopen(\ fscanf(in,\ fprintf(wf,\ fscanf(in,\ fprintf(wf,\ fclose(in); fclose(wf); /*****************************/ } 3/*请编写函数fun,其功能是计算并输出如下多项式的值: Sn=l+1/1!+1/2!+1/3!+1/4!+… +1/n! 例如,若主函数从键盘给n输入15,则输出为S=2.718282。 注意:n的值要求大于1但不大于100。部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: */ #include /***********Begin*************/ /***********End****************/ } void main() { int n; double s; FILE *out,*in; printf(\ scanf(\ s=fun(n); printf(\ /******************************/ in=fopen(\ out=fopen(\ fscanf(in,\ fprintf(out,\ fscanf(in,\ fprintf(out,\ fclose(in); fclose(out); /******************************/ } 4/* 编写函数fun,它的功能是:计算和输出下列级数的和。 S=1/(1x2)+1/(2x3)+...1/(nx(n+1)) , 例如,当n=10时,函数值为0.909091。 注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: */ #include #include /*************Begin************/ /*************End*************/ } void main() { FILE *wf,*in; int n; printf(\ /******************************/ wf=fopen(\ in=fopen(\ fscanf(in,\ fprintf(wf,\ fclose(in); fclose(wf); /*****************************/ } 5/*请编写函数fun,其功能是:计算并输出3到n之间所有素数的平方根之和。 例如,若主函数从键盘给n输入100后,则输出为sum=148.874270。 注意:n的值要大于2但不大于100。部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: */ #include /*************Begin*************/ /*************End**************/ } void main() {int n; double sum; FILE *out,*in; printf(\ scanf(\ sum=fun(n); printf(\ /******************************/ in=fopen(\ out=fopen(\ fscanf(in,\ fprintf(out,\ fclose(in); fclose(out); /******************************/ } 6/*请编写一个函数 unsigned fun(unsigned w),w是一个大于10的无符号整数,若w是n(n>=2) 位的整数, 则函数求出w的后n-1位的数作为函数值返回。 例如,w值为5923,则函数返回923;若w值为923,则函数返回23。 注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: */ #include unsigned fun(unsigned w) { /***********Begin**************/ /***********End****************/ } void main() { FILE *wf,*in; unsigned x; printf(\ scanf (\ printf(\ if(x<10) printf(\ else printf (\/******************************/ in=fopen(\ wf=fopen(\ fscanf(in,\ fprintf(wf,\ fscanf(in,\ fprintf(wf,\ fclose(in); fclose(wf); /*****************************/ } 7/*请编写函数fun,它的功能是:求Fibonacci数列中大于t(t>3)的最小数,结果由函数返回。其 中Fibonacci数列F(n)的定义为: F(0)=0,F(1)=1 F(n)=F(n-1)+F(n-2) 假如:当t=1000时,函数值为1597。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: */ #include /**************Begin************/ /**************End*************/ } void main() { int n; FILE *out,*in; n=1000; printf(\ /******************************/ in=fopen(\ out=fopen(\ while(!feof(in)) { fscanf(in,\ fprintf(out,\} fclose(in); fclose(out); /******************************/ } 8/*请编写函数fun,其功能是:计算并输出下列多项式值。 S=(1-1/2)+(1/3-1/4)+… +(1/(2n-1)-1/2n) 例如,若主函数从键盘给n输入8后,则输出为S= 0.662872注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: */ #include /*************Begin*************/ /*************End*************/ } void main() { FILE *wf,*in; int n; double s; printf(\ scanf(\ s=fun(n); printf(\ /******************************/ in=fopen(\ wf=fopen(\ fscanf(in,\ fprintf(wf,\ fclose(in); fclose(wf); /*****************************/ } 9/*请编写一个函数fun,它的功能是:根据以下公式求?的值(要求满足精度0.005,即某项小于 0.005时停止迭代)。 ?/2=1+1/3+1*2/(3*5)+1*2*3/(3*5*7)+1*2*3*4/(3*5*7*9)+…+1*2*3*…*n/(3*5*7*…*(2n+1)) 程序运行后,如果输入精度0.005,则程序输出3.137130。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: */ #include double fun(double eps) { /*************Begin************/ /*************End**************/ } void main() { double x; FILE *wf,*in; printf(\ scanf(\ printf(\/******************************/ in=fopen(\ wf=fopen(\ fscanf(in,\ fprintf (wf,\ fclose(in); fclose(wf); /*****************************/ } 10/*请编写函数fun,它的功能是计算下列级数和,和值由函数值返回。S=1+x+x/2!+x/3!+… 2 3 +x/n! 例如,当n=10,x=0.3时,函数值为1.349859。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 n 试题程序: */ #include double fun(double x, int n) { /************Begin*************/ /************End***************/ } void main() { FILE *wf,*in; double x; int n; printf(\/******************************/ in=fopen(\ wf=fopen(\ fscanf(in,\ fprintf(wf,\ fclose(in); fclose(wf); /*****************************/ } 第四章 单项选择 1下面的程序片断所表示的数学函数关系是(A) y = -1; if(x != 0) y = 1; if(x > 0) y = 1; else y = 0; 2以下程序的执行结果是main() (C.1) { int x = 0, s = 0; while( !x != 0 ) s += ++x; printf( \ 3在下述程序中,判断i > j共执行了多少次(C.6) #include int i = 0, j = 10, k = 2, s = 0; for( ; ; ) { 4 i += k; if(i > j) { printf(\ break; } s += i; } } 以下程序段的输出结果是(C.20) int i, j, m = 0; for(i = 1; i <= 15; i += 4) for(j = 3; j <= 19; j += 4) m++; printf(\ 5执行下列语句后的输出为()(C.****) int j=-1; if(j<=1) printf(\ else printf(\ 6以下for循环的执行次数是 for(x=0,y=0;(y=123)&&(x<4);x++);(A.4次) 7下列程序的输出结果是(A.a=2,b=1) main() { int x=1,y=0,a=0,b=0; switch(x) { case 1: switch(y) { case 0:a++;break; case 1:b++;break; } case 2:a++;b++;break; case 3:a++;b++;break; } printf(\ 8以下程序的执行结果是__(A.1,2,3,) . main() { int num = 0; while( num <= 2 ) { num++; printf( \ 9 int a=1,b=2,c=3; if(a>b)a=b; if(a>c)a=c; 则a的值为(A.1)。 10有以下程序 main() { int i; for(i=0; i<3; i++) switch(i) { case 1: printf(\ case 2: printf(\ default : printf(\ } } 执行后输出结果是(A.011122) 11下列程序的输出结果是()。 main() { int x=1,y=0,a=0,b=0; switch(x) { case 1:switch(y) { case 0:a++;break; case 1:b++;break; } case 2:a++;b++;break; case 3:a++;b++;break; } printf(\ (A.a=2,b=1) 12有以下程序,程序运行后的输出结果是 (D #include char b,c; int i; b='a'; c='A'; for(i=0;i<6;i++) { if(i%2) putchar(i+b); else putchar(i+c); } printf(\return 0; 13以下程序的输出结果是(A .28 70) main() { int x, i; for(i = 1; i <= 100; i++) { x = i; if( ++x % 2 == 0) if( ++x % 3 == 0 ) if( ++x % 7 == 0) printf(“%d “, x); } printf(“\\n”); } AbCdEf) 14有如下程序 main() { float x=2.0,y; if(x<0.0)y=0.0; else if(x<10.0)y=1.0/x; else y=1.0; printf(\\n\);} 该程序的输出结果是(A. 0.500000) 15有以下程序 main() { int i=1,j=1,k=2; if((j++||k++)&&i++) printf(\\n\); } 执行后输出结果是 (A k1=1; k2=2; k3=3; x=15; if(!k1) x--; else if(k2) x=4; else x=3; 2,2,2) 16.假定所有变量均已正确定义,下列程序段运行后x的值是()(D. 4) 17. 以下程序段的输出结果是(B. 1 -2) int x= 3; do { pritnf(“=”, x-=2); } while (!(--x)); 18. 有以下程序,若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是 (B. m=123n=456p=789)(中间无空格) #include int m,n,p; scanf(\ printf(\return 0; } 19以下程序中,while循环的循环次数是( ) (A 死循环不能确定次数) main() { int i=0; while(i<10) { if(i<1) continue; if(i==5) break; i++; } } 20设有定义:int a=1,b=2,c=3;以下语句中执行效果与其它三个不同的是() (D if(a>b) c=a;a=b;b=c;) 21为了避免在嵌套的条件语句 if-else 中产生二义性,C语言规定: else子句总是与()配对。(B 其之前最近的if) 22以下叙述正确的是:(c) (用do-while构成循环时,只有在while后的表达式为零时结束循环) 23有如下程序 main() { int x=1,a=0,b=0; switch(x) { case 0: b++; case 1: a++; case 2: a++;b++; } printf(\\\n\); } (B a=2,b=1) 24运行以下程序后,输出的结果是 main() { int k = -3; if(k <= 0) printf(\; else printf(\} (A ****) 25int a=1,b=2,c=3; if(a>c)b=a;a=c;c=b;则c的值为()。 (B 2) 26在C语言中,为了结束由while语句构成的循环,while后一对圆括号 中表达式的值应该为()。 (B 0) 27设a、b和c都是int变量,且a=3,b=4,c=5;则以下的表达式中,值为0的表达式是 {C !((a 28假定所有变量均已正确定义,下面语句段执行后的x的值是 a = b = c = 0; x = 35; (B 4) 29语句while(!E);中的条件为真等价于()。(B E==0) 30若x是int类型变量,以下程序段的输出结果是 for(x = 3; x < 6; x++) printf( (x%2)?(\ (D **3##4 **5) 31有以下程序段 int n=0,p; do { scanf(\ n++; }while(p!=12345&&n<3); 此处do-while循环的结束条件是______。 32以下程序段的输出结果为()。 for(i=4;i>1;i--) for(j=1;j (D p的值等于12345或n的值大于等于3)(A ######) 33以下程序段中,能够正确地执行循环体的是()。 (B int s=6;do s-=2;while(s);) 34执行语句 for(i=1;i++<4;); 后变量 i 的值是()。 (D 5) 35从循环体内某一层跳出,继续执行循环外的语句是 (A break语句) 36int a=3,b=2,c=1; if(a>b>c)a=b; else a=c; 则a的值为()。 (C 1) 37以下描述中正确的是()。 (D 在do-while循环体中,一定要有能使while后表达式的值变为零(“假”)的操作) 38选择结构中的条件与循环结构中循环成立的条件, 在写法上可以是任一表达式,但其值只能被判断为\真\ 或\假\。 哪个数作为逻辑\假\值()。 (D 0) 39以下程序的输出结果是 main() { int i, sum=0; for(i = 1; i < 6; i++) sum += i; printf(\} (A 15) 第四章 一·选择题 1.有以下程序,程序运行后的输出结果是( ) B.6 #include { if (x!=y) return ((x+y)/2); else return (x); } int main() { int a=4,b=5,c=6; printf(\return 0; } 2. 有以下程序,程序运行的输出结果( ) A.8 #include m=f(f(f(n))); printf(“%d\\n”,m); return 0 ; } int f(int x) { return x*2;} 3. 有以下程序,程序执行后变量w中的值是( ) C.5.0 #include int funl(double a){return a*=a;} int fun2(double x,double y) { double a=0,b=0; a=funl(x);b=funl(y);return (int)(a+b); } int main() {double w;w=fun2(1.1,2.0);……} 4. 有以下程序,程序运行后的输出结果是( )B.64 #include { static int x=1; x*=2; return x; } int main() { int i,s=1; for(i=1;i<=3;i++) s*=fun(); printf(\} 5. 有以下程序,程序运行后的输出结果是( )D.9 #include { int a=3,b=4,c=5,d; d=f(f(a,b),f(a,c)); printf(\} 6. 有以下程序,程序运行后的输出结果是( )B.21 #include p=d++; printf(“%d”,p); int main() { int a=1; fun(a); printf(“%d\\n”,a); } return 0; 7. 有以下程序:程序运行后的输出结果是( )A.21 #include { static int x=1; } int main() { int i,s=1; for(i=1;i<=5;i++) s+=fun(); printf(\return 0; } 8. 若有代数式 (其中e仅代表自然对数的底数,不是变量),则以下能够正确表示该代数式的C语言表达式是( )A.sqrt(fabs(pow(n,x)+exp(x))) 9. 以下关于return语句叙述中正确的是( )D.一个自定义函数中可以根据不同情况设置多条return语句 10. 设有如下函数定义,若执行调用语句:n=fun(3);,则函数fun总共被调用的次数是( ) B.3 int fun(int k) { if (k<1) return 0; else if(k==1) return 1; else return fun(k-1)+1; } 11. 在一个C语言源程序文件中所定义的全局变量,其作用域为( )C.由具体定义位置和extern说明来决定范围 x+=1; return x; } |nx?ex|12. 以下叙述正确的是( )A.C语言函数可以嵌套调用,例如:fun(fun(x)) 13. 以下程序的主函数中调用了在其前面定义的fun函数,则以下选项中错误的fun函数首部是 ( ) B.double fun (double a) 14. 以下说法不正确的是( )C.用户可以重新定义标准库函数 15. 下列叙述中正确的是( )A.C语言规定必须用main作为主函数名,程序将从此函数开始执行,到此函数结束 16. 若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是( ) D.形参只是形式上的存在,在调用之前不占用具体存储单元 17. 在C语言中,只有在使用时才占用内存单元的变量,其存储类型是( )。 B.auto和register 18. 设函数中有整形变量n,为保证其在未赋初值的情况下初值为0,应该选择的存储类别是( ) D.static 19. 以下正确的函数定义形式是:( ) A.double fun(int x;in y){} 20. 在函数调用过程中,如果函数funA调用了函数funB,函数funB又调用了函数funA,则 ( ) C.称为函数的间接递归调用 二·程序设计 /*请编写函数fun,其功能是:将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。 例如,输入17,则应输出4 6 8 9 10 12 14 15 16。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: */ #include int fun(int m, int xx[]) { /***************Begin************/ /*************** End ************/ } int main() { FILE *wf,*in; int m, n,k, zz[100]; printf(\ scanf(\ m=fun(n,zz); printf(\ for(n=0;n printf(\ in=fopen(\ wf=fopen(\ fscanf(in,\ m=fun(k,zz); for(n=0;n fprintf(wf,\ fclose(in); fclose(wf); return 0; } 【参考代码】 int i,k,j=0; for(i=2;i for(k=2;k return j; 三.程序改错 1. /*下列给定程序中,函数fun的功能是:将十进制正整数m转换成k(2?k?9)进制数,并按位输出。 例如,若输入8和2,则应输出1000(即十进制数8转换成二进制表示是1000)。 请改正函数fun中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:*/ #include #include /**********ERROR**********/ void fun(int m,int k); { int aa[20], i; for(i=0;m;i++) { /**********ERROR**********/ aa[i]=m/k; m/=k; } for(;i;i--) /**********ERROR**********/ printf(\} int main() { int b,n; printf(\ scanf(\ fun(n,b); printf(\ return 0; } 【参考答案】 void fun(int m, int k) 【参考答案】 aa[i]=m%k; 【参考答案】 printf(\ 2. /*数列中,第一项为3,后一项都比前一项的值增5。下列给定程序中,函数fun的功能是:计算前n(4?n?50)项的累计和。 在累加过程中把那些被4除后余2的当前累加值放入数组中,符合此条件的累加值的个数作为函数值返回主函数里。 如当n的值为20时,该数列为3,8,13,18,23,28,…,93,98。符合此条件的累加值应为42,126,366,570,1010。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: */ #include int fun(int n, int a[]) /**********ERROR**********/ { int i,j,k,sum; sum=0; for(k=3,i=0;i /**********ERROR**********/ if(sum%4=2) a[j++]=sum; } /**********ERROR**********/ return j-1; } int main() { int a[N],d,n,i; printf(\scanf(\ d=fun(n,a); printf(\ for(i=0;i printf(\return 0; } 【参考答案】 int i,j=0,k,sum; 【参考答案】 if(sum%4==2) 【参考答案】 return j++; return j; 3. /*下列给定程序中,函数fun的功能是:计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值。 其中x和y不相等,z和y不等。例如,当x的值为9,y的值为11,z的值为15时,函数值为-3.50。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:*/ #include /**********ERROR**********/ #define FU(m,n) (m/n) float fun(float a,float b,float c) { float value; value=FU(a+b,a-b)+FU(c+b,c-b); /**********ERROR**********/ return(Value); } void main() { float x,y,z,sum; printf(\ scanf(\ printf(\ if(x==y||y==z) { printf(\exit(0);} sum=fun(x,y,z); printf(\} 【参考答案】 #define FU(m,n) (m)/(n) #define FU(m,n) ((m)/(n)) 【参考答案】 return(value); return value; 4. /*下列给定程序中,函数fun的功能是:按如下递归公式求函数值。 ?10fun(n)=??fun(n?1)?2(n?1)(n?1) 例如,当给n输入5时,函数值为18;当给n输入3时,函数值为14。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: */ #include /**********ERROR**********/ int fun(n) { int c; /**********ERROR**********/ if(n=1) c=10; else c=fun(n-1)+2; return(c); } void main() { int n; printf(\ scanf(\ printf(\} 【参考答案】 int fun(int n) 【参考答案】 if(n==1) if(1==n) 5. /*下列给定程序中,函数fun的功能是:用递归算法计算斐波拉契级数列中第n项的值。 从第一项起,斐波拉契级数序列为1,1,2,3,5,8,13,21,…例如,若给n输入7,该项的斐波拉契级数值为13。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:*/ #include /**********ERROR**********/ switch(g); {case 0:return 0; /**********ERROR**********/ case 1; case 2:return 1; } return (fun(g-1)+fun(g-2)); } void main() { long fib; int n; printf(\ scanf(\ printf(\ fib=fun(n); printf(\} 【参考答案】 switch(g) 【参考答案】 case 1:case 2:return 1; 三·程序填空 /*请补充函数fun,函数fun的功能是求n的阶乘。注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。 试题程序: */ #include /**********FILL**********/ if ( [1] ) /**********FILL**********/ return(n*fun( [2] )); /**********FILL**********/ return [3] ; } void main() { printf(\} 【参考答案】 if(n>1) if(1 第五章 1.有以下程序,程序运行后的输出结果是( )B:ABCDIJK #include char a[20]=”ABCD\\0EFG\\0”,b[]=”IJK”; strcat(a,b); printf(“%s\\n”,a); return 0; 2.有以下程序,程序运行后的输出结果是 ( )D;3 #include { char s[]=\ int i, n=0; for(i=0;s[i]!=0;i++) if(s[i]>='0'&&s[i]<='9') n++; printf(\ return 0; 3.下列选项中,能够满足\若字符串s1等于字符串s2,则执行ST\要求的是 ( )A:if(strcmp(s2,s1)==0)ST 4.以下选项中正确的语句组是( )D:char s[]=”BOOK!” 5.以下数组定义中错误的是( )A:int x[2][3]={{1,2},{3,4},{5,6}} 6.若有定义语句:int m[]={5,4,3,2,1},i=4;则下面对m数组元素的引用中错误的是 ()A:m[m[0]] 7.下列选项中,能正确定义数组的语句是( )D:#define N 2008 Int num[N] 8.有以下程序,程序运行时若输入:how are you? I am fine<回车>则输出结果是( ) #include { char a[30],b[30]; scanf(\gets(b); printf(\ return 0; C:how are you?I am fine. 9.下面是有关C语言字符数组的描述,其中错误的是( )D:字符数组只能存放字符串 10.有以下程序,程序运行后的输出结果是( )C:71 #include char x[]=\x[0]='0';x[1]='\\0';x[2]=0; printf(\ return 0; 11.若要定义一个具有5个元素的整型数组,以下错误的定义语句是( )C:int i=5,d[i] 12.有以下程序,程序运行后的输出结果是 ( )C:welcome #include #include { char a[5][10]={“china”,”beijing”,”you”,”tiananmen”,”welcome”}; int i,j; char t[10]; for(i=0;i<4;i++) for(j=i+1;j<5;j++) if(strcmp(a[i],a[j])>0) { strcpy(t,a[i]); strcpy(a[i],a[j]); strcpy(a[i],t);} puts(a[3]); return 0; } 程序设计1./*编写函数int fun(int lim, int aa[MAX]),该函数的功 能是求出小于或等于lim的所有素数并放在aa数组中, 该函数返回所求出的素数的个数。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: */ #include int fun(int lim, int aa[MAX]) { /**********Begin**********/ /**********End**********/ } int main() { FILE *wf,*in; int limit,i,k,sum; int aa[MAX]; printf(\输入一个整数\ scanf(\ sum=fun(limit,aa); for(i=0;i if(i==0&&i!=0) /*每行输出10个数*/ printf(\ printf(\ } /******************************/ wf=fopen(\ in=fopen(\ fscanf(in,\ sum=fun(k,aa); for(i=0;i fprintf(wf,\ fclose(wf); fclose(in); /*****************************/ return 0; } 答案:int i,j,k=0; for(i=2;i<=lim;i++) { for(j=2;j=i) aa[k++]=i; } return k; 2./*请编写函数fun,函数的功能是:求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。 例如,若二维数组中的值为 1 3 5 7 9 2 9 9 9 4 6 9 9 9 8 1 3 5 7 0 则函数值为61。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序:*/ #include int fun( int a [M][N]) { /***************Begin************/ /*************** End ************/ } void main() { FILE *wf,*in; int aa[M][N]={{1,3,5,7,9},{2,9,9,9,4},{6,9,9,9,8},{1,3,5,7,10}}; int i, j, y; printf (\ for(i=0; i {for (j=0; j printf(\ printf(\ } y=fun(aa); printf(\ printf(\ /******************************/ in=fopen(\ wf=fopen(\ for(i=0;i fscanf(in,\ y=fun(aa); fprintf (wf,\ fclose(wf); /*****************************/ } 答案:int i,j,sum=0; for(i=0;i if(i==0||i==M-1||j==0||j==N-1) sum=sum+a[i][j]; return sum; 3./*编写一个函数,从传入的num个字符中找出最长的一个字符串,并通过形参指针max传回该串地址(用****作为结束输入的标志)。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序:*/ #include void fun(char a[][81], int num, char max[]) { /***************Begin************/ /*************** End ************/ } void main() { FILE *wf,*in; char ss[10][81],ps[81]; char s[3][81]={\ int i=0,n; printf(\输入若干个字符串:\ gets(ss[i]); puts(ss[i]); while(!strcmp(ss[i], \用4个星号作为结束输入的标志*/ { i++; gets(ss[i]); puts(ss[i]); } n=i; fun(ss,n,ps); printf(\ /******************************/ in=fopen(\ wf=fopen(\ fscanf(in,\ for(i=0;i fscanf(in,\ fun(s,n,p); fprintf(wf,\ fclose(wf); fclose(in); /*****************************/ } 答案:int i=0; strcpy(max,a[0]); /*找出最长的一个字符串*/ for(i=0;i if(strlen(max) 4./*请编写一个函数fun,它的功能是:求出1到m(含m)之内能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。 例如,若传给m的值为50,则程序输出: 7 11 14 21 22 28 33 35 42 44 49 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: */ #include int fun(int m, int a[]) { /***************Begin************/ /*************** End ************/ } void main() { FILE *wf,*in; int aa[M],n,k,i; n=fun(50,aa); for(k=0;k if((k+1) ==0) /*每行输出20个数*/ {printf(\ printf(\ } else printf(\ printf(\ /******************************/ in=fopen(\ wf=fopen(\ fscanf(in,\ n=fun(k,aa); for(i=0;i fprintf(wf,\ fclose(wf); /*****************************/ } 答案:int i,j=0; for(i=1;i<=m;i++) if(i%7==0||i==0) a[j++]=i; return j; /*返回这些数的个数*/ 5./*请编写一个函数fun,它的功能是:将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转为整数的函数)。 例如,若输入字符串\则函数把它转换为整数值-1234。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序:*/ #include /***************Begin************/ /*************** End ************/ } void main() { FILE *wf,*in; char s[6]; long n; printf(\ gets(s); n=fun(s); printf(\ /******************************/ in=fopen(\ wf=fopen(\ fscanf(in,\ fprintf (wf,\ fclose(wf); /*****************************/ } 答案:long n=0,i=0; int flag=1; if(p[i]=='-') /*负数时置flag为-1*/ {i++;flag= -1;} else if(p[i]=='+') /*正数时置flag为1*/ i++; while(p[i]!='\\0') { n=n*10+p[i]-'0';/*将字符串转成相应的整数*/ i++; } return n*flag; 6./*请编写一个函数void fun(char ss[]),其功能是:将字符串ss中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。 例如,若输入abc4EFg,则应输出aBc4EFg。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序:*/ #include #include /***************Begin************/ /*************** End ************/ } void main() { char tt[100]; FILE *out,*in; printf(\gets(tt); printf(\fun(tt); printf(\/******************************/ in=fopen(\out=fopen(\fgets(tt,16,in); strcat(tt,\fun(tt); fprintf(out,\fclose(in); fclose(out); /******************************/ } 答案:int i,n=0; while(ss[i]) { n++; i++; } for(i=0;i if((ss[i]>='a'&&ss[i]<='z')&&i%2!=0) /*将下标为奇数位置的字母转换成大写*/ ss[i]=ss[i]-32; ss[i]='\\0'; 7./*编写一个函数fun,它的功能是:实现两个字符串的连接(不使用库函数strcat),即把p2所指的字符串连接到p1所指的字符串后。 例如,分别输入下面两个字符串: FirstString SecondString 则程序输出:FirstStringSecondString 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序:*/ #include void fun(char p1[],char p2[]) { /***************Begin************/ /*************** End ************/ } void main() { FILE *wf,*in; char s1[80],s2[40]; char p1[80]=\ printf(\ scanf(\ printf(\ printf(\ printf(\ fun(s1,s2); printf(\ printf(\ /******************************/ in=fopen(\ wf=fopen(\ fscanf(in,\ fun(p1,p2); fprintf(wf,\ fclose(in); fclose(wf); /*****************************/ } 答案:int i,j; for(i=0;p1[i]!='\\0';i++); for(j=0;p2[j]!= '\\0';j++) p1[i++]=p2[j]; p1[i]= '\\0'; 8./*请编写函数fun,其功能是:将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。 例如,输入17,则应输出4 6 8 9 10 12 14 15 16。 注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: */ #include int fun(int m, int xx[]) { /***************Begin************/ /*************** End ************/ } void main() { FILE *wf,*in; int m, n, k,zz[100]; printf(\ scanf(\ m=fun(n,zz); printf(\ for(n=0;n printf(\ /******************************/ in=fopen(\ wf=fopen(\ fscanf(in,\ m=fun(k,zz); for(n=0;n fprintf(wf,\ fclose(wf); /*****************************/ } 答案:int i,j,n=0; for(i=4;i /*找出大于1小于整数m的非素数*/ {for(j=2;j if(j return n; /*返回非素数的个数*/ int i,j,n=0; for(i=4;i /*找出大于1小于整数m的非素数*/ {for(j=2;j return n; /*返回非素数的个数*/ 9./*请编写一个函数 void fun(char tt[],int pp[]),统计在tt字符串中\到\个字母各自出现的次数, 并依次放在pp所指数组中。例如,当输入字符串abcdefghabcdeabc后, 程序的输出结果应该是:3 3 3 2 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序:*/ #include void fun(char tt[],int pp[] ) { /***************Begin************/ /*************** End ************/ } void main( ) { FILE *wf,*in; char aa[1000]; int bb[26], k; printf(\ scanf(\ fun(aa,bb); for (k=0 ;k<26 ; k++) printf(\ /******************************/ in=fopen(\ wf=fopen(\ fgets(aa,80,in); fun (aa,bb) ; for (k=0 ;k<26 ; k++) fprintf(wf,\ fclose(wf); fclose(in); /*****************************/ } 答案:int i; for(i=0;i<26;i++) pp[i]=0; i=0; for(;tt[i]!='\\0';i++) if(tt[i]>='a'&&tt[i]<='z') pp[tt[i]-'a']++; 程序改错1. /*下列给定程序中,函数fun的功能是:删除字符串s中所有空 白字符(包括Tab符、回车符及换行符)。输入字符串时用\结束输入。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:*/ #include { int i, t; char c[80]; for(i=0,t=0;p[i];i++) if(!isspace(*(p+i))) c[t++]=p[i]; /**********ERROR**********/ c[t]=\ strcpy(p,c); } void main() {char c,s[80]; int i=0; printf(\ c=getchar(); while(c!='#') { s[i]=c;i++;c=getchar();} s[i]='\\0'; fun(s); puts(s); } 答案:【学生答案】 c[t]=\ 【参考答案】 c[t]=0; c[t]='\\0'; 2. /*下列给定程序中,函数fun的功能是:求出数组中最大数和次最大数,并把最大数和a[0]中的数对调、次最大数和 a[1] 中的数对调。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:*/ #include /**********ERROR**********/ void fun(int a[],int n); { int i, m, t, k; for(i=0; i /**********ERROR**********/ m=0; for(k=i+1; k void main() { int b[N]={11,5,12,0,3,6,9,7,10,8},n=10,i; for(i=0; i for(i=0; i 答案:【改错1】 【学生答案】 void fun(int a[],int n); 【参考答案】 void fun(int a[],int n) 【改错2】 【学生答案】 m=0; 【参考答案】 m=i; 3. /*下列给定程序中,函数fun的功能是:先从键盘上输入一个3行、3列的矩阵的各个元素的值,然后输出主对角线元素之和。 请改正函数fun中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:*/ #include int a[3][3],sum; int i,j; /**********ERROR**********/ sum=1; for (i=0;i<3;i++) { for (j=0;j<3;j++) /**********ERROR**********/ scanf(\ } for(i=0;i<3;i++) sum=sum+a[i][i]; printf(\} void main() { fun(); } 答案:改错1】 【学生答案】 sum=1; 【参考答案】 sum=0; 【改错2】 【学生答案】 scanf(\【参考答案】 scanf(\ 4. 例如,数组中元素的值依次为39,-47,21,2,-8,15,0,则程序的运行结果为19.250000。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: */ #include double fun(int x[]) { /**********ERROR**********/ int sum=0.0; int c=0, I=0; while(x[I]!=0) { if(x[I]>0) { sum+=x[I]; c++; } I++; } /**********ERROR**********/ sum=sum\\c; return sum; } void main() { int x[1000]; int i=0; printf(\ do { scanf(\ }while(x[i++]!=0); printf(\} 答案:【改错1】 【学生答案】 int sum=0.0; 【参考答案】 double sum=0; double sum=0.0; float sum=0; float sum=0.0; 【改错2】 【学生答案】 sum=sum\\c; 【参考答案】 sum=sum/c;
正在阅读:
百科园C语言题库04-04
深圳市龙岗区2015-2016学年七年级(上)期末数学试卷09-10
深圳地铁6号线站位资料04-21
我国政府绩效评估研究综述06-22
苦但快乐作文800字07-14
编译原理实验报告LR(1)分析法08-28
《乌丢丢的奇遇》测试题08-20
2012年1月礼仪学试题和答案12-06
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 题库
- 百科
- 语言
- 初中 物理8.3摩擦力经典题(2017中考题)
- tetgen手册
- “三早”预警机制实施方案
- 小学奥数专题158-5-1操作与策略 题库学生版
- 航天疗养院工程创优计划书
- VDA6.3新版过程FMEA六步法
- 2014年贵州省委党校在职研究生招生考试马基复习题
- 《关于温州方言(以温州话为例)的研究性学习》
- “矿井透水事故”事故分析
- 国际金融课后习题答案
- 污水处理厂的设计厂址选择时要考虑的问题和平面布置的原则
- 高二1班班规
- 材料力学期末试题和选择题 - 图文
- 中国商业银行存贷款市场现状及未来趋势 - 图文
- mysql练习题
- 外国文学选择题
- 7招巧妙应对工作中的烦心事
- 重庆医科大学20052006学年度
- 诗歌鉴赏意境和意象 - 图文
- 中国古代建筑之屋顶样式 - 图文