C语言习题3
- 格式:docx
- 大小:14.06 KB
- 文档页数:8
C语言阶段测试三一、单项选择题1、有以下定义:int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}int (*ptr)[3]=a,*p=a[0];则下列能够正确表示数组元素a[1][2]的表达式是( A )。
A)*((*ptr+1)[2])B)*(*(p+5))C)(*ptr+1)+2 D)*(*(a+1)+2)2、# include <stdio.h> Dvoid main ( ){ int a[3][3]={1,2,3,4,5,6,7,8,9};int s=0,i;for (i=0;i<3;i++)s+=(*(a+i))[i];printf("%d",s);}A)9 B)12 C)14 D)153、设有说明语句:char a= '\123abc';则变量a ( A )A) 包含7个字符 B) 包含6个字符C) 包含5个字符D) 包含4个字符4、有以下程序段int k=0while(k=1)k++;while 循环执行的次数是( C )A) 无限次B) 有语法错,不能执行C) 一次也不执行D) 执行1次5、下面四个选项中,均是合法转义字符的选项是_C___。
a. '\''b. '\'c. '\018'd. '\\0''\\' '\017' '\f' '101'\n' '\"' 'xab' 'xlf'6、下面四个选项中,均是不正确的八进制数或十六进制数的选项是____。
a. 016b. oabcc. 010d. 0a120x8f 017 -0x11 7ff018 0x8 0x16 -1237、设int x;则执行printf(″%x\n″,~x^x);的结果是( )A.0B.1C.ffD.ffff8、设int a=9,b=20;则printf(″%d,%d\n″,a--,--b);的输出结果是( A )A.9,19B.9,20C.10,19D.10,209、对于while语句,错误的说法是(B )A.用条件控制循环体的执行次数B.循环体至少要执行一次C.循环体有可能一次也不执行D.循环体中可以包含若干条语句10、执行下列语句int a=8,b=7,c=6;if(a<b)if(b>c){a=c;c=b;}printf(″%d,%d,%d\n″,a,b,c);后输出的结果是( A )A.6,7,7B.6,7,8C.8,7,6D.8,7,811、设static char x[ ]=″12345″,y[ ]={′1′,′2′,′3′,′4′,′5′,′\0′};那么( A )A.x数组的长度等于y数组的长度B.x数组的长度大于y数组的长度C.x数组的长度少于y数组的长度D.x数组与y数组的存储区域相同12、设int i,x[3][3]={1,2,3,4,5,6,7,8,9};则下面语句for(i=0;i<3;i++)printf(″%d″,x[i][2-i]);的输出结果是( C )A.147B.159C.357D.36913、设int b[ ]={1,2,3,4},y,*p=b;则执行语句y=*p++;之后,变量y的值为( A )A.1B.2C.3D.414、假设int型变量占两个字节的存储单元,若有定义:int x[10]={0,2,4};则数组x在内存中所占字节数为____D__。
测试题31.C语言中不合法的字符常量是 CA、’\65’B、’\xff’C、’\028’D、’&’2.具有相同类型的指针变量p与数组a,不能进行的操作是(C)。
A、p=&a[0];B、p=a;C、p=&a;D、*p=a[0];3.若有x=22,y=26,z=0;,则执行下面语句后,z的输出结果是(B )z=x>y?x:yA、72B、26C、48D、224.对于建立函数的目的,正确的说法是DA、提高程序的执行效率B、减少程序的篇幅C、减少程序文件所占的内存D、提高程序的可读性5.有定义:char*p1,*p2;则下列表达式中正确合理的是CA、p1/=5B、p1+=5C、p1=&p2D、p1*=p26.以下程序的运行结果是(B)。
main(){int i=1,sum=0;while(i<10) sum=sum+1;i++;printf("i=%d,sum=%d",i,sum);}A、i=10,sum=9B、运行出现错误C、i=2,sum=17.若变量已正确定义且k 的值是4,计算表达式( j =4, k--) 后,j和k的值为(C)A、j=4, k=4B、j=3, k=3C、j=4, k=3D、j=3, k=48.给出以下定义:char x[ ]="abcdefg";char y[ ]={'a','b','c','d','e','f','g'};则正确的叙述为(A)A、数组x的长度大于数组y的长度B、数组x和数组y等价C、数组x和数组y的长度相同D、数组x的长度小于数组y的长度9.在下述程序中,判断i > j共执行了多少次 C#include <stdio.h>main(){int i = 0, j = 10, k = 2, s = 0;for( ; ; ){i += k;if(i > j){printf(“%d\n”, s);break;}s += i;}}A、4B、8C、6D、710.下列各m的值中,能使m%3==2&&m%5==3&&m%7==2为真的是(D)。
习题三基本语句1. 以下叙述中错误的是______。
A、C语句必须以分号结束B、复合语句在语法上被看作一条语句C、空语句出现在任何位置都不会影响程序运行D、赋值表达式末尾加分号就构成赋值语句解析:本题考查的是C语句。
"空语句出现在任何位置都不会影响程序运行"这句话是错误的,例如在for 循环中,循环条件语句为空时,则不判断循环条件,循环将无终止地进行下去,导致了此循环为死循环。
故本题答案为C。
2. 有以下程序,其中%u表示按无符号整数输出main(){ unsigned int x=0xFFFF; /* x的初值为十六进制数 */printf("%u\n ",x);}程序运行后的输出结果是______。
A、-1B、65535C、32767D、0xFFFF解析:本题考查的是整型无符号数的输出。
%u的作用是按无符号的十进制形式输出整型数,十六进制数0xFFFF转换为二进制位其值为16个1,代表的整数就是65535。
故本题答案选B。
3. 下列定义变量的语句中错误的是______。
A、int _int;B、double int_;C、char For;D、float US$;解析:本题考查的是C数据类型及其定义。
选项D中含有"$",故不符合标识符的定义。
故本题答案为D。
4. #include <stdio.h>main(){ char c1,c2,c3,c4,c5,c6;scanf("%c%c%c%c",&c1,&c2,&c3,&c4);c5=getchar(); c6=getchar();putchar(c1); putchar(c2);printf("%c%c\n",c5,c6);}程序运行后,若从键盘输入(从第1列开始)123<回车>45678<回车>则输出结果是______。
第3章最简单的C程序设计—顺序程序设计一、单项选择题1. 不是C语言提供的合法关键字是。
A)switch B)cher C)case D)default2. C语言提供的合法关键字是。
A)next B)string C)do case D)struct3. 下列不属于C语言中关键字的是。
A) long B) print C)default D)typedef4. 下列不正确的标识符是。
A) -a1 B) a[i] C)a2_i D)x5. 下列C语言用户标识符中合法的是。
A)*y B)sum C)int D)%5f6. 下面四个选项中,合法的标识符是。
A)auto B)define C)6a D)c7.下列C语言用户标识符中合法的是。
A)3ax B)x C)case D)-e28. 以下选项中合法的用户标识符是。
A) long B) _2Test C) 3Dmax D) A.dat9.下列四组选项中,正确的C语言标识符是。
A)%x B)a+b C)a123 D)12310. 请选出可用作C语言用户标识符的一组标识符A) void B) a3_b3 C) For D) 2adefine _123-abc DOWORD sum Case sizeof11. 下列四组字符串中都可以用作C语言程序中的标识符的是。
A)print _3d oodb aBc B)I\am one_half start$it 3paiC)str_1 Cpp pow while D)Pxq My->book line# His.age12. 下列C语言标识符中合法的变量名是。
A)2e3 B)you C)*y D)float1-12题解析:参照讲义中知识点--标识符与关键字,13. C语言中的简单数据类型包括。
A)整型、实型、逻辑型B)整型、实型、逻辑型、字符型C)整型、字符型、逻辑型D)整型、实型、字符型13题解析:C语言中没有逻辑型变量14.下列可以正确表示字符型常量的是。
C语言练习题及答案解析三(共3页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--一、单项选择题1.下面不属于C语言的数据类型是【】。
A) 整型 B) 实型 C) 逻辑型 D) 双精度实型分析:和其它高级语言相比,C语言中没有逻辑型数据,也没有逻辑型变量。
本题正确答案为C。
语言中,下列属于构造类型的是【】。
A) 整型 B) 实型 C) 指针类型 D) 结构体类型分析:C语言中构造类型的数据有三种:数组、结构体和共用体,数组是同类型数据的集合,结构体是不同类型的数据集合。
本题正确答案为D。
3.下列字符串不符合标识符规定的是【】。
A) SUM B) sum C) 3cd D) end分析:标识符规定只能由26个英文字母(大小写均可),数字0~9和下划线组成,且不能以数字开头,题中的3cd不符合规定。
本题正确答案为C。
4.下面能正确表示八进制数的是【】。
A) 0x16 B) 029 C) -114 D) 033分析:选项A)以0x开头是十六进制数,选项B)虽然是0开头,但出现了数字9,选项C)是十进制数。
本题正确答案为D。
5.下面四个选项中,均是合法实数的选项是【】。
A) B) C) D)-e5分析:实数有两种表示形式:小数形式和指数形式,小数形式必须有小数点,指数形式中,字母e之前必须有数字,e之后必须是整数。
选项A)中的"",选项C)中的"",选项D)中的"-e5"均是不合法的。
本题正确答案为B。
语言中,字符型数据在内存中存储形式是【】。
A) 原码 B) 反码 C) 补码 D) ASCII码分析:C语言中int型数据是以补码形式存放的,字符型数据是以ASCII码形式存放的。
本题正确答案为D。
7.下列正确的字符型常量是【】。
A) "a" B) ′\\\\′ C) "\\r" D) 277分析:字符常量的定义是用单引号括起来的一个字符,A和C的定界符不对,D超过了char型数据的表示范围,′\\\\′是转义字符。
一、语言基础选择题1.C语言程序的基本单位是 CA) 程序行 B) 语句 C) 函数 D) 字符2. 以下说法中正确的是 CA) C语言程序总是从第一个的函数开始执行B) 在C语言程序中,要调用的函数必须在main()函数中定义C) C语言程序总是从main()函数开始执行D) C语言程序中的main()函数必须放在程序的开始部分3.一个C语言程序的上机步骤是 AA) 编辑,编译,连接,执行 B) 编译C) 编辑,连接,执行 D) 连接,编译,执行4. 已知有定义:char ch;则如下正确的赋值为 AA) ch=‘M’; B) ch=’55’; C) ch="M"; D) ch="55";5.在Turbo C环境中,查看程序运行结果的快捷键是 DA) F5 B) Ctrl+F9 C) F8 D) Alt+F56.下列变量名中合法的是 CA) B.C.Tom B) 3a6b C) _ba7b D) $ABC7. C语言中,要求运算数必须是整型的运算符是 DA) / B)+ + C)!= D)%8. 已知 int j,i=1;则执行j=-i++; i和j的值为 BA)1,-1 B)2,-1 C)1,1 D)2,19.在C语言中,数字029是一个 AA)八进制数 B)十六进制数 C)十进制数 D)非法数10.C语言中用于结构化程序设计的三种基本结构是__A___A)顺序结构、选择结构、循环结构 B)if、switch、breakC)for、while、do-while D)if、for、continue11.如下程序运行后的输出结果是__B__main( ){int x=1,a=0,b=0;switch(x){ case 0:b++;case 1:a++;case 2:a++;b++;}printf("a=%d,b=%d\n",a,b);}A)a=1,b=1 B)a=2,b=1 C)a=1,b=0 D)a=2,b=2 12.若i为整型变量,则以下循环执行次数是_C__for(i=2;i==0;)printf(“%d”,i--);A)无限次 B)0次 C)1次 D)2次13.设有语句int a=3;则执行了语句a+=a-=a*a;后,变量a的值是_D__ A)3 B)0 C)9 D)-1214.有输入语句:scanf("a=%d,b=%d",&a,&b),为使变量a值为3,b值为7,从键盘输入数据的正确形式是_A__A)a=3,b=7<回车> B)a=3 b=7<回车> C)3 7<回车> D)3,7<回车>15.已知在ASCII代码中,字母A的序号为65,以下程序的输出的结果是_D__#include <stdio.h>main(){char c1='A', c2='Y';printf("%d,%d\n",c1,c2);}A) 因输出格式不合法,输出错误信息 B)65,90C)A,Y D)65,8916.如下程序段int a=14,b=15,x;char c='A';x=(a&&b)&&(c<'B');执行该程序段后,x的值为__D__A)ture B)false C)0 D)117.以下关于break和continue语句的说明正确的是_C___A) break用于switch结构,continue用于循环结构。
C语言练习题一、判断题1.C语言的switch语句中case后可为字符和整型常量表达式或有确定值的变量及表达式。
(N)2.如果有一个字符串,其中第十个字符为’\n’,则此字符串的有效字符为9个。
(N)3.两个字符串中的字符个数不相同时也可以进行字符串大小的比较。
(Y)4.如果函数值的类型和return语句中表达式的值不一致,则以函数类型为准。
(Y)5.C语言的switch语句中的case后只能为整型或字符型常量或常量表达式。
(Y)6.变量根据其作用域的范围可以分作局部变量和全局变量。
(Y)7.循环结构中的continue语句是整个循环终止执行。
(N)8.char*p=”girl”;的含义是定义字符型指针变量p,p的值是字符串“girl”.(N)9.C语言中只能逐个引用数组元素而不能一次引用整个数组。
(Y)10. int a[3][4]={ {1},{5},{9} };它的作用是将数组各行第一列的元素赋初值,其余元素值为0。
(Y)11.C语言中“%”运算符的运算对象必须为整形。
(Y)12.函数strl en(“ASDFG\n”)的值是7。
(N)13.若有说明int c;则whil e(c=getchar());是正确的c语句。
(Y)14.表达式,(j=3,j++)的值是4。
(N)15.在c程序中,函数既可以嵌套定义,也可以嵌套调用。
(N)16.Int i=20;Switch(i/10){Case 2:printf(“A”);Case 1:printf(“B”);}的输出结果为A (N)17.While 和d o…whil e循环无论在什么条件下它们结果都相同。
(N)18.逻辑表达式-5&&!8的值为1.(N)19.逻辑表达式-5&& 8的值为1.(Y)二、单选题1.若有说明:int a[3][4]=0;则下面正确的叙述是(D)A.只有元素a[0][0]可得到初值0B.此说明语句不正确C.数组a中各元素都可以得到初值,但其值不一定是0D.数组a中每个元素均可得到初值02.C语言规定,函数返回值的类型是由(D)A.return语句中的表达式类型所决定B.调用该函数时的主调函数类型所决定C.调用该函数时系统临时决定D.在定义该函数时所指定的函数类型所决定3.若有下列定义,则对a数组元素A[2]地址的正确引用是(C)A.*(P+5)B.*p+2C.*(a+2)D.*&a[5]4.为表示关系x≥y≥z,应使用C语言表达式(A)A.(x>=y)&&(y>=z)B.(x>=y)AND(y>=z)C.(x>=y>=z)D.(x>=z)&&(y>=z)5.设有说明:char c; int x; doubl e z;则表达式c*x+z值的数据类型为(D)A.fl oatB.intC.charD.d oubl e6.能正确表示逻辑关系:“a≥10或a≤0”的C语言表达式是(D)A.a>=10 or a<=10B.a>=0 | a<=10C.a>=10 && a<=10D.a>=10 || a<=07.已知p,p1为指针变量,a为数组名,j为整型变量,下列赋值语句中不正确的是(D)A.p=&j,p=p1B.p=aC.p=&a[j]D.p=108.C语言的if语句嵌套时,if与else的配对关系是(A)A.每个else总是与它上面的最近的if配对B.每个else总是与最外层的if配对C.每个else与if的配对是任意的D.每个else总是与它上面的if配对9.已知x=43,ch=’A’,y=0;则表达式(x>=y&&ch<’B’&&!y)的值是(C)A.0B.语法错C.1D.“假”10.如果int a=2,b=3,c=0,下列描述正确的是(B)A.a>=b!=c和a>(b!=c)的执行顺序是一样的B.!a!=(b!=c)表达式的值是1C.a||(b=c)执行后b的值为0D.a&&b>c的结果为假11.若有说明:int *p1,*p2,m=5,n;以下均是正确的赋值语句的选项是(C)A.p1=&m;p2=&p1B.p1=&m;p2=&n;*p1=*p2;C.p1=&m;p2=p1D.p1=&m;*p2=*p112.设有说明:char w; int x; fl oat y; d ouble z;则表达式w*x+z-y值的数据类型为(D)A.fl oatB.intC.charD.d oubl e13. C语言规定,在一个源程序中,main函数的位置(C)A.必须在最开始B.必须在系统调用的库函数的后面C.可以任意D.必须在最后14.C语言的if语句嵌套时,if与else的配对关系是(A)A.每个else总是与它上面的最近的if配对B.每个else总是与最外层的if 配对C.每个else与if的配对是任意的D.每个else总是与它上面的if配对15.下列字符序列中,不可用做C语言标识符的是(B)A. b70B. #abC. symbolD. a_116.整形变量x=1,y=3,经下列计算后,x的值不等于6的是(B)A.x=(x=1+2,x*2)B.x=y>2?6:5C.x=9-(--y)-(y--)D.x=y*4/217.若有下列定义,则对a数组元素a[2]地址的正确引用是(C)A. *(p+5)B. *p+2C. *(a+2)D. *&a[5]18.在C语言中,能代表逻辑值“真”的是(D)A.TrueB.大于0的数C.非0整数D.非0的数19.任何一个C语言的可执行程序都是从(B)开始执行的,A. 程序中的第一个函数B. main( )函数的入口处C. 程序中的第一条语句D. 编译预处理语句20.下列语句中,不正确的是(C)A. char a[2]={1,2};B. int a[2]={‘1’,’2’};C. char a[2]={‘1’,’2’,’3’};D.char a[2]={‘1’};21.C语言中不可嵌套的是(B)A.函数调用B. 函数定义C.循环语句D.选择语句22.若有说明:int *p1,*p2,m=5,n;以下均是正确赋值语句的选项是(C)A. p1=&m;p2=&p1B. p1=&m;p2=&n; *p1=*p2C. p1=&m;p2=p1D. p1=&m;*p2=*p123.在C语言中,调用函数除函数名以外,还必须有(C)A. 函数预说明B. 实际参数C.()D. 函数返回值24.以下不能对二维数组a进行正确初始化的语句是(C)A. int a[2][3]={0};B. int a[ ][3]={ {1,2} ,{0} };C. int a[2][3]={ {1,2},{3,4},{5,6} };D. int a[ ][3]={1,2,3,4,5,6};25.C语言中whil e 和do-whil e 循环的主要区别是(B)A. While 的循环控制条件比d o-whil e的循环控制条件严格B. d o-whil e 的循环体至少无条件执行一次C. d o-whil e 允许从外部转到循环体内D.d o-whil e循环体不能是复合语句26.以下叙述正确的是(A)A. C程序中注释部分可以出现在程序中任意合适地方B. 花括号“{ “和”}”只能作为函数体的定界符C. 构成C程序的基本单位是函数,所有函数名都可以由用户命名D. 分号是C语言之间的分隔符,不是语句的一部分27.变量的指针,其含义是指该变量的(B)A.值B.地址C.名D.一个标志28.若有说明: int a[ 3] [ 4]={ 0};则下面的叙述正确的是(D)A.只有元素a[0] [0]可得到初值0B.此说明语句不正确C.数组a 中各元素都可得到初值,但其值不一定为0D.数组a中各元素均可得到初值029.表达式18/4*sqrt(4.0)/8的值的数据类型为(C)A. intB. fl oatC. d oubl eD. 不确定30.以下标识符中,不能作为合法的C用户定义标识符的是(C)A. AnswerB. ToC. SignedD. if31.变量p为指针变量,若p=&a,下列说法不正确的是(D)A. &*p==&aB. *&a==aC. (*p)++==a++D. *(p++)==a++32. int a=3,b=2,c=1;if(a>b>c)a=b;else a=c;则a的值为(C)。
第3-4章练习题一、选择题1. 以下错误的字符串赋值或赋初值方式是:(A)char str1[]=”string”, str2[]=”12345678”;st r cpy(str2,str1);(B)char str[7]={‟s‟,‟t‟,‟r‟,‟i‟,‟n‟,‟g‟};(C)char str[10] ;str =”string”;(D)char *str; str=”string”;2. 数组定义中不正确的是:(A)int a[2][3]; (B)int b[][3]={0,1,2,3};(C)int c[100][100]={0}; (D)int d[3][]={{1,2},{1,2,3},{1,2,3,4}};3. 以下对一维数组a正确初始化的是:(A)int a[10]=(0,0,0,0,); (B)int a[10]={};(C)int a[10]={0}; (D)int a[10]=(10*2);4.以下选项中,不能正确赋值的是:(A)char s1[10];s1="Ctest"; (B)char s2[]={'C', 't', 'e', 's', 't'};(C)char s3[20]="Ctest"; (D)char *s4="Ctest\n"5.若有说明:int i, j=2,*p=&i;,则能完成i=j赋值功能的语句是:(A)i=*p; (B)*p=*&j; (C)i=&j; (D)i=**p;6. 下面各语句行中,不能正确进行字符串操作的语句行是:(A) char st[10]={"abcde"}; (B) char s[5]={'a','b','c','d','e'};(C) char *s; s="abcde"; (D) char *s; scanf("%s",s);7.设有如下的程序段,执行上面的程序段后,*(ptr+5)的值为:char str[ ]="Hello"; char *ptr; ptr=str;(A) 'o' (B) '\0' (C)不确定的值(D) 'o'的地址8. 请选出以下语句的输出结果printf("%d\n",strlen("\t\"\065\xff\n"));(A)5 (B)14 (C)8 (D)输出项不合法,无正常输出9.以下程序段给数组所有的元素输入数据,请选择正确答案填入。
第三章数据类型、运算符和表达式一、选择题:1、以下选项中,不正确的C 语言浮点型常量是(C)。
A. 160.B. 0.12C. 2e4.2D. 0.02、以下选项中,(D)是不正确的C 语言字符型常量。
A. 'a'B. '\x41'C. '\101'D. "a"3、在C 语言中,字符型数据在计算机内存中,以字符的(C)形式存储。
A. 原码B. 反码C. ASCII 码D. BCD码4、若x、i、j和k都是int型变量,则计算下面表达式后,x的值是(C)。
x=(i=4,j=16,k=32)A. 4B. 16C.32D.525、算术运算符、赋值运算符和关系运算符的运算优先级按从高到低依次为(B)。
A. 算术运算、赋值运算、关系运算B. 算术运算、关系运算、赋值运算C. 关系运算、赋值运算、算术运算D. 关系运算、算术运算、赋值运算6、表达式!x||a==b 等效于(D)。
A. !((x||a)==b)B. !(x||y)==bC. !(x||(a==b))D. (!x)||(a==b)7、设整型变量m,n,a,b,c,d 均为1,执行(m=a>b)&&(n=c>d)后, m,n 的值是(B)。
A. 0,0B. 0,1C. 1,0D. 1,18、设有语句int a=3;,则执行了语句a+=a-=a*=a;后,变量a 的值是(B)。
A. 3B. 0C. 9D. -129、在以下一组运算符中,优先级最低的运算符是(D)。
A. *B. !=C. +D. =10、设整型变量i 值为2,表达式(++i)+(++i)+(++i)的结果是(B)。
A. 6B. 12C. 15D. 表达式出错11、若已定义x 和y为double 类型,则表达式x=1,y=x+3/2 的值是(C)。
A. 1B. 2C. 2.0D. 2.512、设a=1,b=2,c=3,d=4,则表达式:a<b? a : c<d? a : d的结果为(D)。
C程序设计语言练习题第三部分63.已知:int x; 则下面说明指针变量pb的语句是正确的。
A) int pb=&x; B)int *pb=x; C)int *pb=&x D)*pb=*x;64.有如下程序段:int *p,a,b=1;p=&a;*p=10;a=*p+b;执行该程序段后,a值是。
A) 12 B) 11 C) 10 D) 编译出错65.若有说明:int i,j=2,*p=&i;,则能完成i=j赋值功能的语句是。
A) i=*p; B) *p=*&j; C) i=&j; D) i=**p;66.已知:int a,*p=&a; 则为了得到变量a的值,下列错误的表达式为______。
A) *&p B) *p C) p[0] D) *&a67.已知static int a[2][3]={2,4,6,8,10,12};正确表示数组元素地址的是__。
A) *(a+1)B) a[1]+2 C) a[1]+3 D) a[0][0]68.已知int a[3][4],*p=*a; p+=6;那么*p和______的值相同。
A) *(a+6) B) *(&a[0]+6) C) *(a[1]+2)D) *(&a[0][0]+6)69.已知说明int (*p)[M]; 其中p是______。
A) M个指向整型变量的指针B) 指向M个整型变量的函数指针C) 一个指向具有M个整型元素的一维数组的指针D) 具有M个指针元素的一维指针数组,每个元素都只能指向整型变量70.若有定义和语句:int c[4][5], (*cp)[5]; cp=c;则对c数组元素的引用正确的是哪个?A)cp+1 B)*(cp+3) C)*(cp+1)+3 D)*(*cp+2)71.设有以下定义:int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};int (*prt)[3]=a,*p=a[0];则下列能够正确表示数组元素a[1][2]的表达式是__________。
第3章最简单的程序设计-顺序程序设计3.1选择题1.在下列选项中,不正确的赋值语句是( )。
(A)++t; (B)n1=(n2=(n3=0)); (C)k=i==j; (D)a=b+c=1;2.以下叙述中正确的是( )。
(A)用C程序实现的算法必须要有输入和输出操作(B)用C程序实现的算法可以没有输出但必须要输入(C)用C程序实现的算法可以没有输入但必须要有输出(D)用C程序实现的算法可以既没有输入也没有输出3.若变量已正确定义并赋值,下面符合C语言语法的表达式是( )。
(A) a:=b+1 (B) a=b=c+2 (C) int 18.5%3 (D) a=a+7=c+b4.若变量a、i已正确定义,且i已正确赋值,合法的语句是( )。
(A) a==1 (B) ++i; (C) a=a++=5; (D) a=int(i);5.设a和b均为double型变量,且a=5.5,b=2.5,则表达式(int)a+b/b的值是()。
(A)6.500000(B)6(C)5.500000(D)6.0000006.C语言中用于结构化程序设计的三种基本结构是( )。
(A)顺序结构、选择结构、循环结构(B)if、switch、break(C)for、while、do-while(D)if、for、continue7.以下选项中非法的表达式是( )。
(A)0<=x<100(B)i=j==0(C)(char)(65+3) (D)x+1=x+18.有以下定义语句double a,b; int w; long c;若各变量已正确赋值,则下列选项中正确的表达式是( )。
(A)a=a+b=b++ (B)w%((int)a+b)(C)(c+w)%(int)a (D)w=a==b;9.以下选项中,与k=n++完全等价的表达式是()。
(A)k=n,n=n+1(B)n=n+1,k=n(C)k=++n(D)k+=n+110.以下叙述中错误的是( )。
一、选择题1、假设int型变量占两个字节的储存单元,若有定义:int x[10]={0,2,4}; 则数组x在内存中所占字节数为( )A、3B、6C、10D、202、下列合法的数组定义是( )A、int a[]=”string”;B、int a[5]={0,1,2,3,4,5};C、char a=”string”;D、char a[]={0,1,2,3,4,5};3、若给出一下定义:char x[]=”abcdefg”; char y[]={…a‟ , ‟b‟ , ‟c‟ , ‟d‟ , ‟e‟ , ‟f‟ , ‟g‟}; 则正确的叙述为( )A、数组x和数组y等价B、数组x和数组y的长度相同C、数组x的长度大于数组y的长度D、数组x的长度小于数组y的长度4、程序:main(){int n[3],i,j,k;for(i=0;i<3;i++)n[i]=0;k=2;for(i=0;i<k;i++)for(j=0;j<3;j++)n[j]=n[i]+1;printf("%d\n",n[1]);}运行结果是 ( )A、2B、1C、0D、35、一下程序的输出结果是( ) main(){int i,k,a[10],p[3];k=5;for(i=0;i<10;i++)a[i]=i;for(i=0;i<3;i++)p[i]=a[i*(i+1)];for(i=0;i<3;i++)k+=p[i]*2;printf("%d\n",k);}A、20B、21C、22D、236、一下程序运行后,输出结果是( )A、10000B、10010C、00110D、10100main(){int y=18,i=0,j,a[8];do{a[i]=y%2;i++;y=y/2;}while(y>=1);for(j=i-1;j>=0;j--)printf("%d",a[j]);printf("\n");}7、一下程序的输出结果是 ( )A、ABCDB、 ABCDC、EFGD、EFGHFGH EFG JK IJKLKL IJ OMmain(){char w[][10]={"ABCD","EFGH","IJKL","MNOP"},k;for(k=1;k<3;k++)printf("%s\n",w[k]);}8、当执行下面的程序时,如果输入ABC,则输出结果是 ( )A、ABC6789B、ABC67C、12345ABC6D、ABC456789#include"stdio.h"#include"string.h"main(){char ss[10]="12345";gets(ss);strcat(ss,"6789");printf("%s\n",ss);}9、不能把字符串“Hello!”赋给数组b的语句是 ( )A、char b[10]={‘H’,’e’,’l’,’l’,’o’,’!’};B、char b[10];b=”Hello!”;C、char b[10];strcpy(b,”Hello!”);D、char b[10]=”Hello!”;10、若有定义和语句: char s[10];s=”abcd”;printf(“%s\n”,s); 则运行结果是 ( )A、输出abcdB、输出aC、输出ab cdD、编译不通过11、若有一下程序段:char str[]=”ab\n\012\\\””;printf(“%d”,strlen(str));该程序段的输出结果是 ( )A、3B、4C、6D、1212、下列程序的输出结果是 ( )A、12ba56B、6521C、6D、62main(){char ch[7]={"65ab21"};int i,s=0;for(i=0;ch[i]>='0'&&ch[i]<='9';i+=2)s=10*s+ch[i]-'0';printf("%d\n",s);}13、下面程序的输出是 ( )main(){char s[]="12134211";int v1=0,v2=0,v3=0,v4=0,k;for(k=0;s[k];k++)switch(s[k]){default: v4++;case'1':v1++;case'3':v3++;case'2':v2++;}printf("v1=%d,v2=%d,v3=%d,v4=%d\n",v1,v2,v3,v4);}A、v1=4,v2=2,v3=1,v4=1B、v1=4,v2=9,v3=3,v4=1C、v1=5,v2=8,v3=6,v4=1D、v1=8,v2=8,v3=8,v4=814、有以下程序#include<string.h>main(){char str[][20]={"Hello","Beijing"},*p=str;printf("%d\n",strlen(p+20));}程序运行后的输出结果是 ( )A、0B、5C、7D、2015、以下程序运行后的输出是 ( ) main(){int x[]={1,3,5,7,2,4,6,0},i,j,k;for(i=0;i<3;i++)for(j=2;j>=i;j--)if(x[j+1]>x[j]){k=x[j];x[j]=x[j+1];x[j+1]=k;}for(i=0;i<3;i++)for(j=4;j<7-i;j++)if(x[j]>x[j+1]){k=x[j];x[j]=x[j+1];x[j+1]=k;}for(i=0;i<8;i++)printf("%d",x[i]);printf("\n");}A、75310246B、01234567C、76310462D、1357024616、以下程序的输出结果是()main(){int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;for(i=0;i<3;i++)for(j=i;j<=i;j++)t=t+b[i][b[j][j]];printf("%d\n",t);}A、3B、4C、1D、9二、填空题1、若想通过以下输入语句使a中存放字符串“1234”,b中存放字符“5”,则输入数据的形式应该是________......char a[10],b;scanf("a=%s\nb=%c",a,&b);......2、以下程序的功能是:从键盘上输入若干个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。
C语⾔程序设计习题集3指针⼀单项选择题(每题2分,共40分)1 以下叙述中错误的就是_B__。
A 在程序中凡就是以“#”开始的语句⾏都就是预处理命令⾏B 预处理命令⾏的最后不能以分号表⽰结束C #define MAX就是合法的宏定义命令⾏D C程序对预处理命令⾏的处理就是在程序执⾏的过程中进⾏的2 若程序中有宏定义⾏:#define N 100 ,则以下叙述中正确的就是__B_。
A 宏定义⾏中定义了标识符N的值为整数100B 在编译程序对C源程序进⾏预处理时⽤100替换标识符NC 对C源程序进⾏编译时⽤100替换标识符ND 在运⾏时⽤100替换标识符3 若有如下宏定义:#define N 2#define y(n) ((N+1)*n)则执⾏下列语句:z=4*(N+y(5));后的结果就是_B__。
A 语句有错误B z值为68C z值为60D z值为1804 以下程序运⾏后的输出结果就是_A__。
#define F(X,Y) (X)*(Y)main(){ int a=3,b=4;printf("%d\n",F(a++,b++));}A 12B 15C 16D 205 以下程序运⾏后的输出结果就是_C__。
#define f(x) (x*x)main(){ int i1,i2;i1=f(8)/f(4); i2=f(4+4)/f(2+2);printf("%d,%d\n",i1,i2);}A 64,28B 4,4C 4,3D 64,646 若已定义a为int型变量,则__D_就是对指针变量p的正确说明与初始化。
A int p=&a;B int *p=a;C int *p=*a;D int *p=&a;7 已知下列说明语句:static int a[]={2,4,6,8}static int *p[]={a,a+1,a+2,a+3};int **q;q=p;则表达式**(q+2)的值就是_A__。
第三章数组一、选择题1.合法的数组定义是A.int a[ ]=”string”; B.int a[5]={0,1,2,3,4,5};C.char a=”string”; D.char a[ ]={0,1,2,3,4,5};2.若有定义和语句:char s[10]; s=”abcd”; printf(“%s\n”,s); 则结果是(以下u代表空格)A.输出abcd B.输出aC.输出abcd u u u u u D.编译不通过3.数组a[2][2]的元素排列次序是A.a[0][0],a[0][1],a[1][0],a[1][1] B.a[0][0],a[1][0],a[0][1],a[1][1]C.a[1][1],a[1][2],a[2][1],a[2][2] D.a[1][1],a[2][1],a[1][2],a[2][2]4.有以下语句,则下面是正确的描述static char x [ ]=“12345”;static char y[ ]={…1‟,…2‟,…3‟,…4‟,…5‟};A.x数组和y数组的长度相同。
B.x数组长度大于y数组长度。
C.x数组长度小于y数组长度D.x数组等价于y数组。
5.列不能正确进行字符串赋值操作的语句是A.char str[10];gets(str); B.char*str;str=“a”;C.char*str;str=…a‟;D.charstr[10];strcpy(str,“hello”);6.若数组的长度为n,则该数组中的元素最多有n个。
若[3][5]是一个二维数组,则最多可使用的元素个数为A.8 B.10 C.15 D.57.若有说明:int a[3][4]; 则对a数组元素的非法引用是A.a['B'-'A'][2*1] B.a[1][3] C.a[4-2][0] D.a[0][4] 8.设有语句static char str[10]={“china”};printf(“%d”,strlen(str)); 则输出结果是A.10 B.5C.china D.69.表达式strlen(“string”)+strlen(“C”)的运算结果为A.9 B.10 C.7D.810.执行以下程序段后,s的值为。
习题三一、选择题1.printf()函数输出实数时,使用的格式字符是(C)。
A.%d B.%c C.%f D.%o2.下面变量说明中(C)是正确的。
A.char:a ,b ,c; B.char a;b;c;C.char a , b , c; D.char a,b ,c3.putchar()函数可以向终端输出一个(D )。
A.整型变量表达式值B.实型变量值C.字符串D.字符或字符型变量值4.阅读以下程序,当输入数据的形式为:25,13,10〈CR〉,正确的输出结果为( D )。
main(){ int x,y,z;scanf("%d%d%d",&x,&y,&z);printf("x+y+z=%d\n",x+y+z);}A.x+y+z=48 B.x+y+z=35 C.x+z=35 D.不确定值5.以下说法正确的是( D )。
A. 输入项可以是一个实型常量B. 只有格式控制,没有输入项,也能进行正确输入,如scanf("a=%d,b=%d");C. 当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf("%4.2f",&f);D. 当输入数据时,必须指明变量的地址,如scanf("%f",&f);6.以下能正确地定义整型变量a、b和c并为其赋初值5的语句是(C )。
A.int a=b=c=5; B.int a,b,c=5;C.int a=5,b=5,c=5; D.a=b=c=5;7.已知ch是字符型变量,下面正确的赋值语句是(B )。
A.ch='a+b'; B.ch='\xff'; C.ch='\08';D.ch="\";8.设x、y均为float型变量,则以下不合法的赋值语句是( B )。
第四章最简单的C程序设计4.1 选择题【题4.1】putchar函数可以向终端输出一个 D 。
A)整型变量表达式值B)实型变量值C)字符串D)字符或字符型变量值【题4.2】以下程序的输出结果是 D 。
main(){printf(“\n*s1=%15s*”, “chinabeijing”);printf(“\n*s2=%-5s*”, “chi”);}A)*s1=chinabeijing * B)*s1=chinabeijing **s2=**chi* *s2=chi *C)*s1=*chinabeijing* D)*s1= chinabeijing**s2=chi* *s2=chi *【题4.3】printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。
如果字符串长度大于5,则输出按方式【B;如果字符串长度小于5,则输出按方式【C】。
A)从左起输出该字串,右补空格B)按原字符长从左向右全部输出C)右对齐输出该字串,左补空格D)输出错误信息【题4.4】已有定义int a=-2;和输出语句:printf(“%8lx”,a);以下正确的叙述是D 。
A)整型变量的输出格式符只有%d一种B)%x是格式符的一种,它可以适用于任何一种类型的数据C)%x是格式符的一种,其变量的值按十六进制输出,但%8lx是错误的D)%8lx不是错误的格式符,其中数字8规定了输出字段的宽度【题4.5】以下C程序正确的运行结果是。
main(){long y=-43456;printf(“y=%-8ld\n”,y);printf(“y=%-08ld\n”,y);printf(“y=%08ld\n”,y);printf(“y=%+8ld\n”,y);}A)y= -43456 B)y=-43456y=- 43456 y=-43456y=-0043456 y=-0043456y=-43456 y=+-43456C)y=-43456 D)y= -43456y=-43456 y=-0043456y=-0043456 y=00043456y= -43456 y=+43456【题4.6】以下C程序正确的运行结果是。
一,选择题1,C语言中不合法的字符串量是(B)A、”\121”B、’y=’C、”ABCD\x6d”D、”\n\n”2,设有说明语句:char a='\72';那么变量a(B)。
A、说明不合法B、包括1个字符C、包括2个字符D、包括3个字符3,以下数据中,不正确的数值或字符常量是(B)。
A、0B、o13C、5LD、98614,从键盘上输入某字符串时,不可利用的函数是(B)。
A、gets()B、fread()C、scanf()D、getchar()5,假设变量已正肯概念,以下程序段的输出结果是( D )x=;printf(“%f\n”, (int)(x*1000+/(float)1000); A、B、输出格式说明与输出项不匹配,输出无定值C、D、6,以下运算符中优先j级别最低的运算符是( C)A、+B、!=C、||7,以下不是无穷循环的语句为(C)。
A、for(;;x++=i);B、while(1){x++;}C、for(y=0,x=1;x>++y;x=i++) i=x;D、for(i=10;;i--) sum+=i;8,以下概念数组的语句中正确的选项是(C)。
A、char str[];B、int num['10'];C、#define size 10 char str1[size],str2[size+2];D、int n=5; int a[n][n+2];9,以下程序段的输出结果为(B)。
char c[]="abc"; int i=0; do ;while(c[i++]!='\0');printf("%d",i-1);A、abcB、3C、abD、210,函数挪用:strcat(strcpy(str1,str2),str3)的功能是( C)A、将串str2连接到串str1以后再将串str1复制到串str3中B、将串str1复制到串str2中后再连接到串str3以后C、将串str2复制到串str1中后再将串str3连接到串str1以后D、将串str1连接到串str2以后再复制到串str3以后11,在C语言中,挪用函数除函数名外,还必需有(A)。
A、( )B、函数返回值C、函数预说明D、实际参数12,下面选择中正确的赋值语句是(设char a[5],*p=a;)(D)。
A、*a="abcd";B、*p="abcd";C、a="abcd";D、p="abcd";13,假设有double *p,x[10];int i=5;使指针变量p指向元素x[5]的语句为(D)。
A、p=x[i];C、p=&(x+i)D、p=&x[i];14,C语言中,概念结构体的保留字是(A)。
A、structB、unionC、enumD、typedef15,以下表达中不正确的选项是(C)。
A、C语言中,随机读写方式不适用于文本文件B、C语言中对二进制文件的访问速度比文本文件快C、C语言中,顺序读写方式不适用于二进制文件D、C语言中的文本文件以ASCⅡ码形式存储数据二,填空1,以下程序的运行结果是__21___ 。
#include <>main(){int a = 3, b = 7, t;t = a > b ? a : b;while(t % a || t % b)t++;printf("%d\n", t)}2,请写出以下程序的输出结果___1__。
main(){ int a = 100;if( a > 100) printf(“%d\n”, a > 100);else printf(“%d\n”, a <= 100); }3,以下程序的输出结果是_-1____。
main(){ int x = 2;while ( x-- );printf(“%d\n”, x);}4,以下程序段的输出结果是__3___。
printf(“%d\n”, strlen(“s\n\016\0end”));5,有以下宏概念和赋值语句,宏置换后的赋值语句的形式是__p = 3+5*3+5___。
#define A 3+5… …p = A * A;6,假设有概念: char ch,*p;使指针p指向变量ch的赋值语句是_p=&ch____。
7,结构体是不同数据类型的数据集合,作为数据类型, 必需先说明结构体_类型____,再说明结构体变量.8以下程序由终端键盘输入一个文件名,然后把终端键盘输入的字符依次存放到该文件中,用#号作为终止输入的标志。
请填空。
#include <>main(){ FILE _*fp____;char ch, fname[10];printf("Enter the name of file\n");gets(fname);if( ( fp = fopen(fname,"w") ) == NULL ){ printf("Open error!\n");exit(0);}printf("Enter data: );while(( ch = getchar() ) != '#' )fputc(ch , fp);fclose( fp );}9, 设a、b、c为整型数, 且a=2、b=3、c=4, 那么执行完以下语句: a*=16+(b++)-(++c); 后,a 的值是 _28____.10, x=x+1对应的复合赋值语句是_x+=1____.三,【程序设计】功能:编写函数fun生成一个主对角线元素为1,其他元素都为0的3*3的二维数组。
#include ""void main(){int a[3][3],i,j;void fun(int arr[][3]);void TestFunc();fun(a);for(i=0;i<3;i++){for(j=0;j<3;j++)printf("%d ",a[i][j]);printf("\n");}TestFunc();}void fun(int arr[][3]){ int i,j;/**********Begin**********/for(i=0;i<3;i++)for(j=0;j<3;j++)if(i==j)arr[i][j]=1;elsearr[i][j]=0;/********** End **********/ }void TestFunc(){FILE *IN,*OUT;int m,n;int i[3][3];IN=fopen("","r");if(IN==NULL)printf("Read File Error");OUT=fopen("","w");if(OUT==NULL)printf("Write File Error");for(m=0;m<3;m++)for(n=0;n<3;n++)fscanf(IN,"%d",&i[m][n]);fun(i);for (m=0;m<3 ;m++ ){for(n=0;n<3;n++)fprintf(OUT,"%d",i[m][n]); fprintf(OUT,"\n");}fclose(IN);fclose(OUT);}四,程序改错参考答案#include ""void main() scanf("%ld",&i);{ if(i<=100000)long int i; printf("bonus=%d",bonus); int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;/**********ERROR**********/scanf("%ld"&i);bonus1=100000*;bonus2=bonus1+100000*;bonus4=bonus2+200000*;bonus6=bonus4+200000*;bonus10=bonus6+400000*;/**********ERROR**********/if(i>100000)bonus=i*;else if(i<=200000)bonus=bonus1+(i-100000)*;else if(i<=400000)bonus=bonus2+(i-200000)*;else if(i<=600000)bonus=bonus4+(i-400000)*;else if(i<=1000000)bonus=bonus6+(i-600000)*;elsebonus=bonus10+(i-1000000)*;/**********ERROR**********/printf("bonus=%d",bonus)}五,【程序填空】功能:以每行5个数来输出300之内能被7或17整除的偶数,并求出其和。
#include <>void main(){int i,n,sum;sum=0;n=0;/**********FILL**********/for(i=1; i_<____300 ;i++)/**********FILL**********/if(i%7==0||i%17==0_____)if(i%2==0){sum=sum+i;n++;printf("%6d",i);/**********FILL**********/ if(_n%5==0____)printf("\n");}printf("\ntotal=%d",sum);}。