2013 上半年 C语言练习题汇总答案
C语言基础练习题(含答案)
目录第1-3章C语言基础知识习题 (2)1 选择题 (2)2 填空题 (7)3 答案及部分解析 (9)第4章选择结构习题 (11)1 选择题 (11)2 填空题 (17)3 答案及部分解析 (23)第5章循环结构习题 (26)1 选择题 (26)2 填空题: (32)3 答案及部分解题分析 (39)第6章数组习题 (41)1. 单项选择题 (41)2. 填空题 (44)3. 判断题 (45)4. 程序填空题 (45)5. 阅读程序,分析程序的功能。
(49)第7章函数习题 (55)1. 单项选择题 (55)2. 填空题 (56)3. 判断题 (57)4. 程序填空题 (58)5. 写出下列程序运行结果 (59)第8章指针习题 (67)1 选择题 (67)2 填空题 (69)第1-3章C语言基础知识习题1 选择题1. 以下不是C语言的特点的是()。
A、语言简洁紧凑B、能够编制出功能复杂的程序C、C语言可以直接对硬件操作D、C语言移植性好2.下列字符序列中,不可用作C语言标识符的是()。
A.abc123 B.no.1 C._123_ D._ok3.正确的C语言标识符是()。
A._buy_2 B.2_buy C.?_buy D.buy?4. 请选出可用作C语言用户标识符的一组标识符()。
A.void B.a3_b3 C.For D.2adefine _123 -abc DOWORD IF Case sizeof5. 下列符号中,不属于转义字符的是()。
A.\\ B.\0xAA C.\t D.\06.不属于C语言关键字的是()。
A.int B.break C.while D.character7.是C语言提供的合法关键字的是()。
A.Float B.signed C.integer D.Char8.以下不能定义为用户标示符的是()。
A.scanf B.V oid C._3com_ D.int9.一个C程序是由()。
2013C语言考试题(1)答案
C语言考试题(1-5章)答案一、阅读程序题(每题5分,共40分)1.阅读程序,写出程序运行结果。
#include <stdio.h>int main(){char c1,c2;float d,e;c1='a';c2='b';d=3.567;e=-6.872;printf("c1=%d,c2=%d\nc1=%c,c2=%c\nd=%6.2f,e=%6.2f\n",c1,c2,c1,c2,d,e);return 0;}答案:c1=97,c2=98c1=a,c2=bd= 3.57,f= -6.872.阅读程序,写出程序运行结果。
#include <stdio.h>int main(){int i,j,m,n;i=8;j=10;m=++i;n=j++;printf("%d,%d,%d,%d\n",i,j,m,n);return 0;}答案:9,11,9,103.若输入4,程序运行结果为【1 】,若输入-4,运行结果为【2 】,若输入10,运行结果为【3 】。
#include<stdio.h>Int main(){ int x,y;scanf("%d",&x);if(x<1){ y=x;printf("x=%d,y=x=%d\n",x,y);}else if(x<10){ y=2*x-1;printf("x=%d,y=2*x-1=%d\n",x,y);}else{ y=3*x-11;printf("x=%d,y=3*x-11=%d\n",x,y);}}答案:【1 】x=4, y=2*x-1=7【2 】x=-4, y=x=-4【3 】x=10, y=3*x-11=194.阅读程序,写出程序运行结果。
#include<stdio.h>int main(){int a=10,x=100,y=20,ok1=15,ok2=0;if(x>y)if(y!=10)if(!ok1)a=1;elseif(ok2)a=10;elsea=-1;printf("%d\n",a);return 0;}答案:-15.阅读程序,写出程序运行结果。
C语言各章节练习题(含答案)
一、C语言概述练习题选择1.一个C程序的执行是从。
本程序的main函数开始,到main函数结束B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C) 本程序文件的第一个函数开始,到本程序main函数结束D) 本程序的main函数开始,到本程序文件的最后一个函数结束2.以下叙述不正确的是。
A) 一个C源程序必须包含一个main函数 B)一个C源程序可由一个或多个函数组成C) C程序的基本组成单位是函数在C程序中,注释说明只能位于一条语句的后面3.以下叙述正确的是。
A) 在对一个C程序进行编译的过程中,可发现注释中的拼写错误B) 在C程序中,main函数必须位于程序的最前面语言本身没有输入输出语句 D) C程序的每行中只能写一条语句4.一个C语言程序是由。
A)一个主程序和若干个子程序组成函数组成 C) 若干过程组成 D) 若干子程序组成二、数据类型、运算符与表达式选择. 1.若x、i、j、k都是int型变量,则计算下面表达式后,x的值为。
x=(i=4,j=16,k=32) A) 4 B) 16 D) 522.下列四组选项中,均不是C语言关键字的选项是。
C) include case scanf D) while go pow3.下列四组选项中,均是不合法的用户标识符的选项是。
int C) float la0 _A D) -123 abc TEMP4.下列四组选项中,均是合法转义字符的选项是。
\”’‘\\’‘\n’ B)‘\’‘\017’‘\”’ C)‘\018’‘\f’‘xab’ D)‘\\0’‘\101’‘xlf’5.下面不正确的字符常量是。
“c”B) ‘\\’’C) ‘’D) ‘K’6.以下叙述不正确的是。
A) 在C程序中,逗号运算符的优先级最低 B) 在C程序中,MAX和max是两个不同的变量C) 若a和b类型相同,在计算了赋值表达式a=b后,b中的值将放入a中,而b中的值不变当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值7.以下叙述正确的是。
2013全国计算机等级考试新大纲二级C语言题库及参考答案
参考答案第一套题二、程序填空题本题是根据给定的公式来计算函数的值。
第一处:程序中使用双精度double类型进行计算,所以函数的返回值类型也为double,所以应填:double。
第二处:当i等于1时,则返回f1函数的值,所以应填:f1。
第三处:如果i不等于1,则返回f2函数的值,所以应填:f2。
三、程序修改题解题思路:第一处: 试题要求返回字符串的首地址,所以应改为:char *fun(char *s,char *t)第二处: 取字符串指针ss的下一个位置,所以应改为:ss++;。
第三处:取字符串指针tt的下一个位置,所以应改为:tt++;。
四、程序设计题解题思路:本题是考察字符串的操作。
1. 由于函数fun1是将字符串中字符循环左移一个位置,并通过实参w返回循环左移一个位置的字符串。
2. 利用循环for语句来操作多少个字符(m)需要循环左移。
参考答案:void fun(char *w, int m) /* 可调用fun1函数左移字符*/{int i;for(i = 0 ; i < m ; i++) fun1(w);}第二套题一、选择题解题思路:第一处:计算好的平均值通过形参av返回,所以应填:*av。
第二处:计算小于平均值且最接近平均值的位置j,所以应填:i。
第三处:返回该数,所以应填:x[j]。
三、程序修改题解题思路:第一处:函数的返回是浮点型数,所以应改为:float fun(int n)。
第二处:for的终止条件应是i<=n。
四、程序设计题解题思路:本题是利用两重循环给二维数组右上三角元素中的值乘以m。
参考答案:int fun ( int a[][N], int m ){int i, j;for(i = 0 ; i < N ; i++)for(j = i ; j < N ; j++)a[i][j] *= m ;}第三套题一、选择题解题思路:第一处:如果n是奇数,则中间的元素不动,所以应填:1。
C语言练习题(带详解答案)
C语言练习题(带详解答案)一单项选择题1.(A)是构成C语言程序的基本单位。
A、函数B、过程C、子程序D、子例程2.C语言程序从C开始执行。
A)程序中第一条可执行语句B)程序中第一个函数C)程序中的main函数D)包含文件中的第一个函数3、以下说法中正确的是(C)。
A、C语言程序总是从第一个定义的函数开始执行B、在C语言程序中,要调用的函数必须在main()函数中定义C、C语言程序总是从main()函数开始执行D、C语言程序中的main()函数必须放在程序的开始部分4.下列关于C语言的说法错误的是(B)A)C程序的工作过程是编辑、编译、连接、运行B)C语言不区分大小写。
C)C程序的三种基本结构是顺序、选择、循环D)C程序从main函数开始执行5.下列正确的标识符是(C)。
A.-a1B.a[i]C.a2_iD.intt5~8题为相同类型题考点:标识符的命名规则(1)只能由字母、数字、下划线构成(2)数字不能作为标识符的开头(3)关键字不能作为标识符选项A中的-,选项B中[与]不满足(1);选项D中的int为关键字,不满足(3)6.下列C语言用户标识符中合法的是(B)。
A)3a某B)某C)caeD)-e2E)union选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的-不满足(1);7.下列四组选项中,正确的C语言标识符是(C)。
A)%某B)a+bC)a123D)123选项A中的%,选项B中+不满足(1);选项D中的标识符以数字开头不满足(2)8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。
A、print_3ddb8aBcB、I\\amone_halftart$it3paiC、tr_1CpppowwhileD、P某qMy->bookline#Hi.age选项B中的\\,$,选项D中>,#,.,-不满足(1);选项C中的while为关键字,不满足(3)9.C语言中的简单数据类型包括(D)。
2013 c语言试题及答案
理论考试(120分钟)一、单项选择题(在每小题的4个备选答案中,选出一个最佳答案,共15小题;每小题2分,共30分)1.一个C程序的执行是从( A)A.本程序的main函数开始,到main函数结束B.本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C.本程序的main函数开始,到本程序文件的最后一个函数结束D.本程序文件的第一个函数开始,到本程序main函数结束2.已知int x=10,y=20,z=30; 以下语句执行后x,y,z的值是( B) if (x>y) z=x; x=y;y=z;A. 10,20,30B. 20,30,30C. 20,30,10D. 20,30,20 3.int a=1,b=2,x=3; 表达式:x*=a+b计算后x的值为:( B )A. 5B. 9C. 3D. 64.下列选项,在C语言中能作为合法标识符的是( D)A. %xB. a+bC. 2_int_12_D. int_2_5.#include<stdio.h> (A)void main(){int sum,pad;sum=pad=5;pad=sum++;pad++;++pad;printf("%d %d\n",pad, sum);}A.7 6B. 6 5C. 7 5D. 6 6 6.若有说明:int a[10];则对a 数组元素的正确引用是( D )A. a[10]B. a[3, 5]C. a(5)D. a[10-10] 7.请读程序#include<stdio.h>#define MUL(x,y) (x)*yvoid main(){ int a=3, b=4, c;c=MUL(a++, b++);printf("%d\n", c);}上面程序的输出结果是(A)。
A. 12B. 15C. 20D. 168.若用数组名作为函数调用的实参,传递给形参的是数组的( A )A. 数组的首地址B. 数组第一个元素的值C. 数组中全部元素的值D. 数组元素的个数9.阅读以下程序void main(){ int a=5,b=0,c=1;if(a=b+c) printf(“***\n”);else printf(“$$$\n”);}以上程序( C)A. 语法有错不能通过编译B. 可以通过编译但不能通过连接C. 输出***D. 输出$$$10.下列关于函数定义正确的是( D )A. fun(int x,y){ int z;return z;}B. void fun(int x,int y){ return x+y;}C. fun(x,y){int x,y;double z;z=x+y;return z;}D. double fun(int x,int y) { double z;z=x+y;return z;}11.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是(B )A. 地址传递B. 单向值传递C. 由实参传给形参,再由形参传回实参D. 传递方式由用户指定12.具有相同基类型的指针变量P和数组Y,下列写法中不合法的是( D ) A.P = Y B.*P = Y[i]C.P = &Y[i] D.P = &Y13.设x和y均为int型变量,则下列语句:x+=y; y=x-y; x- =y;的功能是(D ) A.把x和y按从大到小排列。
C语言习题答案2013年新版——第二章至第七章[1]
习题答案习题2(参考答案)一、选择题二、填空题习题 3 (参考答案)1.编程实现:用字符输入/输出函数输入3个字符,将它们反向输出。
参考代码(尽量运用本章所学知识)#include <stdio.h>main( ){ char c1,c2,c3;c1=getchar(); c2=getchar(); c3=getchar();putchar(c3); putchar(c2); putchar(c1);}2.编程实现:用格式输入/输出函数输入3个字符,将它们反向输出并输出它们的ASCII值。
参考代码(尽量运用本章所学知识)#include <stdio.h>main( ){ char c1,c2,c3;scanf ("%c%c%c", &c1, &c2, &c3) ;printf("%c %d,%c %d,%c %d ", c3,c3,c2,c2,c1,c1) ;}3.变量k为float 类型,调用函数:scanf("%d", &k);不能使变量k得到正确数值的原因是:scanf("%d", &k);中的格式控制类型与变量k的定义类型不匹配,应将%d改为%f.4. (略)习题4答案一选择题1-20 DBDCA CBDDA ACABC BCBBC二、写出下列程序的运行结果1. z=362. 20 03. 124. 48,485. 136. 02三编程题(参考答案)1.输入4个整数a,b,c,d,编写程序,将它们按从大到小顺序输出。
#include<stdio.h>main(){ int a,b,c,d,t;scanf("%d%d%d%d",&a,&b,&c,&d);if(a<b) {t=a;a=b;b=t;}if(a<c) {t=a;a=c;c=t;}if(a<d) {t=a;a=d;d=t;}if(b<c) {t=b;b=c;c=t;}if(b<d) {t=b;b=d;d=t;}if(c<d) {t=c;c=d;d=t;}printf("%4d%4d%4d%4d",a,b,c,d);}2.据所输入的3条边长值,判断它们能否构成三角形,如能构成,再判断是等腰三角形、直角三角形还是一般三角形?源程序:#include<stdio.h>#include "math.h"main(){float a,b,c,s,area;scanf("%f%f%f",&a,&b,&c);if((a+b>c)&&(a+c>b)&&(b+c>a)&&(fabs(a-b)<c)&&(fabs(a-c)<b)&&(fabs(b-c )<a)){if(a==b&&b==c)printf("等边三角形");else if(a==b||b==c||a==c)printf("等腰三角形");else if((a*a+b*b==c*c)||(a*a+c*c==b*b)||(b*b+c*c==a*a))printf("直角三角形");else printf("一般三角形");}else printf("不能组成三角形");}3.输入一个整数,如果能被3,4,5同时整除,则输出“YES”,否则输出“NO”。
C语言练习题真答案(汇总版)
0在C语言中,合法的字符常量是( D ).之迟辟智美创作A.'字'B."A"C."ABC"D.'\x41'1下面叙述正确的是(B).A.法式中必需包括有输入语句B.变量按所界说的类型寄存数据C.main函数必需位于文件的开头D.每行只能写一条语句2毛病的叙述是(D).A.一个C语言源法式可由一个或多个函数组成B.若一条语句较长,也可分写在下一行上C.C法式必需包括一个main()函数D.构成C语言源法式的基本单位是算术表达式3(C)是关于C语言数据类型的正确叙述.A.变量必需先界说后使用B.不允许使用空类型C.枚举类型不是基本类型D.数组其实不是构造类型4main( )函数的位置(B).A.必需在自界说函数前面B.可以在自界说函数后面C.必需位于法式的最前面D.必需在自界说函数后面5C语言函数体由(C)括起来.A.< >B.( )C.{ }D.[ ]6(A)是不正确的叙述.A.注释说明只能位于一条语句的后面B.C源法式的基本组成单位是函数C.C源法式可由一个或多个函数组成D.每条语句最后必需有一个分号7一个C语言源法式是由(B).A.一个主法式和若干子法式组成B.函数组成C.若干过程组成D.若干子法式组成8结构化法式设计的三种基本结构是(C).A.函数结构、判断结构、选择结构B.平行结构、嵌套结构、函数结构C.顺序结构、选择结构、循环结构D.判断结构、嵌套结构、循环结构9C源法式的调试是指对源法式进行(C).A.录入与编纂B.查错与编译C.查错与排错D.连接与运行10C语言中,可将一系列语句置于(C)从而构成复合语句.A.一对尖括号"< >"之间B.一对圆括号"( )"之间C.一对花括号"{}"之间D.一对方框号"[ ]"之间11构成C源法式的基本单位是(D).A.语句B.变量C.运算符D.函数12以下叙述中正确的是(A).A.C源法式中注释部份可以呈现在法式中任意合适的处所B.一对花括号"{}"只能作为函数体的定界符C.C源法式编译时注释部份的毛病将被发现D.构成C源法式的基本单位是函数,所有函数名都可以由用户命名13下面叙述正确的是(D).A.每行最多只能写两条语句B.法式中必需含有自界说函数C.main()函数必需位于源法式文件的开头D.所有语句都必需以分号";"结束14下面叙述毛病的是(B).A.若一条语句较长,可分写在下一行或多行上B.构成C语言源法式的基本单位是语句C.C源法式中年夜、小写字母是有区另外D.一个C源法式可由一个或多个函数组成15(A)是关于C语言数据类型的正确叙述.A.枚举类型不是基本类型B.数组不是构造类型C.变量使用前应界说相应的数据类型D.不允许使用空类型16C源法式中main()函数的位置(C).A.必需位于法式的最前面B.必需在系统库函数后面C.可以在自界说函数后面D.必需在自界说函数前面18下面叙述毛病的是(D).A.C源法式可由一个或多个函数组成B.C源法式必需包括一个main()函数C.一个C源法式的执行是从main()函数开始,直到main()函数结束D.注释说明部份只能位于C源法式的最前面20C语言的下列运算符中,优先级最高的运算符是(A).A.++B.+=C.||D.!=21(D)为正确的用户标识符.A.structB.5fC.D._for22C语言基本数据类型包括(B).A.整型、实型、逻辑型B.整型、实型、字符型C.整型、字符型、逻辑型D.整型、实型、字符串型23(A)为合法的常量.A.52686LB.E-7C.D.'E12'24(C)为正确的变量名.A.-k15B.intC.k_5D.25(D)为正确的字符常量.A.''\\''B."\24m"C."c"D.'M'26(C)为非法的字符串常量.A." "B."s"C.'efg'D."26'62"27C语言整型数据在内存中的代码是用(C)暗示的.A.原码B.反码C.补码D.BCD码28以下选项中,合法的实型常数是( B ).A.E-3B..2E1C.D.29下列C语言合法的数据类型关键字是(B).A.DoubleB.unsignedC.integerD.Char30Turbo C中,int型数据占用的字节数(B).A.由用户自己界说B.为2个字节C.是任意的D.即是所用计算机的字长31Turbo C中,基本数据类型存储空间长度的排列顺序是(A).A.char<int<long int<float<doubleB.char=int<long int<float<doubleC.char<int<long int=float=doubleD.char=int=long int<float<double32以下叙述中正确的是(A).A.字符常量用一对单撇号' '作为单个字符的定界符B.字符常量和字符串常量一样,都是用双引号括起来C.字符常量存储时,自动在字符后加一个字符结束符号'\0'D.字符常量和字符串常量所分配的内存空间年夜小是一样的33(B)为正确的用户标识符.A.3_rowB.max_atC.unionD.min-534C语言的基本数据类型包括(A).A.整型、实型、字符型B.整型、实型、空类型C.整型、字符型、指针型D.整型、实型、逻辑型35(D)为合法的常量.A.5,326B.C.'b_k'D.1.23E+836(D)为正确的变量名.A.5_proB.caseC.elseD.pro_537(C)为正确的字符常量.A.'bcd'B.'\084'C.'@'D.'165'38(A)为非法的字符串常量.A.'123'B."case"C."056"D." "40已知'A'的ASCII码的十进制值为65,'0'的ASCII码的十进制值为48,则以下法式运行结果是(A).main(){ char ch1,ch2;ch1='A'+'5'-'3';ch2='A'+'6'-'3';printf("%d,%c\n",ch1,ch2); }A.67,DB.C,DC.C,68D.67,6841若有界说 int m=6; 则正确的赋值表达式是(C).A.m*7B.m*5=8C.m-=m*6D.double(-m)42语句 k=(m=5,n=++m); 运行之后,变量k、m、n的值依次为(D).A.5,5,6B.5,6,5C.6,6,5D.6,6,643语句 x=5%4+(4/5); 运行之后,整型变量x的值为(A).A.1B.2C.3D.044(B)语句符合C语言语法.A.float z=28,int x,y=18;B.int x=25,y=25,z=25;C.int x=25:y=25:z=25;D.int x+y=z;45若有界说int a,x; 则语句a=(x=8,x+8); 运行后,变量a、x的值依次为(A).A.16, 8B.8, 8C.16, 16D.8, 1646若变量 m, n, t已界说且赋予初值,则正确的表达式是(B).A.m=m+1=t-nB.m=6+n+t,m++C.m=m\2D.m=int(5.6%4)47若有界说:int a,b; float x,则以下不符合C语言语法的表达式是(A).A.x%7B.x/=a-bC.a=b=2D.x=(float)a/b48若有界说:int m=4,n=5;float k;,则以下符合C语言语法的表达式是(B).A.(m+n)*=kB.m=(n==5)C.k=float(n)/mD.49若有界说:int a=6; 则语句 a*=a-=a/=3; 运行后,a的值是(B). A.10B.0C.34D.2450下面关于C语言变量的叙述中,毛病的是(A).A.可以用define关键字界说变量B.变量名用年夜小写字母是有区另外C.C语言允许分歧基本类型的变量之间进行混合运算D.C语言中要求对变量作强制界说的主要理由是:便于确定类型和分配空间51若有界说:int a=5,b=2; 则表达式b= (a!=5)的值为(B).A.5B.0C.3D.252逗号表达式 (a=15,a*4),a+15 的值为(B).A.15B.30C.75D.6053若有界说:int b=-15; 则(A)为正确的赋值表达式.A.b+=b*3B.b=*5C.*b=6D.b+10=-554若有界说:int x,a,b; 语句x=(a=2,b=3,a+b); 运行后,x、a、b的值依次为(C).A.2 3 5B.3 2 5C.5 2 3D.5 3 255若有界说:int a,b=5; 语句a=(b/2)+b%2; 运行后,a的值为( B ).A.0B.3C.4D.256(C )语句符合C语言语法.A.int a=2,b+=a;B.int a=b=2,c=5;C.float x=2.3,b,c;D.,int i,j=6;57若有界说:int a=3; 语句a+=a-=a*a; 运行后,a的值为( C ).A.0B.-3C.-12D.-658若有界说 int x=1,y=2,n=3; 则( A )为正确的表达式.A.x=y*3,y=(x+n)/yB.x=nyC.float(y/n)D.(x+y)(y+n)60下列语句中,符合C语言语法的赋值语句是( C ).A.a=7+b+c=a+7;B.a=7+b++=a+7;C.a=7+b,b++,a+7;D.a=7=b,c=a+7;61( A )是正确的叙述.A.与 5/6 等价B.'G' 与"G" 等价C.5/6 与等价D.++3与4 等价62下面叙述中,毛病的是( D ).A.C语言中的表达式求值,是按其运算符的优先级先高后低的次第进行B.自增与自减运算符的结合方向为“自右至左”C.关系运算符的优先级低于算术运算符D.C语言算术运算符不包括模运算符“%”63( C )是正确的叙述.A.表达式"m"+"M" 是合法的B.若变量x, y为整型,则(a+b)++是合法的C.强制类型转换运算的优先级高于算术运算D.表达式 'm' * 'n' 是分歧法的64若有界说 int i=1,j=9; 则表达式 (++j)*(i--) 的值为( B ).A.0B.10C.9D.865设整型变量x为7,使整型变量y不为2的表达式是( A ).A.y=x%3B.y = x/3C.y =(++x)/3D.y=8-(--x)66若已界说 int a=3,b=2,c=1; 则语句 ++a||++b&&++c; 运行后b的值为( D ).A.0B.3C.1D.267若有界说:int i=5,j=4;则语句 i/=++j; 运行后i的值为( B ).A.10B.1C.D.068若已界说:int a=2,b=2; 则表达式 (a+(b++), b) 的值是( A ).A.2B.3C.4D.669若有界说:int r,x=245; 则语句 r=x/100%9; 运行后r的值为( A ).A.2B.5C.0D.2770若已界说:int i=6,t; 则语句 t=3+(--i); 运行后t的值为( C ).A.9B.7C.8D.571C语言的 % 运算符按运算对象的个数属( C ).A.单目运算符B.四目运算符C.双目运算符D.三目运算符72若已界说:int a=5,b=9,c=6; 则语句 b++; ++c; a=b-c; 运行后a的值为( B ).A.5B.3C.2D.473下面叙述正确的是( B ).A.2/3 与 2%3 等价B.5/(int)4.0 与 5/4 等价C.++2 与 3 等价D.++2与--3 等价74下面叙述毛病的是( A ).A.算术运算符中只有"*"、"/"优先级高于关系运算符B.模运算符"%"是C语言基本的算术运算符C.自加和自减运算符只能用于变量,而不能用于常量或表达式D.算术运算符中不包括"="运算符75下面叙述正确的是( A ).A.C语言中整型与字符型变量的混合运算表达式的结果是整型B.(3+9)++ 是正确表达式C.模运算符"%"两边运算数的数据类型是任意的D."abc"+"xxx"是正确表达式76若有界说:int i=3,j=6; 则表达式(--i)*(j++)的值为( C ).A.18B.15C.12D.1077若有界说:int a,b=6; 语句a=--b; 运行后,a、b的值分别是( C ).A.5 6B.6 5C.5 5D.6 678若有界说:int x,y,z; 语句x=(y=z=3,++y,z+=y); 运行后,x的值为( C ).A.6B.8C.7D.380以下法式运行时,若从键盘输入5,则输出结果是(D ). main() { int a; scanf("%d",&a); if(a++>5) printf("%d\n",a); else printf("%d\n",a--); }A.7B.4C.5D.681若已界说float x; 要从键盘输入数据36.582给变量x,则应选用( B )语句.A.scanf("%2.3f",&x) ;B.scanf("%6f",&x) ;C.scanf("%6.3f",&x) ;D.scanf("%5.3f",&x) ;82若已界说double y; 拟从键盘输入一个值赋给变量y,则正确的函数调用是( C ).A.scanf("%d",&y) ;B.scanf("%7.2f",&y) ;C.scanf("%lf",&y) ;D.scanf("%ld",&y) ;83已有界说 char s; 使用scanf( )函数输入一个字符给变量s,不正确的函数调用是( D ).A.scanf("%c",&s) ;B.scanf("%d",&s) ;C.scanf("%u",&s) ;D.scanf("%lf",&s) ;84函数putchar( ) 的功能是向终端输出( A ).A.一个字符B.多个字符C.一个关系表达式D.一个实型变量值85若已界说int a=11; 执行以下语句后的输出结果是( B ). printf("a=%d,a=%o,a=%x\n",a,a,a) ;A.a=11, a=11, a=bB.a=11, a=13, a=bC.a=11, a=13, a=cD.a=11, a=12, a=1386若有界说int m=4321,n=123,k=21; 语句printf("%4d+%3d+%2d",m,n,k); 执行后的输出结果是(C ).A.B.43211232C.4321+123+21D.432+123+0287已有如下界说和输入语句,char c1,c2;int x; scanf("%c%d%c",&c1,&x,&c2); 若要求x、c1、c2的值分别为9、'K'和'H',正确的数据输入是( A ).A.K9HB.K 9 HC.K9 HD.9KH88以下法式段的运行结果是( B ). int a=1; printf("%d, %d, %d\n", a, ++a, a++);A.3,3,1B.2, 2, 1C.1, 2, 3D.3, 2, 189以下法式的运行结果是( D ).void main(){ int a=65;char c='A';printf("%d+%c=%d\n",a,c,a+c); }A.A+A=AAB.65+A=65AC.65+65=130D.65+A=13090若已界说:int x=7;float y=7.0; 以下语句中能输出正确值的是( B ).A.printf("%d %d",x,y);B.printf("%d %.3f",x,y);C.printf("%.3f %.3f",x,y);D.printf("%.3f %d",x,y);91putchar函数可以向终端输出一个( A ).A.字符或字符型变量值B.整型变量表达式值C.实型变量值D.字符串92若已界说:int a=6;float b=1.5; 要求输出形式为: 6 * 1.50=9.00 ,应选用的正确输出语句是( B ).A.printf("%d * %f=%f",a,b,a*b);B.printf("%d * %.2f=%.2f",a,b,a*b);C.printf("%d * %d=%.2f",a,b,a*b);D.printf("%.2f * %.2f=%.2f",a,b,a*b);93若有界说float x; 要从键盘输入数据6.02赋给x,则应选用(D )语句.A.scanf("%8.2f",&x);B.scanf("%1.2f",&x);C.scanf("%4.2f",&x);D.scanf("%f",&x);94只能向终端输出一个字符的是( D ).A.printf()函数B.scanf()函数C.getchar()函数D.putchar()函数95若有语句 int a; char c; scanf("%3d%c",&a,&c); 为将整数135赋给a,字符'6'赋给c,正确的数据输入方式是(B ).(说明:<CR>代表换行,__代表空格)A.135__6<CR>B.1356<CR>C.135<CR>6<CR>D.135__6__96getchar()函数的功能是获取终端输入的( B ).A.多个字符B.一个字符C.一个实型变量值D.一个整型变量表达式97若有界说 int a=8,b=5; 要实现输出形式为: 8*5=40 ,正确的printf()函数调用语句是( D ).A.printf("a*b=%d\n",a*b);B.printf("a*b=a*b\n");C.printf("%d*%d=a*b\n",a,b);D.printf("%d*%d=%d\n",a,b,a*b);98若有界说:char c1='A',c2='B'; 语句printf("%d+%d=%d",c1,c2,c1+c2);运行后的结果为(D ).(说明:'A'的ASCII码的十进制值为65)A.A+B=131B.65+66=ABC.A+B=ABD.65+66=131100有以下法式:main(){ int c;while((c=getchar())!= '\n'){ switch(c-'2'){ case 0 :case 1 : putchar(c+4);case 2 : putchar(c+4); break;case 3 : putchar(c+3);default: putchar(c+2); break; } }printf("\n"); } 当输入:247<回车>,法式的输出结果是( B ).A.689B.6689C.66778D.66887101若已界说 int x=5,y=9,z; 语句 z=x>=y; 运行后z的值为( C ).A.1B..t.C.0D..f.102判定逻辑值为“真”的最准确叙述是( D ).A.1B.年夜于0的数C.非0的整数D.非0的数103若已界说 int x=-16,y=-12,z; 语句z=x<=y; 运行后z的值为( B ). A..t.B.1C..f.D.0104能正确暗示数学关系式 100≤s<300的表达式为( C ).A.(s>=100) & (s<300)B.100<= s<300C.(s>=100) && (s<300)D.(s>=100) and (s<300)105若界说 int a=2,b=3; 则表达式 !a||b 的值为( B ).A.0B.1C.2D.3106若界说 int a=-5,b=-8,c=-12; 则表达式 a>=b||b<c 的值为( D ).A.变量i的值B.变量j的值C.0107下列表达式( C )不能用来判断整型变量x中的值是否为奇数.A.x%2==1B.!(x%2==0)C.!(x%2)D.x%2108若有界说:int a=3,b=2,c=3; 则值为0的表达式是( D ).A.(a-b)==(c/b)B.a>=cC.c-b||a+b&&(b*c-a-c)D.(b*c-a-c)&&(b*c-a-b)109若已界说:int x=4,y=2,z=0; 则表达式 (x-y<=y)|| (y=z)的值是( A ).A.1B.0C.2D.4110若有界说:int a=3,b=2,c=1,k; 则表达式k=a>b>c的值是( A ). A.0B.C.2D.3111以下运算符中优先级最高的是( D ).A.<=B.&&C.||D.!112执行以下语句后,b的值是( A ).int a=5,b=6,c=1,x=2,y=3,z=4;(a=c>x) || (b=y>z);A.0B.1C.-1D.6113x的值在-20至-5之间为“真”,否则为“假”的正确逻辑表达式为( B ).A.-20<x<-5B.x>-20 && x<-5C.!(x>-20) && !(x<-5)D.-5<x<-20114若有界说:int a; 则表达式(B )不能用来判断a值为奇数是“真”,偶数是“假”.A.a%2==1B.!(a%2)C.a%2D.!(a%2==0)115若有界说:int a=1,b=2,c=3,d=4,t=2,k=2; 语句(t=a<b)||(k=c<d); 运行后,k的值为( A ).A.2B.1C.0D.-116若有界说:int x=1,y=2,z=3; 则表达式( A )的值为0.A.!((x<y) && z)B.x>y || x<zC.x<=yD.x|| (y+z && y-z)117若有界说: int a=3,b=5,c=8; 则表达式 !(a-b) || (c-b) 的值为( A ). A.1B.0C.2D.3118若有界说: int a; 且表达式 !a的值为0,则表达式( A )的值为1.A.a!=0B.a==0C.a=0D.!(a<0 || a>0)120以下法式运行后,a的值是( C ).main(){ int a,b;for(a=1,b=1;a<=100;a++){ if(b>=20) break;if(b%3==1) { b+=3; continue; }b-=5; } }A.101B.100C.8D.7121已界说 double k=3.6; 则正确的赋值表达式是( D ).A.k=double(-3.6)B.k%3C.D.k+=k-=(k=1.2)*(k=3)122已界说 char c = 'A' ; 则正确的赋值表达式是( B ).A.c=\028B.c=(c++)%4C.c+1=66D.c+=127--123已界说 int m ='A'; 则正确的表达式是( C ).A.2*m=m++B.m=int(-3.2)C.m%3D.m=m-m=m-5124设已界说 float a=2.0,b=3.0; 使a值为5.0的表达式是( A ).A.a+= bB.C.D.125若已界说 int m=7;float k=5.5; 则表达式 k+ m%2/4 的值为( D ).A.B.C.D.126若已界说int a=3,b=3,x=1,y=2; 表达式(a=y>x)&&(x=b>a) 的值是( B ).A.6B.1C.9D.0127若有界说:int a=2,b=3; float x=5; 则表达式x*b/a的值是( A ). A.B.7C.6D.5128若有界说:int x=8; float y=130;char z='A'; 则表达式x+z%(int)y的值是( C ). [已知'A'的ASCII码的十进制值为65]A.运行时发生毛病信息B.8C.73D.129若已界说:int m=7,n=4; float x=3.0,y=8.0,k; 则执行语句k=m/2+n*x/y;后,变量k的值是( C ).A.3B.4C.D.5130若有界说:float x=2,y=4,h=3; 下列表达式中与计算结果不相符的是( C ).A.(x+y)*h/2B.(x+y)*h*1/2C.(1/2)*(x+y)*hD.h/2*(x+y)131表达式2+sqrt(16.0)/4结果的数据类型是( A ).A.doubleB.intC.charD.void132若有界说:int a=4,b=5,c=6; 则表达式 (1.0*a+b)/c的值是( A ). A.B.1C.4D.133下列运算符中优先级最低的是( A ).A.=B.!C.>D.*134若有界说:float x=3.5,y=3.6; 则表达式( A )的值为6.A.(int)x+(int)yB.x+yC.(int)(x+y)D.int(x+y)135若有界说:int x; char c='A'; 则正确的赋值表达式是(A ).(说明:'A'的ASCII码的十进制值为65,'a'的ASCII码的十进制值为97)A.x=c+32B.x=c+'ABC'C.x=c+'CBA'D.x='ABC'136若有界说:float x=2,y; int a=3; 语句y=1*(x+a)/3; 运行后,y的值为( D ).A.B.0C.D.137若有界说:float x=3.5,y=5.5; 则表达式( B )的值为2.A.(x+y)%7B.(int)(x+y)%7C.int(x+y)%7D.(int)x+y%7138若有界说:int a=6,b=7,k=0,t=1; 语句 (k=a<b) && (t=a==b); 运行后,k、t的值分别是(D ).A.0 0B.1C.0 1D.1 0140以下法式段的运行结果是( D ). int x=3; do{ printf("%3d, ", x-=2 ); }while(!(--x));A.1B.30C.死循环D.1, -2141以下法式运行时,若从键盘输入6,则输出结果是(A ).void main(){int x;scanf("%d",&x);if (x-->6) printf("%d\n",x);else printf("%d\n",--x); }A.4B.5C.6D.3142以下法式的运行结果是( C ).void main(){int m,n=1,t=1;if(t== 0) t=-t;else m=n>=0?7:3;printf("%d\n",m); }A.3B.-C.7D.143对整型变量a,赋值语句 a=(a%3==0?1:0); 与(D )语句不等价.A.if (a%3= =0) a=1; else a=0;B.if (a%3!=0) a=0; else a=1;C.if (a%3) a=0; else a=1;D.if (a%3) a=1; else a=0;144以下法式运行的结果是(B ).void main(){int x,y,z,a;x=y=z=1;a=15;if(!x) a--;else if(y) ;if(z) a=3;else a+=4;printf("%d\n",a); }A.15B.3C.19D.14145若已界说 int a=1,b=2,t=3; 则执行以下法式段后变量a,b,t的值分别为(A ). if(a<b) { t=b; b=a; a=t; }A.a=2,b=1,t=2B.a=2,b=1,t=C.a=2,b=1,t=3D.a=3,b=1,t=2146以下法式段运行后变量k的值为( C ).int a=3,b=2;int k;k=(--a==b++)?a:b+1;A.0B.1C.2D.3147以下法式的运行结果是( C ).void main(){ int n=9;switch(n--){ default: printf("%d ",n++);case 8:case 7: printf("%d ",n);break;case 6: printf("%d ",n++);case 5: printf("%d ",n); } }A.8B.7C.8 9D.8 7148以下法式的运行结果是( C ).void main(){ int n=8;switch(n--){ default: printf("%d ",n++);case 8:case 6: printf("%d ",n);break;case 4: printf("%d ",n++);case 2: printf("%d ",n); } }A.8B.8 6C.7D.8 7149以下法式的运行结果是( D ).void main( ){ int a;if(a=6)printf("%d\n",a);else if(a>6) printf("%d\n",a+2);else printf("%d\n",a+3); }A.运行时发生毛病信息B.9C.8D.6150若有界说:int x=10,y=8,a; 则执行语句a=((--x==y)? x: y);后,变量a的值是( A ).A.8B.9C.10D.0151若有界说: int a=2,b=3,c=1; 则以下法式段的运行结果是( D ). if(a>b)if(a>c) printf("%d ",a);else printf("%d ",b);printf("%d ",c);A.3 1B.2C.3152以下条件语句中(其中s1和s2分别暗示C语言的语句),(D)与其他三条语句不等价.A.if(a) s1; else s2;B.if(a == 0) s2; else s1;C.if(a != 0) s1; else s2;D.if(a == 0) s1; else s2;153以下法式段运行时,若从键盘输入5,则运行结果是(D ).int a,y=10;scanf("%d",&a);if (a>10) y=a+6;printf("%d\n",y+a);A.10B.1C.16D.15154以下法式的运行结果是(B ).void main(){int a,b=2,c=6;a=3;if(a>6) a=a+b;else if(a==6) b=a+c;else a=b+c;printf("%d\n",a); }A.5B.8C.6D.9155若有界说:int x,a; 赋值语句a=(x%3==0)?0:1; 与(B )语句不等价.A.if (x%3!=0) a=1; else a=0;B.if (x%3) a=0; else a=1;C.if (x%3==0) a=0; else a=1;D.if (!(x%3==0)) a=1; else a=0;156以下法式段的运行结果是( C ).int s=15;switch(s/4){case 1: printf("One ");case 2: printf("Two ");case 3: printf("Three ");default: printf("Over "); }A.ThreeB.Two OverC.Three OverD.One Over157以下法式段的运行结果是( C ).int s=15;switch(s/4){default: printf("Over ");case 1: printf("One ");break;case 2: printf("Two "); }A.TwoB.Over TwoC.Over OneD.One158以下法式段运行后x的值为( D ). int a=3,b=6,x; x=(a==b)?a++:--b;A.4B.3C.6D.5160下列法式段中,非死循环的是( A ).A.int i=100; while(1) { i=i%100+1; if(i>=100) break; }B.int k=0; do{ ++k; }while(k>=0);C.int s=10; while(++s%2+s%2) s++;D.for(;;)161若已界说 int a; 不会发生死循环的语句是(C ).A.for( ; ;a+= 2);B.for(a=10; ;a--);C.for( ;(a=getchar())!= '\n'; );D.while(-1) {a++;}162在循环语句的循环体中,break语句的作用是( B ).A.继续执行break语句之后的循环体各语句B.提前结束循环,接着执行该循环后续的语句C.结束本次循环D.暂停法式的运行163以下法式段运行后,循环体中的 n+=3; 语句运行的次数为( A ). int i,j,n=0;for(i=1;i<=3;i++){for(j=1;j<=i;j++){n+=3; printf("%d\n",n); } }A.6次B.9次C.12次D.1次164do…while循环与while循环的主要区别是( D ).A.while循环体至少无条件执行一次,而do…while循环体可能都不执行B.do…while循环体中可使用continue语句,while循环体中不允许呈现continue语句C.do…while循环体中可使用break语句,while循环体中不允许呈现break语句D.do…while循环体至少无条件执行一次,而while循环体可能都不执行165以下法式段运行后,循环体运行的次数为( A ). int i=8,a=0;for ( ;i<8;i++)a+= i;A.0次B.1次C.8次D.无限166以下法式段运行后变量a的值为( C ).int i=1,a=0;for( ;i<3;i++){ continue; a+=i; }A.6B.3C.0D.5167有以下法式:void main(){ int i;for(i=1; i<=3; i++)switch(i){ case 1: printf("%d", i);。
2013秋C语言试卷标准答案(A卷)-20130114
一、单项选择题,每题 2 分,共 15 题。
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. D. 具有前述三个特征 B. _123 C. C. D. D. 80 A. a[10]=2; C. &a[i]和 a[i] C. b=fun(a); D. 嵌套调用和递归调用均可。 B. 地址 C. int *(q[5]); 3.0 x>10&x<20 else 总是与其之前最近的 if 配对
(共 35 题。
1.答案:m/10%10*100+m/100*10+m%10 2.答案:0 3.答案:36 4.答案:11 5. 答案:3
(共 15 分)
四、程序改错题, 每题 5 分。
(共 10 分)
注:共 4 题,每题中存在 5 个错误。限选 2 题。题目间评分不累计。 1.题目:在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列。
a=0; //改为:sum=0; //改为: for(i=0;i<3;i++) //改为:scanf(“%d”,&a[i][j]); //改为:sum=sum+a[i][i]; 或 sum+=a[i][i]; //改为:printf("sum=%d\n",sum);
for(i=0;i<3;i++);
#define N=11
//改为:#define N 11 // 改为:for(i=N-2;i>=0;i--)
for(i=N-1;i>=0;i--)
a[i]=a[i-1];//改为:a[i+1]=a[i]; exit;}//改为:break;} for(i=0;i<=N;i++) //改为:for(i=0;i<N;i++)
C语言试题练习及答案(都是历年的考题)
C语言试题练习及答案(都是历年的考题)第一部分:选择题(40分,20小题/套)概述1、下面关于C语言的叙述中,正确的是()A. 每行只能写一条语句B. 程序中必须包含有输入语句C. main函数必须位于文件的开头D. 每条语句最后必须有一个分号 2、下面关于C语言的叙述中,错误的是() A. 若一条语句较长,也可分写在下一行上 B. 构成C语言源程序的基本单位是表达式 C. C语言源程序中大、小写字母是有区别的 D. 一个C语言源程序可由一个或多个函数组成 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. 本程序的第一个函数开始,到最后一个函数结束B. 本程序的main函数开始,到main函数结束C. 本程序的main函数开始,到最后一个函数结束D. 本程序的第一个函数开始,到main函数结束 8、结构化程序设计的三种基本结构是()A. 函数结构、分支结构、判断结构B. 函数结构、嵌套结构、平行结构C. 顺序结构、分支结构、循环结构D. 分支结构、循环结构、嵌套结构 9、调试程序是指对程序进行()A. 编辑B. 编译C. 查错和排错D. 连接10、C语言中,复合语句的构成是将一系列语句置于() A. begin与end之间B. 一对圆括号“()”之间C. 一对花括号“{ }”之间D. 一对方括号“[ ]”之间 11、构成C语言源程序的基本单位是() A. 语句 B. 过程 C. 表达式 D. 函数语法基础12、在C语言中,正确的用户标识符是() A. 3f B. _for C. structD. _f.5113、C语言的基本数据类型包括()A. 整型、实型、字符型B. 整型、实型、字符型、逻辑型C. 整型、字符型、逻辑型 D. 整型、实型、逻辑型 14、以下()是正确的常量A. E-5B. 1E5.1C. ?a12?D. 32766L 15、以下()是正确的变量名A. a.beeB. �Cp11C. intD. p_11 16、以下()是正确的字符常量A. “c”B. ?//”C. ?W?D. “\\32a” 17、以下()是不正确的字符串常量A. ?abc?B. “12?12”C. “0”D. “ “ 18、C语言的整型数据在内存中的存储形式是() A. 原码 B. 反码 C. 补码 D. ASCII码19、以下()是正确的浮点数A. e3B. .62C. 2e4.5D. 123 20、下列不属于C语言关键字的是()A. continueB. integerC. staticD. signed 21、C语言的字符型数据在内存中的存储形式是() A. 原码 B. 补码 C. 反码 D.ASCII 22、在C语言中,变量所分配的内存空间大小是() A. 由变量的类型决定B. 由用户自己决定C. 任意的D. 均为两个字节23、若有定义:int a=2;则正确的赋值表达式是()A. a-=(a*3)B. double(-1)C. a*3D. a*4=3 24、语句x=(a=3,b=++a);运行后,x、a、b的值依次为() A. 3,3,4 B. 4,4,3 C.4,4,4 D. 3,4,3 25、语句a=(3/4)+3%2;运行后,a的值为() A. 0 B. 1 C. 2 D. 326、以下四项中,符合C语言语法的语句是()A. int a+b=c;B. int a=12:b=12:c=12;C. int a=12,b=12,c=12;D. int a,b=12,float c=2127、若有定义:int x,a;则语句x=(a=3,a+1);运行后,x、a的值依次为() A.3,3 B. 4,4 C. 4,3 D. 3,428、若变量已正确定义并赋值,符合C语言语法的表达式是()A. a=8+b+c,a++B. a=3aC. int(12.3%4)D. a=a+1=c+b 29、若有定义:int a,b;double x;则以下不符合C语言语法的表达式是() A. x%(-3) B. a+=-1 C. a=b=2 D. x=a+b30、若有定义:int x=2,y=3;float i;则以下符合C语言语法的表达式是() A.x=x*3=2 B. x=(y==1) C. i=float(x) D. i%(-3) 31、若有定义:int x;则语句x=(2*3)+6%5;运行后,x的值是()A. 8B. 7C. 6D. 532、下面关于C语言变量的叙述中,错误的是()A. 可以用const关键字定义变量B. 在C程序中,SUM和sum是不同的变量C.变量名必须由字母或下划线组成 D. 变量的类型确定了变量的取值范围233、若有定义:int x=5,y=6;则表达式x=(y= =6)的值为() A. 5 B. 1C. 6D. 0 34、下面叙述正确的是()A. 2/3与2.0/3.0等价B. (int)2.0/3与2/3等价C. ++5与6等价D. ?A?与”A”等价 35、下面叙述中,错误的是()A. C语言基本的算术运算符不包含模运算符”%”B. 算术运算符的优先级高于关系运算符C. 自加和自减运算符的结合方向是”自右向左”D. C语言规定在表达式求值时,按其中运算符的优先级先高后低的次序进行 36、下面叙述正确的是()A. 强制类型转换运算的优先级高于算术运算B. 若a和b是整型变量,(a+b)++是合法的 C. ?A?*?B?是不合法的 D. “A”+”B”是合法的 37、若有定义:int i=1,j=5;则表达式(++j)*(i--)的值为() A. 1 B. 0 C. 6 D. 738、设整型变量a为5,使b不为2的表达式是()A. b=(++a)/3B. b=6-(--a)C. b=a%2D. b=a/239、若有定义:int a=1,b=2,c=3;则语句++a||++b&&++c;运行后b的值为() A. 1B. 0C. 2D. 340、若有定义:int i,j;则表达式(i=2,j=5,i++,i+j++)的值是() A. 7 B.8 C. 9 D. 1041、若有定义:int a,b;则表达式(a=2,b=5,a*2,b++,a+b)的值是() A. 7 B.8 C. 9 D. 1042、若有定义:int i=2,j=5;则表达式(i+1,j+1,(++i+(j--))的值为() A. 8B. 6C. 7D. 543、若已定义:int i=3,k;则语句k=(i--)+(i--);运行后k的值为() A. 4B. 5C. 6D. 744、C语言的运算符按运算对象的个数可以分为() A. 单目运算符一种 B.单目和双目运算符C. 单目、双目和三目运算符D. 单目、双目、三目和四目运算符45、若已定义:float m;拟从键盘输入135.78这一数据给变量m,则应选用的语句是()A. scanf(“%5.2f”,&m); B. scanf(“%3.2f”,&m);C. scanf(“6.2f”,&m);D. scanf(“o”,&m);46、已知double a;使用scanf()函数输入一个数值给变量a,正确的函数调用是()A. scanf(“%ld”,&a);B. scanf(“%lf”,&a);C. scanf(“%c”,&a);D. scanf(“%u”,&a);47、已知char a;使用scanf()函数输入一个字符给变量a,不正确的函数调用是()A. scanf(“%d”,&a);B. scanf(“%lf”,&a);C. scanf(“%c”,&a);D.scanf(“%u”,&a); 48、putchar()函数的功能是向终端输出()A. 多个字符B. 一个字符C. 一个实型变量值D. 一个整型变量表达式 49、以下程序段运行后的输出结果是() int k=11;printf(“k=%d,k=%o,k=%x\\n”,k,k,k);A. k=11,k=13,k=cB. k=11,k=12,k=133C. k=11,k=13,k=bD. k=11,k=13,k=a50、若有定义:int x=1234,y=123,z=12;则语句printf(“M+=+-”,x,y,z);运行后的输出结果为()A. 123412312B. 12341234123412341231231231212C. 1234+1234+1234D. 1234+123+12 51、已有如下定义和输入语句,int a;char c1,c2;scanf(“%d%c%c”,&a,&c1,&c2);若要求a、c1、c2的值分别为10、A和B,正确的数据输入是() A. 10AB B. 10 A B C. 10A B D. 10 AB 52、以下程序段的运行结果是()int a=0,b=0,c=0; if(a&&++b) c++;printf(“%d,%d\\n”,b,c);A. 0,0B. 1,2C. 2,2D. 1,0 53、以下程序的运行结果是()void main() {int a=65; char c=?A?;printf(“%x,%d”,b,c); }A. 65,aB. 41,aC. 65,65D. 41,6554、若已定义:int a=5;float b=63.72;以下语句中能输出正确值的是() A.printf(“%d%d”,a,b); B. printf(“%d/”,a,b); C. printf(“//”,a,b);D. printf(“/%d”,a,b); 55、运行以下程序段时编译出错,其原因是()char c1='8',c2='2021'; printf(\A. c2是字符变量,只能赋以字符常量,不能赋以字符串常量B. 字符串要用“2021“表示,而‘2021’不是字符串表示 C. ‘2021’只能赋值给字符数组 D. 字符变量不能用%d格式输出56、若已定义:int a=3,b=15,c;则语句c=a>b;运行后c的值为() A. 1 B.0 C. t D. f57、在C语言中,判定逻辑值为“真“的最正确的叙述是() A. 1 B. 非0的数 C. 大于0的数 D. 非0的整数 58、若已定义:int a=-36,b=-30,c;则语句c=a59、能正确表示数学关系式800>=y>=500的C语言表达式为() A. (y<=800)&&(y>=500) B. (y<=800)AND(y>=500) C. 800>=y>=500 D. (y<=800)&(y>=500) 60、若有定义:int x=3,y=4;则表达式!x||y的值为()4A. 1B. 0C. 3D. 4感谢您的阅读,祝您生活愉快。
2013 上半年 C语言练习题汇总答案
1 对以下说明语句的正确理解是( B )。
int a[10]={6,7,8,9,10};
A)将 5 个初值依次赋给 a[1]至 a[5]
B)将 5 个初值依次赋给 a[0]至 a[4]
C)将 5 个初值依次赋给 a[6]至 a[10]
D)因为数组长度与初值的个数不相同,所以此语句不正确
2 要定义一个 int 型一维数组 art,并使其 各元素具有初值 89,-23,0,0,0,
C)实参可以是任意类型
D)形参应与其对应得实参类型一致
4、C语言规定,函数返回值的类型是由( D )。 A)return 语句中的表达式类型所决定
B)调用该函数是的主调函数类型所决定
C)调用该函数时系统临时决定
D)在定义该函数时所指定的函数类型所决定
5、以下错误的描述是( C )。
函数调用可以
A)出现在执行语句中
D)如果形参与实参的类型不一致,以实参类型为准(
形参与实参类型必须一致)
7、对于某个函数调用,不用给出被调用函数的原形的情况是( D )。
A)被调用函数是无参函数
B)被调用函数是无返回值的函数
C)函数的定义在调用处之前
D)函获得的定义在别的程序文件中
8、已知函数 abc 的定义为:
void abc() {......} 则函数定义中 void 的含义是( A )。
27、
28 执行下列语句后,a 的值为( C
int a=12, b=7;
m(int a,int b)
{
a=b;
}
main()
{
m(a,b);
}
A) 0 B) 1
C) 12
). D) 7
c语言真题-试卷答案及解释(2013年3月)
c语言真题-试卷答案及解释(2013年3月)一、选择题(1)B 【解析】N-S图是由Nassi 和Shneiderman 提出的一种符合程序化结构设计原则的图形描述工具。
它的提出是为了避免流程图在描述程序逻辑时的随意性上灵活性。
(2)D 【解析】结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精、模块化及限制使用goto语句,总的来说可使程序结构良好、易读、易理解、易维护。
(3)B【解析】模块的独立程度可以由两个定性标准度量:耦合性和内聚性。
耦合性是衡量不同模块彼此间互相依赖(连接)的紧密程度;内聚性是衡量一个模块内部各个元素彼此结合的紧密程度。
一般来说,要求模块之间的耦合尽可能地低,而内聚性尽可能地高。
(4)D 【解析】需求分析是软件定义时期的最后一个阶段,它的基本任务就是详细调查现实世界要处理的对象(组织、部门、企业等),充分了解原系统的工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。
选项A)软件开发方法是在总体设计阶段需完成的任务;选项B)软件开发工具是在实现阶段需完成的任务;选项C)软件开发费用是在可行性研究阶段需完成的任务。
(5)A 【解析】算法具有5个特性:①有穷性:一个算法必须(对任何合法的输入值)在执行有穷步之后结束,且每一步都可在有限时间内完成,即运行时间是有限的;②确定性:算法中每一条指令必须有确切的含义,读者理解时不会产生歧义;③可行性:一个算法是可行的,即算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现;④输入:一个算法有零个或多个输入,这些输入取自于某个特定的对象的集合;⑤输出:一个算法有一个或多个输出。
(6)D 【解析】在最坏情况下,快速排序、冒泡排序和直接插入排序需要的比较次数都为n(n-1)/2,堆排序需要的比较次数为nlog2n。
(7)B 【解析】由栈"后进先出"的特点可知:A)中e1不可能比e2先出,C)中e1不可能比e2先出,D)中栈是先进后出的,所以不可能是任意顺序。
C语言全部章节习题集(参考答案)
选择结构答案
一、单项选择题
1.B 2.A 3.D 4.C 5.D 6.B 7.C
二、填空题
1. 5 5 4
5 5 4
3 3 4
2. 4 0
3. VeryGood
Good
VeryGood
A. 8 B. 4 C. 2 D. 出错
14、设a=1,b=2,c=3,d=4,则表达式:a<b? a : c<d? a : d的结果为( D )。
A. 4 B. 3 C. 2 D. 1
15、设a 为整型变量,不能正确表达数学关系:10<a<15的 C 语言表达式是( A )。
{ float a,b,temp;
printf("input a and b:");
scanf("%d,%d",&a ,&b);
temp = a; a = b; b = temp;
printf("a=%d , b=%d\n", a , b);
scanf(“%f”,&t);
if(t>=90) ch=’A’;
else if(t>=80) ch=’B’;
24、下列不正确的转义字符是( C )。
A. \\ B. \' C. 074 D. \0
二、填空题:
1、C 语言中的逻辑值“真”是用 1 表示的,逻辑值“假”是用 0 表示的。
2、若x和n都是int型变量,且x的初值为12,n的初值为5,则计算表达式x%=(n%=2)后x的值为 0 。
5、判断变量 a、b 的值均不为 0 的逻辑表达式为a!=0&&b!=0 。
2013年3月计算机二级C语言上机试题题库答案
第一套1. 给定程序中,函数fun的功能是:在形参ss所指字符串数组中,删除所有串长超过k的字符串,函数返回所剩字符串的个数。
Ss所指字符串数组中共有N个字符串,且串长小于M。
1 N2 k3 ss[i]2. 给定程序MODI1.C中函数fun的功能是:逐个比较p、q所指两个字符串对应位置中的字符,把ASCII值或相等的字符依次存放在c所指数组中,形成一个新的字符串。
1 int k=0;2 while(*p||*q)3. 假定输入的字符串中只包含字母和*号。
请编写函数fun,它的功能是:除了字符串前导*号之外,将串中其它*号全部删除。
在编写函数时,不得使用C语言提供的字符串函数。
函数fun中给出的语句仅供参考。
int i=0;char *p=a;while(*p&&*p=='*'){ a[i]=*p;i++;p++;}while(*p){ if(*p!='*'){a[i]=*p;i++;}p++;}a[i]='\0';第二套1. 给定程序中已建立一个带头结点的单向链表,链表中的各结点按结点数据域中的数据递增有序链接。
函数fun的功能是:把形参x的值放入一个新结点并插入到链表中,插入后各结点数据域的值仍保持递增有序。
1 x2 p3 s2. 给定程序MODI1.C中函数fun的功能是:计算正整数num的各位上的数字之积。
1 long k=1;2 num/=103. 请编写函数fun,它的功能是:计算n门课程的平均分,计算结果作为函数返回。
int i;float ave=0.0;for(i=0;i<n;i++)ave=ave+a[i];ave=ave/n;return ave;第三套1. 给定程序中,函数fun的功能是:在形参ss所指字符串数组中,查找含有形参substr所指子串的所有字符串并输出,若没找到输出相应信息。
Ss所指字符串数组中共有N个字符,且串长小于M。
(完整版)C语言程序设计练习题(含程序及参考答案)
C 语言练习题(所提供的源程序均采用自定义函数方式解决,如不采用函数方式,也可直接在main 函数中借鉴该思想编程,因时间有限,所有程序未能一一验证,仅供参考使用) 1、定义一个函数 int fun(int a,int b,int c),它的功能是:若 a,b,c 能构成等边三角形函数返回 3,若能构成等腰三角形函数返回 2,若能构成一般三角形函数返回 1,若不能构成三角形函数返回 0。
#include <stdio.h>int fun(int a,int b,int c){if(a+b>c && b+c>a && a+c>b){if(a==b && b==c )return 3;else if(a==b||b==c||a==c)return 2;else return 1;}else return 0;}void main(){int a,b,c,shape;printf("\nInput a,b,c: ");scanf("%d%d%d",&a,&b,&c);printf("\na=%d, b=%d, c=%d\n",a,b,c);shape =fun(a,b,c);printf("\n\nThe shape : %d\n",shape);}2、编写一个程序,将两个变量的值交换, 例如变量a中的值原为 3,b中的值原为8,程序运行后 a 中的值为8,b中的值为3。
#include <stdio.h>void fun(int *x,int *y){int t;t=*x;*x=*y;*y=t}void main(){int a=3,b=8;printf("%d %d\n",a,b);fun(&a,b);printf("%d %d\n",a,b);}3、从键盘输入3个数,将最大值放在变量a中,最小值放在变量c中。
中国石油大学C语言上机题答案(2013版)答案_最全最详细
中国石油大学c语言上机题答案大全(2013版)最全最详细1.1 Hello world.让我们用C语言向世界问好。
最早的程序基本是这个样子的:程序一:#include <stdio.h>void main(){printf("Hello world.\n");}程序二:#include <stdio.h>int main(){printf("Hello world.\n");return 0;}上面的程序你任意模仿一个,看看是否可以通过?如果你能通过这个简单的程序,那就让我们继续完成后面的习题吧。
输入:无输出:Hello world.#include<stdio.h>int main(){printf("Hello world.\n");}1.2 Welcome to Beijing.让我们来练习如何显示多行文字。
输入:无输出:就是下面的那段文字。
#include<stdio.h>void main(){printf("Welcome\n");printf("to\n");printf("Beijing.\n");}1.3 练习最简单的printf和scanfprintf函数和scanf函数是C语言中最常用的函数之一,下面让我们练习一下吧。
输入:整型变量x的值。
输出:输出整型变量x对应的十进制、八进制和十六进制形式。
认真观察-1的八进制和十六进制输出,请想想是为什么。
#include <stdio.h>int main(){int x;scanf("%d",&x);printf("x=%d,",x);printf("x=%o,",x);printf("x=%x\n",x);return 0;}1.4 练习两个整数之间的运算背景:基本练习。
2013年c语言试卷(带答案版)
湖北科技学院2013学年春季学期2012级非计算机本科专业《高级语言程序设计(C语言)》期末考试试卷(A卷、闭卷)一.选择题:(每小题1分,共40分)1.C语言规定,必须用( C )作为主函数名。
A) Function B) include C) main D) stdio2.下列说法正确的是( C )。
A) 在执行C程序时不是从main 函数开始的B) C程序书写格式严格限制,一行内必须写一个语句C) C程序书写格式自由,一个语句可以分写在多行上D) C程序书写格式严格限制,一行内必须写一个语句,并要有行号3.下列字符串是用户标识符的是( A )。
A) _HJ B) 9_student C) long D) float4.下列数据中是合法的整型常量的是( C )。
A) 3E2 B) 029 C) -32768 D) 6e+0075.语句int k,i=3;k=(i++)+(i++)+(i++);执行过后k和i的值分别为( A )。
A) 9,6 B) 12,5 C) 18,6 D) 15,56.10+‟a‟+1.5-567.345/‟b‟的结果是( B )型数据。
A) long B) double C) int D) unsigned float7.在C 语言中,下列类型属于构造类型的是( D )。
A) 整型B) 指针类型C) 实型D) 结构体类型8.在C语言中,退格符是( D )。
A) \n B) \t C) \v D) \b9.下列符号中,可以作为变量名的是( C )。
A) +c B) *X C) _DAY D) next-day10.以下程序的输出结果是( B )。
void main(){ unsigned char a=2,b=4,c=5,d;d=a|b; d&=c;printf("%d\n",d); }A) 3 B) 4 C) 5 D) 611.若已知a=5,b=10,则表达式a==b的值为( D )。
13年6月C语言上机真题
注意事项:1.标有$ERROR?$的程序行有错,请直接在该行修改;2.请不要删除或修改$ERROR?$错误标志;3.请不要将错误行分成多行;4.请不要修改错误语句的结构或其中表达式的结构,如错误语句:if((A+B)==(X=X+Y))...正确形式为if((A+B)!=(X=X+Y))...,若改成:if((B+A)!=(X=X+Y))...或if((X=X+Y)!=(A+B))...或if((A+B)!=(X+=Y))...等形式均不得分。
1、题目:以下程序实现了矩阵的主对角线上的数据和副对角线上的数据求和。
矩阵的数据存储在数组a中。
例矩阵:1 2 34 5 67 8 9主对角线上的数据和副对角线上的数据求和就是:1+5+9+3+7=25程序如下:#include <stdio.h>#define N 3int add(int a[N][N]){int i,s;s=0;for(i=0;i<N;i++){s=s+a[i][i];s=s+a[i][N-i]; /*$ERROR1$*/}if(N%2==0) /*$ERROR2$*/s=s-a[N/2][N/2];return s;}void main(){int a[N][N],i,j,sum;printf("please input matrix a:\n");for(i=0;i<N;i++)for(j=0;j<N;j++)scanf("%d",&a[i][j]);sum=add(a[0][0]); /*$ERROR3$*/printf("sum=%d\n",sum);}有N个数据存放在a数组中,请求出这N个数据的最小数,并与数组中第一个位置上的数进行交换。
程序如下:#define N 12#include <stdio.h>void main(){int a[N]={3,6,-5,15,7,-23,67,10,-34,24,-2,78};int min,i,t;min=a[0]; /*$ERROR1$*/for(i=1;i<N;i++){if(a[i]<a[min])min=a[i]; /*$ERROR2$*/}a[0]=t; /*$ERROR3$*/a[0]=a[min];a[min]=t;for(i=0;i<N;i++)printf("%5d",a[i]);printf("\n");}3、题目:将数组中的数按从大到小排序后输出,要求:所有数据输出在一行,且每个数据占4列。
C语言-习题集参考答案全部
目录- 1 -目录第一章C语言基础知识参考答案 ................................................................................ - 2 - 第二章顺序结构参考答案.......................................................................................... - 5 - 第三章选择结构参考答案.............................................................................................. - 7 - 第四章循环结构参考答案............................................................................................ - 11 - 第五章函数参考答案................................................................................................ - 15 - 第六章指针参考答案.................................................................................................... - 18 - 第七章一维数组参考答案............................................................................................ - 21 - 第八章二维数组参考答案.......................................................................................... - 28 - 第九章字符串参考答案.......................................................................................... - 31 - 第十章对C语言的深入讨论参考答案 ....................................................................... - 33 - 第十一章结构体与共用体参考答案............................................................................ - 34 - 第十二章文件参考答案........................................................................................ - 35 -全国计算机等级考试二级教程C 语言习题集参考答案- 2 - 第一章C语言基础知识参考答案一,选择题1 C2 D3 A4 C5 A6 D7 C 分析:C答案以数字开头了8 D 分析:int 是关键字9 C 10 D 11 B12 D 分析:Visual C++6.0中int类型的变量占的字节数为4。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
27、
28 执行下列语句后,a 的值为( C
int a=12, b=7;
m(int a,int b)
{
a=b;
}
main()
{
m(a,b);
}
A) 0 B) 1
C) 12
). D) 7
29 全局变量的有效范围为( D ).
A) 该程序的所有文件 B) 从本源文件的开始到结束 C) 该程序的主函数 D) 从定义变量的位置开始到本源文件结束
C)实参可以是任意类型
D)形参应与其对应得实参类型一致
4、C语言规定,函数返回值的类型是由( D )。 A)return 语句中的表达式类型所决定
B)调用该函数是的主调函数类型所决定
C)调用该函数时系统临时决定
D)在定义该函数时所指定的函数类型所决定
5、以下错误的描述是( C )。
函数调用可以
A)出现在执行语句中
D)int F4(float n);
11、下面函数调用语句含有实参的个数为( B )。
func((exp1,exp2),(exp3,exp4,exp5));
A)1 B)2 C)5
D)4
12、以下程序有语法性错误,有关错误的正确说法( C )。
main()
{ int G=5,k;
void prt_char();
A) 按行存放
B)按列存放
C)由用户自己定义
D)由编译器决定
4 已知:int a[3][4];则对数组元素引用正确的是( A )。
A)a[2][4]
B)a[1,3]
C) a[2][0]
D) a(2)(1)
5 以下正确的语句是( B )。
A) int a[1][4]={1,2,3,4,5};
B) float x[3][]={{1},{2},{3}};
A) gets (a,b);
B) scanf ("%s%s",a,b);
C) scanf ("%s%s",&a,&b);
D) gets ("a"), gets ("b");
15、判断字符串 a 和 b 是否相等,应当使用( D )。
A) if (a==b)
B) if (a=b)
C) if (strcpy(a,b)) D) if (strcmp(a,b))
for (i=0;i<3;i++)
for (
;
; j--)
if (i+j==2)
sum2=sum2+a[i][j];
printf("sum1=%d,sum2=%d\n",sum1,sum2);
}
10、要使字符数组 str 存放一个字符串"ABCDEFGH",正确的定义语句是
( D )。
A) char str[8]={'A','B','C','D','E','F','G','H'};
C) long b[2][3]={{1},{1,2},{1,2,3}};
D) double y[][3]={0};
6 已知:int a[10];则对 a 数组元素的正确引用是( D )。
A) a[10] B) a[3.5] C) a(5) D) a[10-10]
7 下面程序的运行结果是 C 。
main()
3
,最小下标是 b【3】 ,最大下标的 b【9】
。
9 下面的程序是求出数组 a 的两条对角线上的元素之和。
#include "stdio.h" main() { int a[3][3]={{1,3,6},{7,9,11},{14,15,17}},sum1=0,sum2=0,i,j;
for (i=0;i<3;i++) for (j=0;j<3;j++) if (i==j) sum1=sum1+a[i][j];
s3 的 值 分 别 为
s2 为 abf
s3 为
abcdabf
。
函数
1、C 语言程序由函数组成,它的( B )。 A)主函数必须在其它函数之前,函数内可以嵌套定义函数 B)主函数可以在其它函数之后,函数内不可以嵌套定义函数 C)主函数必须在其它函数之前,函数内不可以嵌套定义函数 D)主函数必须在其它函数之后,函数内可以嵌套定义函数
不正确的定义语句是( B )。
A) int art[5]={89,-23};
B) int art[ ]={89,-23};
C) int art[5]={89,-23,0,0,0};
D) int art[ ]={89,-23,0,0,0};
3 在 C 语言中,二维数组元素在内存中的存放顺序是( A )。
}
14
、
15
、
16、 17、
18、 19、 20、
21
、
22
23、执行下列语句后,程序的运行结果为( A ).
int a=10;
f( )
{int a;
a=12;
}
main()
{ f();
printf("%d",a);
}
A) 10 B) 12
C) 0 D) 不确定
24、以下说法中不正确的是( D ).
2、以下说法中正确的是( C )。 A)C 语言程序总是从第一个定义的函数开始执行 B)在 C 语言程序中,要调用的函数必须在 main()函数中定义 C)C 语言程序总是从 main()函数开始执行 D)C 语言程序中的 main()函数必须放在程序的开始部分
3、以下不正确的说法是( B )。 C 语言规定 A)实参可以是常量、变量或表达式 B)形参可以是常量、变量或表达式(形参不能是常量)
{int z;
return z;}
(同上)
C) fun( x,y) { int x,y; double z; z=x+y;
return z;} D) double fun(int x,int y)
{ double z; z=x+y; return z; } (
int x,y 定义不能在 fun()和{}中间)
C) char s[5]="";
D) char s[5]="abcde";
12、对两个数组 a 和 b 进行如下初始化
char a[]="ABCDEF"; char b[]={'A','B','C','D','E','F'};
则以下叙述正确的是( B )。
A) a 与 b 数组完全相同
B) a 与 b 长度相同
B)出现在一个表达式中
C)作为一个函数的形参
D)作为一个函数的实参
6、以下正确的说法是( C )。
A)定义函数时,形参的类型说明可以放在函数体内(形参既然是变量,必
须有类型说明,这个类型说明在定义变量的时候给出)
B)return 后边的值不能为表达式{可以 return(a+b)}
C)如果函数值的类型与返回值类型不一致,以函数值类型为准
B) char str[8]="ABCDEFGH";
C) char str[ ]={'A','B','C','D','E','F','G','H'};
D) char str[ ]="ABCDEFGH";
11、下面是对数组 s 的初始化,其中错误的是 ( D )。
A) char s[5]={"abc"} B) char s[5]={'a','b','c'};
16、有以下程序
main()
{ char a[ ]={‘a’,‘b’,‘c’,‘d’, ‘e’, ‘f’, ‘g’,‘h’,‘\0’}; int i,j;
i=sizeof(a); j=strlen(a);
printf(“%d,%d\b”i,j);
}
程序运行后的输出结果是( D )。
A)9,9
B)8,9
误的部分是 void ,改后为 float 。
void add(float a,float b)
{float c;
c=a+b;
return c;
}
14 以下程序的运行结果是(
)
void main()
{incx();
incx();
incx();
}
void incx()
{ int x=0;
printf("x=%d\n",++x);
30、 以下说法中正确的是( C ). A)形参是全局变量,其作用范围仅限于函数内部 B)形参是全局变量,其作用范围从定义之处到文件结束。
C)1,8
D)9,8
17、#include <stdio.h>
main() { char str[30];
scanf ("%s",str); printf("%s",str); }
运行程序,输入:Fortran Language 运行结果: Fortran
18、以下程序的输出结果是___abc______。 main() { char s[]="abcdef"; s[3]=‘\0'; printf("%s\n",s); }