C语言基础知识习题.docx

上传人:b****7 文档编号:9026434 上传时间:2023-02-02 格式:DOCX 页数:50 大小:34.91KB
下载 相关 举报
C语言基础知识习题.docx_第1页
第1页 / 共50页
C语言基础知识习题.docx_第2页
第2页 / 共50页
C语言基础知识习题.docx_第3页
第3页 / 共50页
C语言基础知识习题.docx_第4页
第4页 / 共50页
C语言基础知识习题.docx_第5页
第5页 / 共50页
点击查看更多>>
下载资源
资源描述

C语言基础知识习题.docx

《C语言基础知识习题.docx》由会员分享,可在线阅读,更多相关《C语言基础知识习题.docx(50页珍藏版)》请在冰豆网上搜索。

C语言基础知识习题.docx

C语言基础知识习题

第二章:

C语言概述

1.以下(

)是不正确的转义字符。

A.'\\'B.'\"C.'020'D.'\0'

2.构成C语言程序的基本单位是(

)。

A.函数B.变量C.子程序D.语句

3.C语言规定:

在一个源程序中,main()函数的位置(C)。

A.必须在最开始B.必须在系统调用的库函数后面

C.可以任意D.必须在最后

4.为求出return语句返回计算100!

的结果,此函数的类型说明应为(D)。

A.intB.longC.unsignedlongD.选项A,B,C.都不对:

ABC的数值范围都不够

5.C语言中的标识符只能由字母、数字和下划线3种字符组成,且第一个字符(C)。

A.必须为字母

B.必须为下划线

C.必须为字母或下划线

D.可以是字母、数字和下划线中的任意一种

6.以下选项中合法的用户标识符是(D)。

A.intB.a#C.5memD._243

7.C语言中的简单数据类型有(C)。

A.整型、实型、逻辑型B.整型、字符型、逻辑型

C.整型、实型、字符型D.整型、实型、字符型、逻辑型

8.以下选项中不正确的整型常量是(B)。

A.-37B.32,758C.326D.6

9.以下选项中合法的C语言字符常量是(A)。

A.'\t'B."A"C.67D.A

10.以下选项中不正确的实型常量是(A)。

A.123B.1e4C.3.640E-1D.0.35

11.以下选项中合法的C语言赋值语句是(D)。

A.a=b=34B.a=34,b=34C.--i;D.m=(int)(x+y);

12.设int类型的数据长度为两个字节,则unsignedint类型数据的取值范围是(B)。

A.0~255B.0~65535C.-32768~32767D.-256~255

 

第三章:

运算符与表达式(原先给的答案很多错误)

1.以下叙述中不正确的是(B)。

A.在C程序中,%是只能用于整数运算的运算符

B.在C程序中,无论整数还是实数,都能准确无误地表示

C.若a是实型变量,C程序中a=20是正确的,因此实型变量允许被整型数赋值

D.以上表述都是正确的

2.若变量x、y、z均为double类型且已正确赋值,不能正确表示x/y×z的C语言表达式是(A)。

A.x/y*zB.x*(1/(y*z))C.x/y*1/zD.x/y/z

3.设a、b、c、d、m、n均为int型变量,且a=5,b=6,c=7,d=8,m=2,n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为(C)。

A.0B.1C.2D.3

4.设w、x、y、z、m均为int型变量,有如下程序段:

w=1;x=2;y=3;z=4;

m=(w

w:

x;m=(m

m:

y;m=(m

m:

z;

则该程序运行后,m的值是(D)。

A.4B.3C.2D.1

5.以下程序的输出结果是(C)。

#include

main()

{inta=5,b=4,c=6,d;

printf("%d\n",d=a>b?

(a>c?

a:

c):

(b));

}

A.5B.4C.6D.不确定

6.在C语言中,如果下面的变量都是int类型,则输出的结果是(A)。

sum=pad=5;pad=sum++,pad++,++pad;

printf("%d\n",pad);

A.7B.6C.5D.4

7.以下程序的输出结果是(B)。

#include

main()

{inti=010,j=10;

printf("%d,%d\n",++i,j--);

}

A.11,10B.9,10C.010,9D.10,9

8.已知inti;floatf;,由以下选项中正确的语句是(D)。

A.(intf)%i;B.int(f)%i;C.int(f%i);D.(int)f%i;

9.若有定义:

intx=3,y=2;floata=2.5,b=3.5;则下面表达式的值为(B)。

(x+y)%2+(int)a/(int)b

A.1.0B.1C.2.0D.2

10.假设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为(C)。

A.7B.8C.9D.10

11.若有定义"intx=1,y=1;",表达式(!

x||y--)的值是(B)。

A.0B.1C.2D.-1

12.有以下程序:

main()

{unsignedchara,b,c;

a=0x3;

b=a|0x8;

c=b<<1;

printf("%d%d\n",b,c);

}

程序运行后的输出结果是(D)。

A.-1112B.-6-13C.1224D.1122

13.若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是(C)。

A.1B.2C.2.0D.2.5

14.执行以下程序段后,c3的值为(A)。

intc1=1,c2=2,c3;

c3=1.0/c2*c1;

A.0B.0.5C.1D.2

15.以下程序的输出结果是(D)。

#include

main()

{inty=3,x=3,z=1;

printf("%d%d\n",(++x,y++),z+2);

}

A.34B.42C.43D.33

 

第四章:

基本语句

1.以下选项中不是C语句的是C。

A){inti;i++;printf("%d\n",i);}B);

C)a=5,c=10D){;}

2.执行以下程序时输入1234567,程序的运行结果为B。

#include

main()

{intx,y;

scanf("%2d%2ld",&x,&y);

printf("%d\n",x+y);

}

A)17B)46C)15D)9

3.若有定义chara;intb;floatc;doubled;,则表达式a*b+c-d结果为型A。

A)doubleB)intC)floatD)char

4.若有定义inta,b;,则用语句scanf("%d%d",&a,&b);输入a,b的值时,不能作为输入数据分隔符的是A。

A),B)空格C)回车D)【Tab】键

5.运行下面的程序,如果从键盘上输入:

ab<回车>

c<回车>

def<回车>

则输出结果为C。

#defineN6

#include

main()

{charc[N];

inti=0;

for(;i

for(i=0;i

}

A)

a

b

c

d

e

f

B)

a

b

c

d

C)

ab

c

d

D)abcdef

6.以下程序的输出结果是A。

#include

main()

{printf("%f",2.5+1*7%2/4);

}

A)2.500000B)2.750000C)3.375000D)3.000000

7.根据定义和数据的输入方式,输入语句的正确形式是B。

已有定义:

floatf1,f2;

数据的输入方式:

4.52

3.5

A)scanf("%f,%f",&f1,&f2);B)scanf("%f%f",&f1,&f2);

C)scanf("%3.2f%2.1f",&f1,&f2);D)scanf("%3.2f,%2.1f",&f1,&f2);

8.以下程序不用第3个变量,实现将两个数进行对调的操作,请填空。

#include

main()

{inta,b;

scanf("%d%d",&a,&b);

printf("a=%db=%d",a,b);

a=a+b;b=a-b;a=B;

printf("a=%db=%d\n",a,b);

}

A)a+bB)a-bC)b*aD)a/b

 

第五章:

选择结构

1.以下选项中,能正确表示a≥10或a≤0的关系表达式是___D__。

A)a>=10ora<=0B)a>=10|a<=0C)a>=10&&a<=0D)a>=10||a<=0

2.假定所有变量均已正确定义,下列程序段运行后x的值是__B___。

a=b=c=0;x=35;

if(!

a)x--;

elseif(b);

if(c)x=3;

elsex=4;

A)34B)4C)35D)3

3.以下程序的输出结果___A__。

#include

main()

{inta,b,c=246;

a=c/100%9;

b=(-1)&&(-1);

printf("%d,%d\n",a,b);

}

A)2,1B)3,2C)4,3D)2,-1

4..已知a=1、b=3、c=5、d=5,下列程序段运行后,x的值是__B___。

if(a

if(c

else

if(a

if(b

elsex=3;

elsex=6;

elsex=7;

A)1B)2C)3D)6

5.能正确表示a和b同时为正或同时为负的表达式是__D___。

A)(a>=0||b>=0)&&(a<0||b<0)B)(a>=0&&b>=0)&&(a<0&&b<0)

C)(a+b>0)&&(a+b<=0)D)a*b>0

6.以下程序的输出结果是__C___。

#include

main()

{inta=-1,b=1;

if((++a<0)&&!

(b--<=0))

printf("%d%d\n",a,b);

else

printf("%d%d\n",b,a);

}

A)-11B)01C)10D)00

7.下列关于switch语句和break语句的结论中,正确的是_B____。

A)break语句是switch语句中的一部分

B)在switch语句中可以根据需要使用或不使用break语句

C)在switch语句中必须使用break语句

D)break语句只能用于switch语句中

8.若有定义inta=1,b=0;,则执行以下语句后,输出为___B__。

switch(a)

{case1:

switch(b)

{case0:

printf("**0**");break;

case1:

printf("**1**");break;

}

case2:

printf("**2**");break;

}

A)**0**B)**0****2**

C)**0****1****2**D)有语法错误

9.以下程序的输出结果是__A___。

#include

main()

{intx=1,a=0,b=0;

switch(x)

{case0:

b++;

case1:

a++;

case2:

a++;b++;

}

printf("a=%d,b=%d\n",a,b);

}

A)a=2,b=1B)a=1,b=1C)a=1,b=0D)a=2,b=2

10.以下程序的输出结果是___C__。

#include

main()

{inta=12,b=5,c=-3;

if(a>b)

if(b<0)c=0;

elsec++;

printf("%d\n",c);

}

A)0B)1C)-2D)-3

11.阅读以下程序:

#include

main()

{intx;

scanf("%d",&x);

if(x--<5)printf("%d",x);

elseprintf("%d",x++);

}

程序运行后,如果从键盘输入5,则输出结果是__B___。

A)3B)4C)5D)6

12.两次运行下面的程序,如果从键盘上分别输入6和4,则输出的结果是_A____。

#include

main()

{intx;

scanf("%d",&x);

if(x++>5)printf("%d",x);

elseprintf("%d\n",x--);

}

A)7和5B)6和3C)7和4D)6和4

第6章循环结构

1.在while(x)语句中的x与下面条件表达式等价的是。

D

A)x==0B)x==1C)x!

=1D)x!

=0

2.以下程序的输出结果是。

D

#include

main()

{intk,j,m;

for(k=5;k>=1;k--)

{m=0;

for(j=k;j<=5;j++)

m=m+k*j;

}

printf("%d\n",m);

}

A)124B)25C)36D)15

3.以下程序的输出结果是。

D

#include

main()

{intx=10,y=10,i;

for(i=0;x>8;y=++i)

printf("%d%d",x--,y);

}

A)10192B)9876C)10990D)101091

4.以下程序的输出结果是。

A

a=1;b=2;c=2;

while(a

printf("%d,%d,%d",a,b,c);

A)1,2,0B)2,1,0C)1,2,1D)2,1,1

5.以下for循环体的执行次数是。

C

#include

main()

{inti,j;

for(i=0,j=1;i<=j+1;i+=2,j--)printf("%d\n",i);

}

A)3B)2C)1D)0

6.有以下程序:

#include

main()

{intn=9;

while(n>6){n--;printf("%d",n);}

}

该程序段的输出结果是。

B

A)987B)876C)8765D)9876

7.有以下程序段:

A

intk=0;

while(k=1)k++;

while循环执行的次数是。

A)无限次B)有语法错,不能执行C)一次也不执行D)执行一次

8.以下程序中,while循环的循环次数是。

D

#include

main()

{inti=0;

while(i<10)

{if(i<1)continue;

if(i==5)break;

i++;

}

}

A)1B)10

C)6D)死循环,不能确定次数

9.以下程序的输出结果是。

B

#include

main()

{inti=0,a=0;

while(i<20)

{for(;;)

{if((i%10)==0)break;

elsei--;

}

i+=11;a+=i;

}

printf("%d\n",a);

}

A)21B)32C)33D)11

10.语句while(!

E);中的条件!

E等价于。

A

A)E==0B)E!

=1C)E!

=0D)~E

11.以下的for循环。

C

for(x=0,y=0;(y!

=123)&&(x<4);x++);

A)是无限循环B)循环次数不定

C)循环执行4次D)循环执行3次

12.执行以下程序段的结果是。

B

intx=23;

do

{printf("%d",x--);

}while(!

x);

A)打印出321B)打印出23

C)不打印任何内容D)陷入死循环

第7章:

数组

1.有以下程序:

#include

#include

main()

{chara[]={'a','b','c','d','e','f','g','h','\0'};

inti,j;

i=sizeof(a);j=strlen(a);

printf("%d,%d\n",i,j);

}

程序运行后的输出结果是。

D

A)9,9B)8,9C)1,8D)9,8

2.以下程序中函数reverse()的功能是将a所指数组中的内容进行逆置存放。

#include

voidreverse(inta[],intn)

{inti,t;

for(i=0;i

{t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}

}

main()

{intb[10]={1,2,3,4,5,6,7,8,9,10};inti,s=0;

reverse(b,8);

for(i=6;i<10;i++)s+=b[i];

printf("%d\n",s);

}

则程序运行后的输出结果是。

A

A)22B)10C)34D)30

3.有以下程序:

main(intargc,char*argv[])

{intn,i=0;

while(argv[1][i]!

='\0')

{n=fun();i++;}

printf("%d\n",n*argc);

}

intfun()

{staticints=0;

s+=1;

returns;

}

假设程序经编译、连接后生成可执行文件exam.exe,若键入以下命令行

exam123<回车>

则运行结果为。

A

A)6B)8C)3D)4

4.以下程序的输出结果是。

A

#include

#include

main()

{charstr[12]={'s','t','r','i','n','g'};

printf("%d\n",strlen(str));}

A)6B)7C)11D)12

5.若有说明:

inta[3][4];,则对数组a元素非法引用的是。

D

A)a[0][2*1]B)a[1][3]C)a[4-2][0]D)a[0][4]

6.若有说明:

inta[][4]={0,0};,则以下选项中,不正确的是。

D

A)数组a的每个元素都可得到初值。

B)二维数组a的第一维大小为1

C)因为二维数组a中初值的个数不能被第二维大小的值整除,则第一维的大小等于所得商数再加1,故数组a的行数为1

D)只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0

7.以下程序中有错误的一行是。

D

(1)main()

(2){

(3)inta[3]={1};

(4)inti;

(5)scanf("%d",&a);

(6)for(i=1;i<3;i++)a[0]=a[0]+a[i];

(7)printf("%f\n",a[0]);

(8)}

A)3B)6C)7D)5

8.若有说明:

inta[][3]={1,2,3,4,5,6,7};,则a数组第一维的大小是。

B

A)2B)3C)4D)无确定值

9.若有数组定义:

chararray[]="China";,则数组array所占的空间为。

C

A)4个字节B)5个字节C)6个字节D)7个字节

10.以下程序的输出结果是。

A

#include

#include<string.h>

main()

{chararr[2][4];

strcpy(arr,"you");strcpy(arr[1],"me");

arr[0][3]='&';

printf("%s\n",arr);

}

A)you&meB)youC)meD)err

11.有以下程序:

#include

main()

{intn[5]={0,0,0},i,k=2;

for(i=0;i

printf("%d\n",n[k]);

}

该程序的输出结果是。

D

A)不定值B)2C)1D)0

12.以下程序的输出结果是。

A

#include

main()

{inta[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;

for(i=1;i<3;i++)

for(j=0;j

printf("%d\n",s);

}

A)14B)19C)20D)21

13.当执行以下程序时,如果输入ABC,则输出结果是。

A

#include

#include

main()

{charss[10]="1,2,3,4,5";

gets(ss);strcat(ss,"6789");printf("%s\n",ss);

}

A)ABC6789B)ABC67C)12345ABC6D)ABC456789

14.以下程序的输出结果是。

A

#include

f(intb[],intm,intn)

{inti,s=0;

for(i=m;i

returns;

}

main()

{intx,a[]={1,2,3,4,5,6,7,8,9};

x=f(a,3,7);

printf("%d\n",x);

}

A)10B)18C)8D)15

15.以下程序中函数sort()的功能是对数组a中的数据进行由大到小的排序。

#include

voidsort(inta[],intn)

{inti,j,t;

for(i=0;i

for(j=i+1;j

if(a[i]

}

main()

{intaa[10]={1,2,3,4,5,6,7,8,9,10},i;

sort(&aa[3],5);

for(i=0;i<10;i++)printf("%d,",aa[i]);

printf("\n");

}

程序运行后的输出结果是。

C

A)1,2,3,4,5,6,7,8,9,10,B)10,9,8,7,6,5,4,3,2,1,

C)1,2,3,8,7,6,5,4,9,10,D)1,2,10,9,8,7,6,5,4,3,

16.对两个数组a和b进行如下初始化:

chara[]="ABCDEF";

charb[]={'A','B','C','D','E','F'};

则以下叙述正确的是。

D

A)数组a与数组b完全相同B)数组a与数组b长度相同

C)数组a与数组b中都存放字符串D)数组a比数组b长度长

17.有以下程序段

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1