C程序设计复习资料
15级C程序设计复习资料C语言练习题(一)一、判断题1.C语言简洁、紧凑、移植性好,可以直接对硬件进行操作,并能编制出功能复杂的程序。(×)2. ab.c是C语言的合法标识符。(×)3.一个算法应该具有“确定性”、“有穷性”、“有效性”、“有零个或多个输入”、“有一个或多个输出”等五个特性。()4.一个C语言程序是由函数组成的。()5.设变量n是整型,j是实型,i是双精度型,则表达式10+n+i*j值的数据类型为double型。()6.在C语言中,char型数据在内存中的存储形式是ASCII码。()7.若有如下定义int a,b;double c;则其赋值语句是a=b=int(c);。(×)8.下列的优先级顺序为从低到高”<” %”+”!=”。(×)9.设x、y和z是int型变量,且x=5,y=6,z=7,则!(x<y)&&!z|1)=0。()10.设x、y和z是int型变量,且x=5,y=6,z=7,则x|y+z&&y-z=0。(×)11.判断char型变量c2是否为小写字母的表达式为(a >=c2) (z<= c2)。(×)12.字符串“a”在内存中占据的字节个数为2。()13.a、b是字符串,if (strcpy(a,b)是判断字符串a和b是否相等的语句。(×)14.for循环语句中,可以包含多条语句,但要用花括号括起来。()15.for循环是先执行循环体语句,后判定表达式。(×)16.for循环不仅能用于循环次数已经确定的情况,也可以用于循环次数不确定的情况。()17.在for循环中,不能用break语句跳出循环体。(×)18.由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句。(×)19.do-while循环由do开始,用while结束,在while(表达式)后面要写分号。()20.在do-while循环体中,一定要有能使while后面表达式的值变成零(“假”)的操作。()21.do-while循环中,根据情况可以省略while。(×)22.C语句int n; scanf(“%d”,&n);int an;是对一维数组的合法定义。(×)23.C语句void Fun(int n) int a2*n; 是对一维数组的合法定义。()24.C语句int a3*5;是对一维数组的合法定义。()25.C语句int n,a2*n;是对一维数组的合法定义。(×)26.若二维数组a有n列,则在aij前面的元素个数为j *n+i。(×)27.若二维数组a有n列,则在aij前面的元素个数为i*n+j。()28.若二维数组a有n列,则在aij前面的元素个数为i*n+j+1。(×)29.当a=7,b=6,c=1时,表达式a>b!=c的值是1。()30.在C语言中,二维数组元素在内存中存放的顺序是按行存放的。()31.函数体包括声明部分和语句部分。()32.在函数调用中,如果是调用无参函数,则“实参表列”可以没有,但括号不能省略。()33. 在函数调用中,如果实参表列包含多个实参,则各参数间用分号隔开。(×)34. 在函数被调用结束后,其中的静态(static)局部变量的值会被继续保留,其占用的存储单元也不释放,在下一次再调用该函数时,该变量已有值。()35.指针变量中只能存放地址,不能将一个整数赋给一个指针变量。()36. 变量的指针是指该变量的名。(×)37. 若用数组名作为函数调用的实参,传递给形参的是数组的首地址。()38.若用a1作为函数调用的实参,传递给形参的是a数组中第一个元素的值。(×)39. do-while循环和while循环在第一次循环条件判断就为假时,执行循环的次数相同。(×)40在一个函数中,可以有多条return语句,但只执行其中的一条。()二、选择题1. 若以下选项中的变量已正确定义,则正确的赋值语句是 。A) x1=26.8%3; B) 1+2=x2; C) x3=0x12; D) x4=1+2=3;答案:C2. 若有以下程序段:int c1=1,c2=2,c3;c3=1.0/c2*c1;则执行后,c3中的值是 。A) 0 B) 0.5 C) 1 D) 2答案:A3. 设x和y均为int型变量,则以下语句:x+=y; y=x-y; x-=y; 的功能是 。A) 把x和y按从大到小排列 B) 把x和y按从小到大排列 C) 无确定结果 D) 交换x和y中的值答案:D4. 以下4个选项中,不能被看作是一条语句的是 。A) ; B) a=0,b=0,c=0;C) if (a>0); D) if (b=0)m=1;n=2;答案:D5. 在C语言中不合法的整数是 。A)20 B)0x4001 C)08 D)0x12ed答案: C6. 下列程序的运行结果是 。# include “stdio.h”void main( ) int i=23; do+i; while(i); printf(“%d”,i);A)23 B)24 C)死循环 D)无任何结果答案:C7. 下列关于单目运算符+ +、- -的叙述中正确的是 。A)它们的运算对象可以是任何变量和常量B)它们的运算对象可以是char型变量和int型变量,但不能是float型变量C)它们的运算对象可以是int型变量,但不能是double型变量和float型变量D)它们的运算对象可以是char型变量、int型变量和float型变量答案:D8. 已定义ch为字符型变量,下列赋值语句中错误的是 。A)ch='' B)ch=62+3; C)ch=NULL; D)ch='xaa'答案:A9. 若有语句scanf(”%d %c%f”,&a,&b,&c),假设输入序列为2223a123o.12,a、b、c的值为 。A)无值 B)2223,a,123o.12C)2223,a,无 D)2223,a,123答案:D10. 语句“printf ("%d ", (a=2)&&(b=-2);”的输出结果是 。 A)无输出 B)结果不确定 C)-1 D)1答案:D11. 已定义c为字符型变量,则下列语句中正确的是 。A)c=97 B)c=“97 “ C)c=97 D)c=“a”答案:C12. 若有程序段:for (m=1;m<=100;m+)scanf("%d",&y);if(y<0) continue;printf("%3d",m);正确的描述是( )。A)当y<0时整个循环结束 B)y>=0时什么也不输出C)printf函数永远也不执行 D)最多允许输出100个非负整数答案:D13. sizeof(float)是( )。A)一个双精度型表达式 B)一个整型表达式 C)一种函数调用 D)一个不合法的表达式答案:B14. 设c1,c2均是字符型变量,则以下不正确的函数调用为( )。A)scanf(“c1=%cc2=%c”,&c1,&c2); B)c1=getchar( ); C)putchar(c2); D)putchar(c1,c2);答案:D15. 有定义如下: char str150,str220,ch;则下列语句中正确的是( )。A)str1=“Crazy”; B)str1=“Crazy”; str2=str1; str2=“English”; strcpy(str1,str2);C)ch=“xy”; D)ch=x;答案:D16. 以下非法的赋值语句是 。(A)n=(i+2,i+); (B)j+; (C)+(i+1); (D)x=j>0;答案:C17. 有以下程序#include <stdio.h>void main( ) int x=102,y=012; printf(“%2d,%2dn”,x,y);执行后输出结果是 。(A)10,01 (B)02,12 (C)102,10 (D)02,10答案:C18. 若变量a是int类型,并执行了语句:a=A+1.6;,则正确的叙述是 。(A)a的值是字符C (B)a的值是浮点型 (C)不允许字符型和浮点型相加 (D)a的值是字符A的ASCII值加上1答案:D19. 下列运算符中优先级最高的是A)! B)% C)- = D)&&答案:A)20. 以下定义语句中正确的是 。A)char a=Ab=B; B)float a=b=10.0;C)int a=10,*b=a; D)float *a, b=a;答案:C21. 设有如下程序段int x=2002,y=2003;printf("%dn",(x,y);则以下叙述中正确的是 。A)输出语句中格式说明符的个数少于输出项的个数,不能正确输出B)运行时产生出错信息C)输出值为2002 D)输出值为2003答案:D22. 如果在用户的程序中使用C语言库函数中的sqrt函数,应在该源文件中使用的include命令是 。A)# include <string.h> B)# include <math.h>C)# include <ctype.h> D)# include <stdio.h>答案:B23. 下面的程序 。#include <stdio.h>void main( ) int x=3,y=0,z=0;if(x=y+z)printf("* * * *");elseprintf("# # # #");A)有语法错误不能通过编译 B)输出 * * * * C)可以通过编译,但是无法连接,因而不能运行D)输出# # # #答案:D24. putchar 函数可以向终端输出