C语言综合练习题_第1页
C语言综合练习题_第2页
C语言综合练习题_第3页
C语言综合练习题_第4页
C语言综合练习题_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、C语言程序设计综合练习题一、单项选择题1 下列( D )是字符串比较函数。 A. puts() B. gets() C. strcpy () D. strcmp()2构成一个完整的C源程序必须有且只有一个( C )。A. 函数 B. 过程 C. 主函数 D. 程序3. 设有int i,j,k;则表达式i=1,j=2,k=3,i&j&k的值为( A )。A. 1 B. 2 C. 63 D. 04在C语言中,不同类型数据混合运算时,要先转化成同一类型后进行运算。设一表达式中包含有int、long、unsigned、char类型的变量和数据,则表达式最后的运算结果是( D )类型数据。 Aint B

2、char Cunsigned Dlong5下列( D )不是构成标识符的字符。 A.字母 B.数字 C.下划线 D.标点符号6表达式:35&-1|63-!-1的值是( A )。A. 0 B.1 C. 表达是不合法 D. 均不对7. 以下标识符中能做为合法的C用户标识符的是( D )。 A. A3+B3 B. float C. 3dx D. x3d8. 以下数据中不正确的数值或字符常量是( B )。 A. 0.0 B. 3E2.7 C. 9861 D. 0xabcd9. fp=fopen(test.txt,r); 语句中,r对文件处理方式是( A )。 A. 只读打开文件 B. 只写打开文件 C

3、. 追加打开文件 D. 读写打开文件10表示关系x=y=z的C语言表达式为( A ) A. (x=y)&(y=z) B. (x=y)and(y=z) C. (x=y)&(y=z) D. (x=y1/2)a=1;else a=0; 运行后,a的值是( A )。A. 1 B. 0 C. 与机器有关 D. 语法有错15下列( C )是合法自定义标识符。A. 3ma B. float C. m3a D. ab16设a,b和c都是int型变量,且a=3,b=4,c=5,则下列表达式中,值为0的表达式是( D ) A. a & b B. a=b|b+c&b-c D. a=a+b17判断整型变量i,j可同时

4、被2整除的表达式(i,j同时被2整除返回1,否则返回0)是( B )。A. !(i%2)|!(j%2) B. !(i%2)&!(j%2) C. (i%2)&!(j%2) D. (i%2)|(j%2)18 若x,y均为double型变量,正确的输入函数调用是( C )。 A. scanf(%f%f,&x,&y); B. scanf(%d%d,&x,&y); C. scanf(%lf%lf,&x,&y); D. scanf(%lf%lf,x,y);19. 设变量均为整型,表达式(a=2,b=5,ab?a+:b+,a+b)的值是( B )。 A. 7 B. 8 C. 9 D. 220当执行以下程序段

5、时( A )。 x= -1; Do x=x*x;while(!x); A. 循环体将执行一次 B. 循环体将执行两次 C. 循环体将执行无限次 D. 系统将提示有语法错误21执行下列程序段后,a值为( A )。a=1;b=0;if(a+b)?a+;b-) a+=b;A. 2 B. 3 C. 4 D. 522若x为char型变量,y为int型变量,x,y均有值,正确的输出函数调用是( A )。 A. printf(%c%c,x,y); B. printf(%c%s,x,y); C. printf(%f%c,x,y); D. printf(%f%d,x,y);23假定a和b为int型变量,则执行以

6、下语句后b的值为( D )。 a=1;b=10 do b-=a;a+;while (b-=y & chb & !y)的值是( C )。 A. 0 B. 语法错 C. 1 D. 假25假定a和b为int型变量,则执行以下语句后b的值为( D )。 a=1;b=10; do b-=a;a+; while (b-0); A. 9 B. -2 C. -1 D. 826下列不正确的转义字符是( C )。 A. B. C. 074 D. 0 27已知字符b的ASCII码为98,语句printf(%d,%c,b,b+1);的输出为( D )。A. 98,b B. 语句不合法 C. 98,99 D. 98,c

7、28下列( B )说法,是对“int *p;”正确解释。 A. 定义p是整型变量 B. 定义p为指向整型变量的指针变量C. 定义p为数组名 D. 定义p的内容为整形地址 29以下各组运算符中,优先级最高的运算符是( B )。 A. = B. / C. ! = D. & &30表示关系x=y=z的C语言表达式为( A )。 A. (x=y)&(y=z) B. (x=y)and(y=z) C. (x=y=z) D. (x=y)&(y=z)31下列程序段执行后s值为( C )。int i=1,s=0;doif(!(i%2)continue;s+=iwhile(+i10);A. 1 B. 45 C.

8、25 D. 以上均不是32若x,y均为int型变量且有值,要输出x,y的值,正确的输出函数调用是( D )。 A. printf(%d%d,&x,&y); B. printf(%f%f,x,y); C. printf(%f%d,x,y); D. printf(%d%d,x,y);33字符串“c program”存放在内存中占用字节数为( A )。 A. 10 B. 9 C. 11 D. 834下列程序段运行后x的值是( D )。 A. 14 B. 4 C. 15 D. 3int al=1,a2=2,a3=3,x=15;if (!al) x-;else if (a3) x=3;else x=4;

9、 35对于int a,则表达式1=a=5值是( B )。A. 0 B. 1 C. 不定 D. 表达式语法有错36变量的存储类型有四种。下列( D )的存取速度最快。 A. 自动变量 B. 静态变量 C. 外部变量 D. 寄存器变量37假定a和b为int型变量,则执行以下语句后b的值为( A )。a=1;b=10;do b-=a;a+; while(b-0);A. 9 B. -2 C. -1 D. 838设有以下程序段:int x=0,s=0;while(!x!=0) s+=+x;printf(%d ,s);则( B )。运行程序段后输出0A 运行程序段后输出1B 程序段中的控制表达式是非法的D

10、 程序段执行无限次 39设x和y均为int型变量,则执行以下语句后的输出为( A )。x=15;y=5;printf(%dn,x%=(y%=2); A. 0 B. 1 C. 6 D. 12 40已知字母a的码值为十进制97,数字0的码值为十进制48,下面程序的输出是( D )。 A. 输出无定值 B. e,4 C. 101,52 D. e,52#include int main() char c1,c2; c1=a+6-2; c2=b-a+3; printf(%c,%dn,c1,c2); return 0; 41若x和y都是int型变量,x=100,y=200,则下列程序段:printf(%d

11、,(x,y);的输出结果是( A )。 A200 B100 C100 200 D输出格式符不够,输出不确定的值42假设定义数组:float score10; 并且其地址为2000,则元素score5的地址为( D )。A. 2005 B. 2010 C. 2015 D. 2020 43假定p所指对象的值为25,P+1所指对象的值为46,则*(+p)的值为(C )。 A. 26 B. 25 C. 46 D. 4744若i为整型变量,则以下循环执行的次数是( B )。 For(i=2;i=0;)printf(%d,i-) A无限次 B0次 C1次 D2次45设C语言中,一个int型数据在内存中占2

12、个字符,则unsigned int型数据的取值范围为( C)。A. 0255 B. 032767 C. 065535 D. 046已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数时,正确的数据输入方式是( C )。int a1,a2;char c1,c2;scanf(%d%c%d%c,&a1,&c1,&a2,&c2);A. 10A 20B B. 10 A 20 B C. 10A20B D. 10A20 B47阅读以下程序,当输入数据的形式为25,13,10正确的输出结果为( D )。#includeint main() int x,y,z;

13、 scanf(%d%d%d,&x,&y,&z); printf(x+y+z=%dn, x+y+z); return 0;A. x+y+z= 48 B. x+y+z= 35 C. x+z=35 D.不确定值48表示图中坐标轴上阴影部分的正确表达式是( C )。(其中abc)Xabc A. (x=b)&(x=c) B. (x=a)|(b=x=c)C. (x=b)&(x=c) D. (x=a)&(b=x=c)49设有以下程序段:int x=0,s=0;while(!x!=0) s+=+x;printf(%d ,s);则( B )。A运行程序段后输出0B运行程序段后输出1C程序段中的控制表达式是非法的

14、D程序段执行无限次 二、判断题1打开文件的函数是fclose。( X )。2局部静态变量是在编译时赋初值的,即只赋初值一次。( O )3C语言中允许使用字符串变量。( X )4外部变量必须定义在文件的开头部分。( X )5语句while(!E);中的表达式!E等价于E= =0。( O )6实型分类:单精度、双精度和整型。( X )7逻辑运算优先级别都低于算术运算。( X ) 8函数的形参在退出该函数后是不可见的。( )9如果在定义函数时省略extern,则隐含为外部函数。( X )10定义二维数组时,第一维长度可以省略。( O )11字符0是字符串的结束标记,其ASCII代码为0。( O )

15、12若有int i=10,j=0; 则执行完语句if(j=0)i+;else i-; i的值为11。( X )13continue语句的作用是提前结束整个循环的执行。( X )14Break语句的作用是提前结束整个循环的执行。( O )15在定义函数时的参数是“形式参数”,在调用函数时的参数是“实际参数”。( O )16在函数调用时,实参和形参的变量个数可以不一样多。( X )17在函数调用时,实参和形参的变量个数一定要一样多。 ( )18若有说明:int a4=0,0则二维数组a的第一维大小为0。( X )19字符串china在内存中占据的存储空间是5个字节。( X )20打开文件的函数是f

16、close。( X )21打开文件的函数是fopen( O )。22若有说明:sratic int a34;则数组a中各元素可在程序的编译阶段得到初值0。( O )23假设定义数组:float score10;并且其地址为2000,则元素score5的地址为2005(X)。24C语言的基本单位是函数。( O )25已知字符b的ASCII码为98,语句printf(%d,%c,b,b+1);的输出为: 98,99。( X )26从变量的作用域来分,变量可以分为静态变量和动态变量。( X )27若用数组名作为函数调用时的实参,则实际上传递给行参的是数组的第一个元素值(X)28结构体和数组一样,它们

17、的成员都是相同类型数的集合。( X )29调用strlen(abc0ef0g)的返回值为8。( X)三、填空题1如果希望函数中的局部变量的值在函数调用结束后不消失而继续保留原值,就应该指定它为 静态局部变量 ,用 static 进行声明。2 结构化程序设计方法中,程序有三种基本结构,即: 顺序结构 , 选择结构 和 循环结构 。3若int i=8,j=9;float x=123.456;printf(x=%8.3f,j=%-4dn,x,j);结果为: x= 123.456 j=9 。4设C环境下一个int型数据占用2个字节,设int a4=1,2,3,4,*p=a;其中a=2000;则*p=

18、1 ,p+1= 2002 ,*(p+2)= 3 。5在C语言中,表示逻辑“假”值用 0 。6设C环境下一个int型数据占用2个字节,设int a5=5,4,3,2,1,*p=a;其中a=2000;则 *p= 5 ,p+3= 2006 ,*(p+2)= 3 。7用户定义函数体部分一般分为 说明部分 和 语句部分 两部分。8用下列for循环将大写字母逆序输出(即从Z到A),其语句为:for(i=0;ie 1 (3) (b=10)&(a=10) 0 (4) (a+5=b)|(c=b+a)(d=c+b) 1 23表达式410?(53?(4,2):3):(6,7)的值为 7 。24在C语言中,逻辑“真”

19、值用 1 表示。25strcat(ch1,ch2)的功能是: 将ch2的内容接到ch1后面,得到新的字符串ch1 。26strlen(Guangzhou tvu)的值为 14 27若有定义:double x35; 则数组中行下标的下限为 0 ,列下标的上限为 4 28写出i小于0或大于10时为真的表达式: i10 。29一个函数由两部分组成,即: 函数的声明部分 和 函数体部分 。30数组元素的相关性表现在它们具有相同的 名字 和 类型 。31以下程序实现输出x,y,z三个数中的最大者,请在【】内填入正确内容。#includey】) u=x; else u=y; if (【uz】) v=u;

20、else v=z; printf (v=%d,v);32在C语言中用 0 代表“假”,用 1 代表“真”。但只要 非0 则都认为是“真”。33用来引用特定数组元素的数字称为 下标 。34一个C程序总是从 main()函数的入口地址处 开始执行的。35下面程序的功能是用公式+求的近似值,直到最后一项的值小于10为止。请填空。#include #include int main() long i=1;【float】pi=0;while (i*i=a;i-,a+)printf(%3d,i);37用下列for循环将大写字母逆序输出(即从Z到A),其语句为:for(i=0;i26;i+) putchar

21、(Z-I) ;38一个源文件可以包含一个或者若干个函数。在函数内定义的变量是 内部变量,而在函数之外定义的变量称为 外部变量 。 外部 变量是全局变量。39C语言中根据数据的组织形式,可以将文件分为文本文件 和 二进制文件 。40要把一个外部变量只限制于被本文件使用,而不被其他文件引用,必须在定义这个外部变量时加一个 static声明 。41写出下列程序段的运行结果: s=0 。s=7;while(-s)s-=2;printf(s=%dn,s);42C语言规定:在每一个字符串的结尾加上一个 字符串结束标志”0” ,以便系统据此判断字符是否结束。43break语句只能用在 循环 语句或 多分支选

22、择 语句中。44Continue语句只能用在_ 循环 _语句中。45结构化程序设计方法中,程序有三种基本结构,即: 顺序结构 , 选择结构 和 循环结构 。46设有int a,b;当执行输入函数scanf(“%d:%d”,&a,&b);时正确的输入是 5:8 。四、问答题1请阅读下面的程序:#includeint main() int cal(int a,int b,char op); int x,y,z,result; char op1,op2; scanf(%d%c%d%c%d,&x,&op1,&y,&op2,&z); if(op1=+&op2=*) result=cal(x,cal(y,

23、z,op2),op1); else result=cal(cal(x, y, op1),z, op2); printf(%dn,result); return 0; int cal(int a,int b,char op) if(op=*) return(a*b); else return(a+b); 问题1:当输入2+3*5时,上述程序将输出 17 。问题2:把op1= =+ & op2= =* 中的 op1,op2对调后,当输入为2+3*5时,上述程序将输出 25 。2试阐述x和x的区别。x表示字符常量,占一个字节;x表示字符串常量,占2个字节3写出以下程序的运行结果。#include s

24、tdio.hint main() struct stu_list int num; char *name; sl=34, sun; printf (Number=%dtName=%sn, sl.num,); return 0; 该程序的运行结果为: Number=34 Name=sum 4假设有以下程序段:int a10;a10=3;试分析两个a10的区别。答:前一个a10定义一个int数组,数组名为a,有10个元素;后一个a10表示数组a中的一个元素,下标是10,该元素越界。五、阅读程序题1. 以下程序的执行结果是 817 。#include int main() int fu

25、nc(int a,int b); int k=4,m=1,p; p=func(k,m); printf(%d,p); p=func(k,m); printf(%dn,p); return 0;func(int a,int b) static int m=0,i=2; i+=m+1; m=i+a+b; return(m);2. 该程序运行结果为: 4 1 3 2 4 #include stdio.hint main() int a5=1,2,3,4,5,*p,i; p=a; printf(%dt%dt%dn,a3,*p,*(p+2); p+; printf(%dt %dn,*p,a3); ret

26、urn 0;3以下该程序运行结果为: 2 5 3 4 2 4 2 #include stdio.hint main () int a5=5,4,3,2,1,*p,i; p=a; printf (%dt%dt%dn,a3,*p,*(p+2); p+; printf (%dt%dn,*p,a3); return 0;4. 阅读以下程序#include stdio.hmain() char c; c=getchar(); switch(c) case a: case A:printf(BASICn);break; case b: case B:printf(FORTRANn);break; case

27、 c: case C:printf(PASCALn);break; default:printf(?n); return 0;请回答:输入d,回车,运行结果为: ? 输入a,回车,运行结果为: BASIC 5. 以下程序的运行结果是: sum=248 #include stdio.hint main() int x,sum=3; int a=70,80,90,65,75,95,60,80; for (x=1;x7;x*=2) sum=sum+ax; printf(sum=%dn,sum); return 0; 6以下程序的运行结果是运行结果: 10,32,13,24,45,96,17,81,9

28、 10,32,24,96 #include stdio.hint main() void pr(int *p); int a=10,32,13,24,45,96,17,81,9,-999; int i,*pa; pa=a; for(i=0;ai!=-999;i+) printf(%d,ai); printf(n); pr(pa); return 0; void pr(int *p) while(*p!=-999) if(*p%2=0)printf(%d,*p); p+; printf(%n); 7. 阅读以下程序#include stdio.hint main() char c; c=getc

29、har(); switch(c) case b: case B: printf(BASICn);break; case f: case F: printf(FORTRANn); break; case p: case P: printf(PASCALn); break; default: printf(?n); return 0;请回答:输入p,回车,运行结果为: PASCAL 输入a,回车,运行结果为: ? 8. 以下程序的执行结果是 7 。#include int main() int func(int x); printf(%dn,func(9); return 0 func(int x

30、) int p; if(x=0|x=1) return(3); p=x-func(x-2); return p; 9. 以下程序的运行结果是: 6 11 6 11 #include stdio.hint main() void f(int n); int m=4; f(-m); f(+m); return 0; void f(int n) int x=5,y=10; if (n0) printf(%dt %dt n,+x,+y); 10. 以下程序的运行结果是: 11 10 9 10 #include stdio.hint main() int m=10; printf(%dt%dt,+m,m

31、-); printf(%dt%d,-m,m+); printf(n); return 0;11. 以下程序的该程序运行结果为: 6 11 #include stdio.hint main() void f(int n); int m=1; f(-m); f(+m); return 0;void f(int n) int x=5,y=10; if (n0) printf(%dt %dtn,+x,+y);12. 以下程序的执行结果是 4 。#include int main() int funcl(int a,int b); int func2(int a,int b); int x=7,y=17

32、; printf(%dn,funcl(x,y); return 0 int funcl(int a,int b) int c; a+=a; b+=b; c=func2(a,b); return(c*c); int func2(int a,int b) int c; c=a*b%3; return(c); 13. 以下程序的执行结果是 x=-7,y=-10,m=2 。#include int x=-8,y=100;int main() int func(int a); int m=2; y=func(m); printf(x=%d,y=%d,m=%dn,x,y,m); return 0 int

33、func(int a) int y; y=x+a; x+; a+; return(x+y+a);14. 以下程序的程序运行结果为: 8 10 12 14 16 #include stdio.hint main() int n=7; while (n=15) n+; if(n%2!=0) continue; printf(%dt,n); printf(n);return 0;15. 以下程序的运行结果为: Number=34 Name=sun #include stdio.hint main() struct stu_list int num; char *name; sl=34, sun; p

34、rintf (Number=%dtName=%sn, sl.num,); return 0; 16. 以下程序的运行结果为: sum=248 #include stdio.hint main() int x,sum=3; int a =70,80,90,65,75,95,60,80; for (x=1;x7;x*=2) sum=sum+ax; printf(sum=%dn,sum); return 0;17. 以下程序的功能是: 将a数组中的5个数按升序排序 #include stdio.hint main() int a5=31,6,31,65,41,i,j,m,k; for

35、(i=0;i4;i+) k=i; for (j=i+1;jaj) k=j; if (k!=j) m=ak;ak=ai;ai=m; for (i=0;i5;i+) printf(%dt,ai); return 0;18. 以下程序的执行结果是 11 10 9 10 。#include int main() int m=10; printf(%dt%dt,+m,m-); printf(%dt%d,-m,m+); printf(n); return 0; 六、程序完整填空1. 连续向数组输入成绩,当输入负数时停止接收数据,显示数组元素的值。#include stdio.hint main() int n=0; int c100; do printf(enter num:n); 1 scanf(%d,&cn) ; n+; while( 2 cn-1=0 ); for(n=0;cn=0;n+) printf(%d,cn); printf(n); return;2下面程序段是从键盘输入的字符中统计数字字符的个数,用换

温馨提示

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

最新文档

评论

0/150

提交评论