(C语言修正版(仅供参考).doc_第1页
(C语言修正版(仅供参考).doc_第2页
(C语言修正版(仅供参考).doc_第3页
(C语言修正版(仅供参考).doc_第4页
(C语言修正版(仅供参考).doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2014年冬季C语言程序设计总复习题一、单项选择题1.构成C语言程序的基本单位是(D)。A.语句 B.行号 C.数据 D.函数 2.下面正确的标识符是(C)。A.d&ef B.6a C.z4x5c D.a3/b4 3.在VC+6.0中,存储一个字符型、整型、单精度型变量所需的空间是(A)。A.1、4、4 B.1、1、4 C.1、2、8 D.2、2、8 4.if-else嵌套时,为了避免出现二义性,C语言规定else与if的配对规则是(C)。A.与缩进位置相同的if配对B.与其之前未配对的if配对C.与其之前最近的未配对的if配对D.与同一行上的if配对5.已知int aa,bb,cc,dd; aa=bb=cc=dd=1; 则表达式(aa+1=2)?bb=aa+2:aa+3的结果是(B)。A.2 B.3 C.1 D.5 6.设有int x=11;则表达式(x+1/3)的值是(C)。 A.3 B.4 C.11 D.12 7.设有字符串A=“He has it.”,则该字符串的长度为(B)。 A. 9 B. 10 C. 11 D. 8 8.有如下程序段,则正确的执行结果是(B)。int m=3; while(m12?15:67?8:9)的值为(C)。A. 9B. 8C. 15D. 123.若x=5,y=3 则y*=x+5; y的值为(D)。A. 10B. 20C. 15D. 3024.能正确表示a和b同时为正或同时为负的逻辑表达式是(D)。A.a=0|b=0)&(a0 |b=0 & b=0)&(a0 & b0) &(a+b025.C语言中,合法的字符型常数是(A)。A.AB.“A”C. 65D. A26.已有定义 int x=3, y=4, z=5;则表达式“!(x+y)+z-1&y+z/2”的值是(D)。A.6B.0C.2D.127.若变量c为char类型,能正确判断出c为小写字母的表达式是(D)。A. a=c= a) | (c= z)C.(a=c)D. (c= a) & (c3?2:1 36.以下程序的输出结果是(D)。 int x=10,y=10; printf(“%d %dn”,x-,-y); A. 10 10 B. 9 9 C. 9 10 D. 10 9 37.VC+6.0中,设A为短整型一维数组,如果A的首地址为P,那么A中第i 个元素的地址为(C)。 A.P+i*2 B. P+(i-1)*2 C. P+(i-1) D. P+i 38.下列标识符中非法的标识符是(D)。 A. hot_do B. cat1 C. _pri D. 2ab 39.以下程序的输出结果是(A)。 int a=5; float x=3.14; a*=x*(E - A); printf(“%fn”,(float)a); A. 62.000000 B. 62.800000 C. 63.000000 D. 62 40.设有说明double(*p1)N;其中标识符p1是(C)。 A. N个指向double型变量的指针。 B. 指向N个double型变量的函数指针。 C. 一个指向由N个double型元素组成的一维数组的指针。 D.具有N个指针元素的一维指针数组,每个元素都只能指向double型量。 41.在C程序中有如下语句:char *func(int x,int y); 它是(C )。 A.对函数func的定义。 B. 对函数func的调用。 C.对函数func的原型说明。 D. 不合法的。 42.以下程序的输出结果是(D)。 char str15=”hello!”; printf(“%dn”,strlen(str); A. 15 B. 14 C. 7 D. 6 43.分析以下程序的输出结果是(A)。 #includestdio.hint main() int a=5,b=-1,c; int adds(int x,int y); c=adds(a,b); printf(%d,c); c=adds(a,b); printf(%dn,c); return 0; int adds(int x,int y) static int m=0,n=3; n*=+m; m=n%x+y+; return(m);A. 2,3 B. 2,2 C. 3,2 D. 2,4 44.下列描述中不正确的是(C)。 A. 字符型数组中可以存放字符串。 B. 可以对字符型数组进行整体输入、输出。 C. 可以对整型数组进行整体输入、输出。 D. 不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值。 45.以下程序的输出结果是(C)。 #includestdio.h#define f(x) x*x int main() int a=6,b=2,c; c=f(a)/f(b); printf(%dn,c); return 0;A. 9 B. 6 C. 36 D. 18 46.设有如下定义: int x=10,y=3,z; 则语句printf(%dn,z=(x%y,x/y); 的输出结果是(D)。 A. 1 B. 0 C. 4 D. 3 47.定义如下变量和数组:int i; int x33=1,2,3,4,5,6,7,8,9; 则语句for(i=0;i5) printf(%d,x); else printf(%dn,x - -); A. 7和5 B. 6和3 C. 7和4 D. 6和4 50.设有如下定义: char *aa2=abcd,ABCD; 则以下说法中正确的是(D)。 A. aa数组两元素的值分别是abcd和ABCD B. aa是指针变量,它指向含有两个数组元素的字符型一维数组 C. aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址 D. aa数组的两个元素中各自存放了字符a和A的地址 51.下列程序的输出结果是(D)。 char *p1=abcd, *p2=ABCD, str50=xyz; strcpy(str+2,strcat(p1+2,p2+1); printf(%s,str); A. xyabcAB B. abcABz C. ABabcz D. xycdBCD 52.下列程序的输出结果是(C)。 int a5=2,4,6,8,10,*p,*k; p=a; k=&p; printf(%d ,*(p+); printf(%dn,*k); A. 4 4 B. 2 2 C. 2 4 D. 4 6 53.不能把字符串:Hello!赋给数组b的语句是(B)。 A. char b10=H,e,l,l,o,!; B. char b10; b=Hello!; C. char b10; strcpy(b,Hello!); D. char b10=Hello!; 54.C89标准中,以下选项属于C语言数据类型的是(B)。 A. 复合型 B. 双精度型 C. 逻辑型 D. 集合型 55.以下说法中正确的是(C)。 A. C语言程序总是从第一个的函数开始执行 B. 在C语言程序中,要调用的函数必须在main()函数中定义 C. C语言程序总是从main()函数开始执行 D. C语言程序中的main()函数必须放在程序的开始部分 56.若已定义:int a9, *p=a;并在以后的语句中未改变p的值,不能表示a1地址的表达式为(C)。 A. p+1 B. a+1 C. a+ D. +p 57.以下语句的输出结果是(D)。 int a=-1,b=4,k; k=(+a0)&!(b-b?a:b_;printf(“the max is %fn”,max);8.数组inta34;共定义了_12_个数组元素。9.在循环中,continue语句与break语句有区别,continue _提前终止本次循环_ ,break _提前终止循环_。10.C语言的预处理语句以_#include_开头。11.表达式7+102 & 25%5的结果是_0_。12.下列程序段是从键盘输入的字符中统计数字字符的个数,用换行符结束循环。int n=0, ch; ch=getchar( );while( _ch!= n_ ) if ( _ch=0&chb!=c的值为 1 。18.能表示“20x30或x20&x30|x-100; 。19.若有定义语句“int x,y,z;”,若从键盘输入数据赋予x、y、z,正确的输入语句为 scanf(“%d%d%d”,&x,&y,&z); 。20.设i, j, k均为int型变量,则执行下面的for语句后,k的值为 10 。for(i=0, j=10; i=A&c=Z 。26.若有定义“int x=9,y=8;”,则表达式“x=y+1”的值是 1 。27.若有定义“int x=2;”,则表达式“x&1=1?1:0”的值是 0 。28.若有定义“int a34=1,2,0,4,6,8,10”,则初始化后元素a12的值是 0 。29.要将字符串S1复制到S2中,其语句为 strcpy(s2,s1) ;。30.C语言函数的实参传递到形参有传值和 传址 这两种形式。三、程序填空题 1.下面程序分别计算10个整数中奇数及偶数的和,请填空。#includestdio.hint main() int a,b,c,i; a=c=0; for(i=1;i=10;i+) scanf(“%d”,&b); _if(b%2= 0)_a=a+b;_else_c=c+b; _ printf(偶数的和=%dn,a); printf(奇数的和=%dn,c); return 0; 2.下面程序的功能是:输出 100以内(不包含100)能被 3整除且个位数为 6的所有整数,请填空。 #includestdio.hint main()int i; for(i=1; _i100_;i+) if(_(i%3=0)&i%10=6_) printf(%d ,i); printf(n); return 0;3.从键盘上输入10个数,求其平均值。 main() int i; float f,sum; for(i=1,sum=0.0;i=0.0_) if(xamax) amax=x; if(_xamin_) amin=x; scanf(%f,&x); printf(namax=%fnamin=%fn,amax,amin); return 0; 6.求主次对角线之和。#include”stdio.h”int main() static int a 3=9,7,5,1,2,4,6,8; int I,j,s1=0,s2=0; for(I=0;I3;I+) for(j=0;j3;j+) if(_I=i_) s1=s1+aIj; if( _I+j=2_ ) s2=s2+aIj; printf(“%dn%dn”,s1,s2); 7.以下程序实现的是计算数列1、3、5、2n-1、的前n项之和,其中n由键盘输入。#include stdio.hvoid main( )long s,n,k,i;scanf(%ld, &n );k=2*n-1; s=0 ;for(i=1;i=k;i=i+2)s=s+i ;printf(1+3+5+.+%ld=%ldn,k,s);8.以下程序实现的是冒泡排序算法,将数组a的元素按由大到小的顺序排列。#include stdio.h#define N 12void main()int i,j,k;int aN=5,8,9,6,2,7,3,2,2,7,8,0;printf(排序前的序列:);for(i=0;iN;i+)printf(%3d,ai);for(i=0;iN-1;i+)for(j=0;jN-1-i;j+)if(*(a+j)*(a+i+1 )k=*(a+j);*(a+j)= *(a+i+1 ) ;*(a+i+1 ) =k;printf(n排序后的序列:);for(i=0;i1;n-)s=s+1/n;printf(“%6.1fn”,s); return 0;六、阅读程序1.写出以下程序运行后的结果。#includestdio.hint main( ) int x=1,a=0,b=0;switch(x)case 0:b+; case 1:a+; case 2:a+;b+;printf(a=%d,b=%dn,a,b);return 0;结果:_a=2,b=1_2.写出以下程序运行后的结果。#includestdio.hint ff(int n) static int f=1; f=f*n; return f; int main() int i; for(i=1;ib) return (a);else return (b); int main() int x=3,y=8,z=6,r;r=fun(fun(x,y),2*z);printf(“%dn”,r); return 0;结果:_12_5.写出以下程序运行后的结果。#includestdio.hint main()int n; for(n=3; n=10; n+) if(n%6=0) break; printf(%d ,n); printf(n); return 0;结果:_3 4 5_6.写出以下程序运行后的结果。#includestdio.hint main()int a=1,2,3,-4,5; int m,n,*p; p=&a0;m=*(p+1);n=*(p+4); printf(%d %d %d ,*p,m,n); printf(n); return 0;结果:_1 2 5_7.写出以下程序段运行后的结果。float f=3.1415927; printf(“%f,%5.4f,%3.3fn”,f,f,f); 结果:_3.141593,3.1416,3.142_8.写出以下程序段运行后的结果。int x=6, y=7; printf(“%d,”,x+); printf(“%dn”,+y); 结果:_6,8_9.写出以下程序段运行后的结果。int a=3; a+=(a1)?a:1; printf(“%dn”,a);结果:_4_10.写出以下程序段运行后a,b的结果。for (int a=1,int b=1;a=20) break; if(b%3=1) b+=3; continue; b-=5; 结果:_8,22_11.写出以下程序段运行后的结果。int y=1,x,*p, a=2,4,6,8,10; p=&a1; for(x=0;x3;x+) y+=*(p+x); printf(%dn,y); 结果:_19_12.写出以下程序运行后的结果。#include void main( )int a, b, c;a=1; b=2;c= (ab)?a:b;printf(%d,%d,%d,a,b,c);结果: 1,2,1 13.写出以下程序运行后的结果。#include void main( )int a=9, b=15, c;c=a&b;printf(a=%dnb=%dnc=%dn,a,b,c);结果: a=9 b=15 c=9 14.写出以下程序运行后的结果#include void main( )int j, k, p, s;s=0;for(j=1;j=3;j+)p=1;for(k=1;k=j;k+) p=p*k;s=s+p;printf(s=%dn,s);结果: s=9 15.写出以下程序运行后的结果。#include void main( )int a=10, y=0;doa+=2; y+=a;if(y50) break;while(a=14);printf(a=%d, y=%dn,a,y);结果: a=16,y=60 16.写出以下程序运行后的结果#include void main( )char *s1=I love China!;char *s2, c, *s3=w;s2=&c;*s2=H;s1=s1+2;printf(%st%ct%stn,s1,*s2,s3);结果: love China! H w 17.写出以下程序运行后的结果#include func(int a,int b)static int m=0,i=2;i+=m+1;m=i+a+b;return(m);void main( )int k=4,m=1,p1,p2;p1=func(k,m);p2=func(k,m);printf(%d, %dn,p1,p2);结果: 8,17 18.写出以下程序运行后的结果。#include stdio.hvoid main()int i=0;char a=abm,b=aqid,c10;while(ai!=0&bi!=0)if(aibi)ci=ai-32;elseci=bi-32;i+;ci=0;puts(c);结果: AQM 19.写出以下程序运行后的结果。#include stdio.hint i=0;int fun1(int i)i=(i%i)*(i*i)/(2*i)+4;printf(i=%dn,i);return i;int fun2(int i)i=i=2?5:0;return i;void main()int i=5;fun2(i/2);printf(i=%dn,i);fun2(i=i/2);printf(i=%dn,i);fun2(i/2);printf(i=%dn,i);fun1(i/2);printf(i=%dn,i);结果: i=5 i=2 i=2 i=4 i=2 20.写出以下程序运行后的结果。#include stdio.hvoid main()int x,y;for(x=1,y=1;y=10)break;if(x%3=1)x+=5;continue;x+=3;printf(x=%d,y=%dn,x,y);结果: x=12,y=4 21.写出以下程序运行后的结果。#include stdio.hvoid main()int i,a=11,22,33,39,55,66,77,88,56,29;int *p=a+4;for(i=3;i;i-)switch(i)default:printf(%dt,*p+);break;case 1:case 2:printf(%dt,*p-);break;case 3:printf(%dt,*(+p);结果: 66 66 55 22.写出以下程序运行后的结果。#include stdio.hint add(int a,int n)int i,sum=0;for(i=0;in;i+)sum+=*(a+i);return sum;void main()int a3=5,9,23;printf(sum=%dn,add(a,3);结果: sum=37 七、编写程序或程序段 1.编写一个自定义函数,实现求两个实数的平方和。float sum(float x,float y)return x*x+y*y;2.定义一个反映学

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论