测品娱乐
您的当前位置:首页C语言练习题

C语言练习题

来源:测品娱乐
答案 试题 1. 在C语言源程序中,以下叙述正确的是( )。 A. main函数必须位于文件的开头 B. 每行只能写一条语句 C. 程序中的一个语句可以写成多行 D. 每个语句的最后必须有点号 2. 关于C语言的源程序的叙述中,错误的是( )。 A. C语言的源程序由函数构成 B. main函数可以书写在自定义函数之后 C. 必须包含有输入语句 D. 一行可以书写多个语句 3. 关于C语言数据类型的叙述,正确的是( )。 A. 枚举类型不是基本类型 B. 数组不是构造类型 C. 变量必须先定义后使用 D. 不允许使用空类型 4. C程序中main函数的位置( )。 A. 必须在最开始 B. 必须在系统库函数后面 C. 可以在自定义函数后面 D. 必须在最后 5. C语言的函数体由( )括起来。 A. ( ) B. { } C. [ ] D. /* */ 6. 关于C语言的叙述中,不正确的是( )。 A. C程序可由一个或多个函数组成 B. C程序必须包含一个main()函数 C. C程序的基本组成单位是函数 D. 注释说明只能位于一条语句的后面 7. 以下叙述不正确的是( )。 A. C程序的执行总是从main函数开始 B. 一个C源程序必须包含一个main函数 C. C语言程序的基本组成单位是函数 D. 在编译C程序源程序时,可发现注释中的拼写错误 8. 结构化程序设计的三种基本结构是( )。 A. 函数结构、分支结构、判断结构 B. 函数结构、嵌套结构、平行结构 C. 顺序结构、分支结构、循环结构 D. 分支结构、循环结构、嵌套结构 9. 对于C语言源程序,以下叙述错误的是( )。 A. 可以有空语句 B. 函数之间是平等的,在一个函数内部不能定义其它函数 C. 程序调试时如果没有提示错误,就能得到正确结果 D. 注释可以出现在语句的前面 10. 下面关于C语言用户标识符的描述,正确的是( )。 A. 不区分大小写 B. 用户标识符不能描述常量 C. 类型名也是用户标识符 D. 用户标识符可以作为变量名 11. 以下( )是正确的变量名。 A. 5f B. if C. f.5 D. _f5 12. 以下( )是正确的常量。 A. E-5 B. 1E5.1 C. 'a12' D. 32766L 13. 以下( )是正确的变量名。 A. a.bee B. -p11 C. int D. p_11 14. 以下( )是正确的字符常量。单引号括起来 A. \"c\" B. '\\\\'' C. 'W' D. \"\\32a\" 15. 以下( )是不正确的字符串常量。双引号括起来 A. 'abc' B. \"12'12\" C. \"0\" D. \" \" 16. 以下( )是错误的整型常量。 A. -0xcdf B. 018 //八进制数不能超过8 C. 0xe D. 011 17. 以下( )是正确的浮点数。 A. e3 //e前面必须有数字,指数必须为整数 B. .62 C. 2e4.5 D. 123 18. 若有说明语句:char c='\\95'; 则变量c包含( )个字符。 A. 1 \\ddd :表示1到3位八进制数所代表的字符 B. 2 \\xhh表示 1到2位十六进制数所代表的字符 C. 3 D. 语法错误 19. 若有定义:int a=2; 则正确的赋值表达式是( )。 A. a-=(a*3) B. double(-a) //(double)(-a) C. a*3 D. a*4=3 20. 语句x=(a=3,b=++a);运行后,x、a、b的值依次为( )。 A. 3,3,4 //逗号运算符及逗号表达式 B. 4,4,3 C. 4,4,4 D. 3,4,3 21. 语句a=(3/4)+3%2;运行后,a的值为( )。 A. 0 B. 1 //注意除号/ 两边均为整型时,结果为整数(不含小数点) C. 2 D. 3 22. char型变量存放的是( )。//考查变量类型 A. ASCII代码值 B. 字符本身 C. 十进制代码值 D. 十六进制代码值 23. 若有定义:int x,a;则语句x=(a=3,a+1);运行后,x、a的值依次为( )。 A. 3,3 //考查逗号表达式及逗号运算符 B. 4,4 C. 4,3 D. 3,4 24. 若有定义:int a; 则语句a=(3 * 4)+ 2 % 3;运行后,a的值为( )。 A. 12 B. 14 C. 11 D. 17 25. 若有定义:int a,b; double x,则以下不符合C语言语法的表达式是( )。 A. x%(-3) //%两侧均应为整型数据 B. a+=-2 C. a=b=2 D. x=a+b 26. 若有定义:int x=2,y=3;float i;,则以下符合C语言语法的表达式是( )。 A. x=x*3=2 //x*3不是一个变量名 B. x=(y==1) C. i=float(x) //应改为i=(float)x D. i%(-3) //%两侧均应为整型数据 27. 设double型变量a,b,c,e均有值;对代数式(3ae)/(bc),不正确的C语言表达式是( )。 A. a/b/c*e*3 B. 3*a*e/b/c C. 3*a*e/b*c //改为3*a*e/b/c D. a*e/c/b*3 28. 下面叙述正确的是( )。 A. 2/3 与 2.0/3.0 等价 B. (int)2.0/3 与 2/3 等价 C. ++5 与 6 等价 //单独写++5是错误的,可以写成a=++5 D. 'A'与\"A\"等价 29. 下面叙述中,错误的是( )。 A. 其算术运算对象不包含函数 B. %(模运算符)的运算对象只能为整型量 C. 算术运算符的结合方向是\"自左至右\" D. 自加和自减运算符的结合方向是\"自右至左\" 30. 下面叙述正确的是( )。 //++ --只能用于变量,而不能用于常量或表达式 A. 强制类型转换运算的优先级高于算术运算 B. 若a和b是整型变量,(a+b)++是合法的 C. 'A'*'B' 是不合法的 D. \"A\"+\"B\"是合法的 31. 若有定义:int k,i=2,j=4; 则表达式 k=(++i)*(j--) 的值是( )。 A. 8 B. 12 //注意前缀 后缀的区别 C. 6 D. 9 32. 设整型变量a为5,使b不为2的表达式是( )。 A. b=(++a)/3 B. b=6-(--a) C. b=a%2 //结果为1 D. b=a/2 33. 若有定义:int a=1,b=2,c=3; 则语句 ++a||++b&&++c;运行后b的值为( )。 A. 1 B. 0 C. 2 //注意运算的不完全性 D. 3 34. 若有定义:int i,j;则表达式(i=2,j=5,i++,i+j++)的值是( )。 A. 7 B. 8 C. 9 D. 10 35. 若有定义:int a,b;则表达式(a=2,b=5,a*2,b++,a+b)的值是( )。 A. 7 B. 8 C. 9 D. 10 36. 若有定义:int m=5,n=3;则表达式(m+1,n+1,(--m)+(n--))的值是( )。 A. 6 B. 7 C. 8 D. 9 37. 已知 int a;使用scanf()函数输入一个整数给变量a,正确的函数调用是( )。 A. scanf(\"%d\ B. scanf(\"%d\ C. scanf(\"%f\ D. scanf(\"%lf\ 38. 已知 double a;使用scanf()函数输入一个数值给变量a,正确的函数调用是( )。 A. scanf(\"%ld\ B. scanf(\"%d\ C. scanf(\"%7.2f\//输入数据时不能规定精度 D. scanf(\"%lf\ 39. 已知 char a;使用scanf()函数输入一个字符给变量a,不正确的函数调用是( )。 A. scanf(\"%d\ B. scanf(\"%lf\ //字符型变量与整型等价,但不与浮点型等价 C. scanf(\"%c\ D. scanf(\"%u\ 40. putchar()函数的功能是向终端输出( )。// char *str0;….;puts( str0); A. 多个字符 B. 一个字符 C. 一个实型变量值 D. 一个整型变量表达式 41. getchar()函数的功能是从终端输入( )。 A. 一个整型变量值 B. 一个实型变量值 C. 多个字符 D. 一个字符 42. 若有定义:int x=1234,y=123,z=12;则语句printf(\"%4d+%3d+%2d\运行后的输出结果为( )。 A. 123412312 B. 12341234123412341231231231212 C. 1234+1234+1234 D. 1234+123+12 43. 已有如下定义和输入语句, int a; char c1,c2; scanf(\"%d%c%c\ 若要求a、c1、c2的值分别为10、A和B,正确的数据输入是( )。 A. 10AB //输入数据时,遇空格、回车、TAB、及非法输入 或按规定的宽度结束 B. 10 A B C. 10A B D. 10 AB 44. 已有如下定义和输入语句: int a,b; scanf(\"%d,%d\ //“格式控制”字符串中除了格式说明还有其他字符,则输入//时应在相应位置输入 若要求a、b的值分别为10和20,正确的数据输入是( )。 A. 10 20 B. 10,20 C. a=10,b=20 D. 10;20 45. 以下程序的运行结果是( )。 void main() { int a=65; char c='A'; printf(\"%x,%d\} A. 65,a B. 41,a C. 65,65 D. 41,65 46. 下面叙述中,( )不是结构化程序设计中的三种基本结构之一。 A. 数据结构 B. 选择结构 C. 循环结构 D. 顺序结构 47. 下面叙述中,( )不是结构化程序设计三种基本结构的共同特点。 A. 先判断后执行 B. 单入口,单出口 C. 程序中没有执行不到的语句 D. 无死循环 48. 结构化程序设计不包括( )。 A. 最优化 B. 自顶而下,逐步细化 C. 模块化设计 D. 结构化编码 49. 以下运算符中优先级最高的是( )。 A. > B. || C. && D. + //初等运算符()[] 单目 算术 关系 逻辑(不含!) 赋值 逗号 50. 若有定义:int x=3,y=4;则表达式 !x||y 的值为( )。 A. 1 B. O C. 3 D. 4 51. 若有定义:int i=7,j=8;则表达式 i>=j||ib)&&(y=c>d) 的值为( )。 A. 0 B. 1 C. 5 D. 6 61. 若有定义:int a=2,b=3; float x=3.5,y=2.5;则表达式(float)(a+b)/2+(int)x%(int)y的值是( )。 //(float)(a+b)/2=2.5 A. 3.5 B. 3.0 C. 2.5 D. 2.0 62. 若有定义:int b=7; float a=2.5,c=4.7;则表达式a+(b/2*(int)(a+c)/2)%4的值是( )。 A. 2.5 //(b/2*(int)(a+c)/2)=10 注意运算顺序 B. 3.5 C. 4.5 D. 5.5 63. 若有定义:int a=6,b=2;char c1='a',c2='b';则表达式a+b%5+c2-c1的值是( )。 A. 7 B. 8 C. 9 D. 表达式错误 . 以下的if语句中,x的值一定被重新赋值的是( )。 A. if(x==y) x+=y; B. if(x>y && x!=y ); //注意if语句后的空语句; x+=y; C. if(x!=y) scanf(\"%d\ else scanf(\"%d\ D. if(xy) z=x+y; else z=x-y; A. 3 B. -1 C. 4 D. 不确定 68. 若有定义:int a=1,b=2,c=3;则执行以下程序段后a,b,c的值分别为( )。 if (a=6) printf(\"%d\\n\ else printf(\"%d\\n\} A. 4 B. 5 C. 6 D. 7 73. 设有整型变量x,下述语句( )不会出现死循环。 A. for(;;x+=1); B. for(;(x=getchar())!='\\n';); C. while(1) {x++;} D. for(x=10;;x--); 74. 对于整型变量x,与while(!x)等价的是( )。 A. while(x!=0) B. while(x==0) C. while(x!=1) D. while(~x) C D B B A 75. 对于整型变量x和y,语句 for(x=0,y=0;(y!=123)&&(x<4);x++) y++; 中的“y++;”被执行( )。 A. 4次 B. 0次 C. 123次 D. 3次 76. 在c语言中while循环和do--while循环的主要区别是( )。 A. do--while循环体内可以使用break语句,while循环体内不能使用break语句 B. do--while的循环体至少无条件执行一次,while的循环体不是 C. do--while循环体内可以使用continue语句,while循环体内不能使用continue语句 D. while的循环体至少无条件执行一次,do--while的循环体不是 77. 以下程序段运行后,循环体运行的次数为( )。 int i=10,x; for (;i<10;i++) x=x+i; A. 10 B. 0 C. 1 D. 无限 78. 以下程序段运行后变量n的值为( )。 int i=1,n=1; for (;i<3;i++) {continue;n=n+i;} A. 4 B. 3 C. 2 D. 1 79. 以下程序的运行结果是( )。 void main() { int sum = 0, item = 0; while(item < 5) { item++; sum += item; if(sum==5) break; } printf(\"%d\\n\} A. 10 B. 15 C. 5 D. 6 B B D B C 80. 以下程序的运行结果是( )。 void main() { int sum = 0, item = 0; while(item < 5) { item++; sum += item; if(sum>=6) break; } printf(\"%d\\n\} A. 10 B. 15 C. 6 D. 7 81. 以下程序的运行结果是( )。 void main() { int sum = 0, item = 0; while(item < 5) { item++; if(item == 2) continue; sum += item; } printf(\"%d\\n\} A. 10 B. 13 C. 15 D. 1 82. 下列数组定义中,正确的是( )。 A. int a[5]={0}; B. int a[]={0 1 2}; // int a[]={0 , 1,2}; 注意元素与元素之间加逗号 C. int a[5]=0; // int a[5]={0}; D. int a[]; //必须指明数组大小 83. 下列数组定义中,正确的是( )。 A. int a[10]; B. int n=10,a[n]; //下标必须是常量表达式 C. int N=10;int a[N]; D. int n;scanf(\"%d\ B A A 84. 已知 int a[10]; 则对a数组元素引用不正确的是( )。 A. a[10] //10个元素的数组下标范围从0到9 ,故此题越界 B. a[3+5] C. a[10-10] //引用数组元素时,下标可以是整型常量或整型表达式 D. a[5] 85. 若有定义:int a[3]={0,1,2};则a[1]的值为( )。 A. 0 B. 1 C. 2 D. 3 86. 若有定义:int a[5]={1,2,3,4,5};则语句a[1]=a[3]+a[2+2]-a[3-1];运行后a[1]的值为( )。 A. 6 B. 5 C. 1 D. 2 87. 以下能对一维数组a进行正确初始化的语句是( )。 A. int a[5]=(0,0,0,0,0); B. int a[5]=[0]; //注意使用大括号 C. int a[5]={1,2,3,4,5,6,7};//多余2个 D. int a[]={0}; //定义一个只有一个元素的一维数组,指为0 88. 下面程序段的运行结果是( )。 int i=0,a[]={3,4,5,4,3}; do{ a[i]++; }while(a[++i]<5); for(i=0;i<5;i++) printf(\"%d \ A. 4 5 6 5 4 B. 3 4 5 4 3 C. 4 5 5 5 4 D. 4 5 5 4 3 . 下面程序段的运行结果是( )。 int i=0,a[]={7,5,7,3,8,3}; do{ a[i]+=2; }while(a[++i]>5); for(i=0;i<6;i++) printf(\"%d \ A. 9 7 9 5 10 5 B. 9 5 9 3 10 3 C. 9 5 7 3 8 3 D. 7 5 7 3 8 3 90. 下面程序段的运行结果是( )。 int i=0,a[]={1,2,3,4,5}; do{ a[i]+=10; }while(a[++i]>2); for(i=0;i<5;i++) printf(\"%d \ A. 11 2 3 4 5 B. 1 2 3 4 5 C. 11 12 13 14 15 D. 11 12 3 4 5 91. 设有如下程序段: int a[3][3]={1,0,2,1,0,2,1,0,1},i,j,s=0; for(i=0;i<3;i++) for(j=0;j字符串2,返回一个正整数,否则返回负整数 B. 0 //strcmp(str1,str2) C. -1 D. 2 106. 以下程序段运行后屏幕输出为( )。 char str[]=\"ab\\\\cd\"; 注意\\\\代表一个反斜杠字符 printf(\"%d\ A. 4 B. 5 C. 6 D. 7 107. 以下程序段运行后屏幕输出为( )。 char str[80];strcpy(str,\"hello\");printf(\"%d\ A. 5 B. 6 C. 7 D. 80 108. 若有定义:char str1[6]=\"abcdm\( )是正确的。 A. strcpy(str1,str2); B. 表达式strcmp(str1,str2)的值大于0 C. str1=str2; D. 表达式strlen(str1)的值为6 109. 设有如下函数定义: int fun(char *str) { char *p=str; while ( *p != '\\0') p++; return (p-str); } 则以下语句执行后的输出结果是( )。//返回字符串个数 printf(\"%d\\n\ A. 7 B. 8 C. 9 D. 10 110. 以下程序的运行结果是( )。 int fun(int array[4][4]) { int j; for(j=0;j<4;j++) printf(\"%2d\ printf(\"\\n\"); } main() { int a[4][4]={0,1,2,0,1,0,0,4,2,0,0,5,0,4,5,0}; fun(a); } A. 2 0 0 5 B. 1 0 0 4 C. 0 1 2 0 D. 0 4 5 0 111. 如下fun函数的类型是( )。 fun(float x) {double y; int z ; y=x * x ; z=(int)y ; return(z); } A. void B. double C. int D. float 112. 以下程序运行后屏幕输出为( )。 #include int f(int x,int y) { return(x+y); } main() { int a=2,b=3,c; c=f(a,b); printf(\"%d+%d=%d\\n\} A. 0 B. 2+3=5 C. 2+3=0 D. 3+2=5 113. 以下程序运行后屏幕输出为( )。 //考查全局变量与局部变量的区别及范围 #include int a=2,b=3; int max(int a,int b) { int c; c=a>b?a:b; return(c); } main() { int a=4; printf(\"%d\} A. 2,3 B. 2 C. 3 D. 4 114. 以下程序运行后屏幕输出为( )。 #include void f(int i) //两个函数中的a不一样 { int a=2; a=i++; printf(\"%d,\} main() { int a=1,c=3; f(c); a=c++; printf(\"%d\} A. 4,3 B. 3,3 C. 4,5 D. 3,5 115. 若有如下函数定义: //注意静态变量的使用 int fun() { static int k=0; return ++k; } 以下程序段运行后屏幕输出为( )。 int i; for(i=1;i<=5;i++) fun(); printf(\"%d\ A. 0 B. 1 C. 5 D. 6 116. 下面程序的输出结果是( )。 #include int global=100; fun() { int global=5; return ++global; } void main() { printf(\"%d\\n\} A. 100 B. 101 C. 5 D. 6 117. 下列关于C语言函数的描述中,正确的是( )。 A. 函数的定义可以嵌套,但函数的调用不可以嵌套 B. 函数的定义不可以嵌套,但函数的调用可以嵌套 C. 函数的定义和函数的调用都可以嵌套 D. 函数的定义和函数的调用都不可以嵌套 118. 若有以下宏定义, #define MOD(x,y) x%y 则执行以下程序段后,z的值是( )。 int z,a=15,b=100; z=MOD(b,a); A. 100 B. 15 C. 11 D. 10 119. 以下叙述中,正确的是( )。 B A. “#define PRICE=30”定义了与30等价的符号常量PRICE B. 预编译处理命令行都必须以“#”开头 C. 宏名只能包含大写字母和数字字符 //可以包括小写字母 D. 在程序的一行上可以书写几个有效的宏定义 120. 以下叙述中,正确的是( )。 A. 宏展开不占用运行时间,只占用编译时间 B. 预编译处理命令行必须以分号结束 C. 一个源程序只能有一个预编译处理命令行 D. 使用带参数的宏定义时,应该说明每个参数的数据类型 121. 以下的叙述中不正确的是( )。 A. 宏展开不占用运行时间,只占用编译时间 B. 宏名无类型 C. 宏名必须用大写字母表示 D. 预处理命令行都必须以#号开始 122. 若有定义:#define PI 3,则表达式PI*2*2的值为( )。 A. 12 B. 4 C. 3 D. 不确定 123. 以下程序运行后,屏幕输出为( )。 #define MIN(a,b) ((a)<(b)?(a):(b)) main() {int x=2,y=3,z; z=2*MIN(x,y); printf(\"%d\} A. 2 B. 3 C. 4 D. 6 124. 下面程序的输出结果是( )。 #include #define SQR(x) (x*x) void main() { int a,b=3; a=SQR(b+2); printf(\"\\n%d\} A. 11 B. 25 C. 不定值 D. 产生错误 125. 下面程序的输出结果是( )。 #include #define ONE 1 #define TWO ONE+1 #define THREE TWO+1 void main() { printf(\"%d\\n\} A. 产生错误 B. 1 C. 2 D. 3 126. 以下叙述中正确的是( )。 A. 预处理命令行必须位于C源程序的起始位置 B. 在C语言中,预处理命令行都以\"#\"开头 C. 每个C程序必须在开头包含预处理命令行:#include D. C语言的预处理不能实现宏定义和条件编译的功能 127. 设有以下语句,则( )是对a数组元素的不正确引用,其中0≤i<10。 int a[10]={0,1,2,3,4,5,6,7,8,9}, *p=a; A. a[p-a] B. *(&a[i]) C. p[i] D. *(*(a+i)) 128. 对于基类型相同的两个指针变量之间,不能进行的运算是( )。 A. < B. = C. + D. - 129. 执行以下程序段的输出结果是( )。 int a=10,*p=&a; printf(\"%d\ A. 10 B. 11 C. 变量a的地址 D. 变量a的地址 + 1 130. 以下程序段运行后*(p+3)的值为( )。 char a[]=\"good\"; char *p; p=a; A. 'd' B. '\\0' C. 存放'd'的地址 D. 'o' 131. 以下程序段运行后*(++p)的值为( )。 char a[5]=\"work\"; char *p; p=a; A. 'w' B. 存放'w'的地址 C. 'o' D. 存放'o'的地址 132. 若有定义:int *p,a=4; p=&a;则以下均代表地址的是( )。 A. a,p B. &a,p C. &a,*p D. a,*p 133. 若有说明语句:double *p,a;则能通过scanf语句正确给输入项读入数据的程序段是( )。 A. *p=&a;scanf(\"%lf\ B. *p=&a;scanf(\"%lf\ C. p=&a;scanf(\"%lf\ D. p=&a;scanf(\"%lf\ 134. 在16位编译系统上,若有定义int a[]={10,20,30},*p=&a;当执行p++;后下列叙述错误的是( )。 A. p向高地址移了一个字节 B. p与a+1等价 C. 语句printf(\"%d\输出20 D. p指向数组元素a[1] 135. 下面语句正确的是( )。 A. int *p; *p=20; B. char *s=\"abcdef\"; printf(\"%s\\n\ C. char str[]=\"abcd\"; str++;//数组名不能改变 D. char str[]={'a','b','c'};printf(\"%s\ //%s输出字符串,必须以’\\0’结束 136. 若有以下程序段,且0≤i<4,0≤j<3,则不能正确访问a数组元素的是( )。 int i,j,(*p)[3]; int a[][3]={1,2,3,4,5,6,7,8,9,10,11,12}; p = a; A. *(*(a+i)+j) B. p[i][j] C. (*(p+i))[j] D. p[i]+j 137. 若函数fun的函数头为: int fun(int i, int j) 且函数指针变量p定义如下: int(*p)(int i, int j); 则要使指针p指向函数fun的赋值语句是( )。 A. p=*fun; B. p=fun; C. p=fun(i,j); D. p=&fun; 138. 设有如下变量定义: char aa[][3]={'a','b','c','d','e','f'}; char (*p)[3]=aa; 则以下程序段的运行结果是( )。 p++; printf(\"%c\ A. a B. b C. c D. d 139. 以下程序段运行后x的值为( )。 int a[]={1,2,3,4,5,6,7,8}; int i,x,*p; x=1; p=&a[2]; for(i=0;i<3;i++) x*=*(p+i); A. 不确定 B. 24 C. 120 D. 60 140. 以下程序段运行后x的值为( )。 int a[]={1,2,3},b[]={4,2,5}; int *p,*q; int i,x; p=a; q=b; for(i=0;i<3;i++) if(*(p+i)==*(q+i)) x=*(p+i)*2; A. 2 B. 4 C. 6 D. 不确定 141. 以下程序段运行后x的值为( )。 int a[9]={1,2,3,4,5,6,3,8,9}; int *p,*q; int i,x; p=&a[0]; q=&a[8]; for(i=0;i<3;i++) if(*(p+i)==*(q-i)) x=*(p+i)*2; A. 2 B. 4 C. 6 D. 不确定 142. 下面程序的输出结果是( )。 #include void main() { int i; char *s=\"abc\"; for(i=0;i<3;i++) printf(\"%s\\n\} A. abc bc c B. c bc abc C. abc c bc D. a ab abc 143. 下面程序的输出结果是( )。 #include void main() { char *str=\"12345\ printf(\"%c\\n\} A. 1 B. 2 C. 3 D. 错误 144. 以下程序执行时,输入1 2 3 4 5<回车>,输出为: #include #define N 5 void main() { int a[N]; int *p=a; while(pa) printf(\"%d \} A. 5 4 3 2 1 B. 1 2 3 4 5 C. 2 3 4 5 1 D. 4 3 2 1 5 145. 设有以下定义语句: struct student { int num; char name[10]; float score; } wang,zhang; 则不正确的叙述是( )。 A. struct是结构体类型的关键字 B. zhang是结构体变量名 C. wang是结构体类型名 D. num,name,score都是结构体类型student的成员名 146. 设有以下定义语句: struct student { int num; char name[10]; float score; } wang,zhang; 则变量wang所占的内存字节数是( )。 A. 14 B. 16 C. 18 D. 20 147. 设有如下定义语句: union u_type { int i; //二个字节 double x; //八个字节 float f; //四个字节 }; struct str_type { char str[100]; union u_type u[2]; }; 则语句“printf(\"%d\ sizeof(struct str_type));”的输出结果是( )。 A. 100 B. 116 C. 120 D. 200 148. 若有定义: struct teacher {int num; char name[10]; char sex; int age; float score; }teacher1; 则变量teacher1所占用的内存字节数是( )。 A. 5 B. 14 C. 19 D. 20 149. 下列对结构体类型变量定义不正确的是( )。 A. struct teacher {int num; int age; }teach1; B. struct {int num; int age; }teach1,teach2; C. struct {int num; int age; }teacher; struct teacher teach1; D. struct teacher {int num; int age; }; struct teacher teach1; 150. 若有定义: struct teacher {int num; char sex; int age; }teacher1; 则下列叙述不正确的是( )。 A. struct是结构体类型的关键字 B. struct teacher是用户定义的结构体类型 C. num,sex,age都是结构体变量teacher1的成员 D. teacher1是结构体类型名 151. 以下程序的运行结果是( )。 #include union Utype{ int i; float f; }u[2]; void main() { printf(\"sizeof(u):%d\\n\} A. 2 B. 4 C. 6 D. 8 152. 以下程序的运行结果是( )。 #include union Utype{ int i; float f; }; struct{ char ch[2]; int i; union Utype u; }a; void main() { printf(\"sizeof(a):%d\\n\} A. 5 B. 6 C. 7 D. 8 153. 以下C语言共用体类型数据的描述中,不正确的是( )。 A. 共用体变量占的内存大小等于所需内存最大的成员所占的内存 B. 共用体类型可以出现在结构体类型定义中 C. 在定义共用体变量的同时允许对第一个成员的值进行初始化 D. 同一共用体中各成员的首地址不相同 163. 对枚举类型进行定义,不正确的是( )。 A. enum b{1, 2, 3}; //用户定义的标识符不能以数字开头 B. enum a{A, B, C}; C. enum c{D=3, E, F}; D. enum d{X=0, Y=5, Z=9}; 1. 假定已有如下变量说明和枚举定义: char ch ; int j, k ; enum day{sun, mon, tue, wed, thu, fri, sat} ; int a[sat]; 判断下列语句是否符合语法规则,结果是( )。 char a ; /* 语句1 */ j + k = j ; /* 语句2 */ if(a[mon]>0) j ++ ; /* 语句3 */ A. 语句2错误,其它正确 B. 语句1正确,其它错误 C. 语句3正确,其它错误 D. 语句1错误,其它正确 165. 设有如下定义: typedef int *INTEGER; INTEGER p,*q; 则( )是正确的叙述。 A. p是int型变量 B. q是基类型为int的指针变量 C. p是基类型为int的指针变量 D. 程序中可用INTEGER代替int类型名 166. 在对于无符号数的位运算中,操作数右移一位相当于( )。 A. 操作数除以2 B. 操作数乘以2 C. 操作数除以4 D. 操作数乘以4 167. 若有定义:int a=20,b=28,c;则执行语句c=(a^b)<<2;后c的值为( )。 A. 2 B. 5 C. 32 D. 92 168. 若有定义:int a=20,b=28,c;则执行语句c=(a&b)>>2;后c的值为( )。 A. 5 B. 7 C. 80 D. 112 169. 下面程序的输出结果为( )。 #include void main() { enum Weekday{sun=7,mon=1,tue,wed,thu,fri,sat}; enum Weekday day=sat; printf(\"%d\\n\} A. 7 B. 6 C. 5 D. 4 170. 若有以下类型说明,叙述正确的是( )。 typedef struct { int num; char *name; int score; }STU,*PSTU; A. STU是变量名 B. PSTU是变量名 C. PSTU是指向结构体类型STU的指针类型名 D. 类型说明语句有错误 171. 下面程序段的运行结果是( )。 int a=5,b=6; printf(\"%d\ A. 5 B. 6 C. 7 D. 8 172. 以下程序的功能是( )。 #include main() { FILE *fp; long int n; fp=fopen(\"wj.txt\ fseek(fp,0,SEEK_END); n=ftell(fp); fclose(fp); printf(\"%ld\} A. 计算文件wj.txt的起始地址 B. 计算文件wj.txt的终止地址 C. 计算文件wj.txt内容的字节数 D. 将文件指针定位到文件末尾 173. 标准函数fgets(s, n, f)的功能是( )。 A. 从文件f中读取长度为n的字符串存入指针s所指的内存 B. 从文件f中读取长度不超过n-1的字符串存入指针s所指的内存 C. 从文件f中读取n个字符串存入指针s所指的内存 D. 从文件f中读取长度为n-1的字符串存入指针s所指的内存 174. 以下程序的可执行文件名是file.exe。 main(int argc,char * argv[]) { int i; for(i=2;i,其输出结果是( )。 A. C Language and Programming B. My C Language and Programming C. MyCLanguageandProgramming D. file My C Language and Programming 175. 以下程序的可执行文件名为tt.exe,若程序运行后屏幕显示:3, We are,则在DOS提示符下输入的命令是( )。 void main(int argc, char * argv[]) { int i; printf(\"%d,\ for(i=1;i main() { FILE *fp; fp=fopen(\"data.txt\ if(fp!=NULL) { fprintf(fp,\"%s\\n\ fclose(fp); printf(\"write ok!\\n\"); } } A. 当前工作目录下存在data.txt文件,其中的内容是\"write ok!\" B. fclose(fp);语句的功能是打开文件 C. 当前工作目录下一定不存在data.txt文件 D. 当前工作目录下一定存在data.txt文件 177. 以下程序运行后,屏幕显示File open error!,则可能的原因是( )。 #include main() { FILE *fp; char str[256]; fp = fopen(\"test.txt\ if(fp==NULL) { printf(\"File open error!\"); return; } fscanf(fp,\"%s\ fclose(fp); } A. 当前工作目录下有test.txt文件,但test.txt文件太小 B. test.txt文件不能关闭 C. 当前工作目录下没有test.txt文件 D. 当前工作目录下有test.txt文件,但test.txt文件太大 178. 以下程序的可执行文件名为cmdline.exe。 #include #include void main(int argc,char *argv[]) { if(argc!=2) { printf(\"You forgot to type your name or you typed more parameters\\n\"); exit(1); } printf(\"Hello %s\\n\} 在DOS命令行输入:cmdline harry<回车>,则输出结果是( )。 A. You forgot to type your name or you typed more parameters B. Hello harry C. Hello cmdline D. hello 179. 对下面程序正确的描述是( )。 #include #include void main() { FILE *in,*out; if((in=fopen(\"infile.txt\ { printf(\"cannot open infile\\n\"); exit(0); } if((out=fopen(\"outfile.txt\ { printf(\"cannot open outfile\\n\"); exit(0); } while(!feof(in)) fputc(fgetc(in),out); fclose(in); fclose(out); } A. 程序实现在屏幕上显示磁盘文件infile.txt的内容 B. 程序实现将两个磁盘文件infile.txt和outfile.txt的内容合二为一 C. 程序实现将磁盘文件infile.txt复制到磁盘文件outfile.txt D. 程序实现将两个磁盘文件合并并在屏幕上输出 180. 以下叙述中正确的是( )。 A. C语言中的文件是流式文件,因此只能顺序存取数据 B. 打开一个已存在的文件进行了写操作后,原有文件中的全部数据必定被覆盖 C. 在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据 D. 当对文件的写操作完成之后,必须将它关闭,否则可能导致数据丢失

因篇幅问题不能全部显示,请点此查看更多更全内容