程序设计基础.docx

上传人:b****6 文档编号:6030539 上传时间:2023-01-03 格式:DOCX 页数:56 大小:39.51KB
下载 相关 举报
程序设计基础.docx_第1页
第1页 / 共56页
程序设计基础.docx_第2页
第2页 / 共56页
程序设计基础.docx_第3页
第3页 / 共56页
程序设计基础.docx_第4页
第4页 / 共56页
程序设计基础.docx_第5页
第5页 / 共56页
点击查看更多>>
下载资源
资源描述

程序设计基础.docx

《程序设计基础.docx》由会员分享,可在线阅读,更多相关《程序设计基础.docx(56页珍藏版)》请在冰豆网上搜索。

程序设计基础.docx

程序设计基础

《程序设计基础》阶段测验(开卷)

(请将答案写在答题纸上)

一、单项选择题(每小题2分,共80分)

(1)下列叙述中错误的是________。

A)一个C语言程序只能实现一种算法

B)C程序可以由多个程序文件组成

C)C程序可以由一个或多个函数组成

D)一个C函数可以单独作为一个C程序文件存在

(2)下列叙述中正确的是________。

A)每个C程序文件中都必须有一个main()函数

B)在C程序中main()函数的位置是固定的

C)C程序可以由一个或多个函数组成

D)在C程序的函数中不能定义另一个函数

(3)下列定义变量的语句中错误的是________。

A)int_int;

B)doubleint_;

C)charFor;

D)floatUSS

(4)若变量x、y已正确定义并赋值,以下符合C语言语法的表达式是________。

A)++x,y=x--

B)x+1=y

C)x=x+10=x+y

D)double(x)/10

(5)以下能正确定义一维数组的选项是________。

A)inta[5]={0,1,2,3,4,5};

B)chara[]={0,1,2,3,4,5};

C)chara={'A','B','C'};

D)inta[5]="0123";

(6)若有定义intx,y;并已正确给变量赋值,则以下选项中与表达式(x-y)?

(x++):

(y++)中的条件表达式(x-y)等价的是________。

A)(x-y>0)

B)(x-y<0)

C)(x-y<║x-y>0)

D)(x-y==0)

(7)有以下程序

main()

{intx,y,z;

x=y=1;

z=x++,y++,++y;

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

}

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

A)2,3,3

B)2,3,2

C)2,3,1

D)2,2,1

(8)设有定义:

inta;floatb;执行scanf("%2d%f",&a,&B);语句时,若从键盘输入876543.0<回车>,a和b的值分别是________。

A)876和543.000000

B)87和6.000000

C)87和543.000000

D)76和543.000000

(9)有以下程序

main()

{inta=0,b=0;

a=10;/*给a赋值

b=20;给b赋值*/

printf("a+b=%d\n",a+B);/*输出计算结果*/

}

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

A)a+b=10

B)a+b=30

C)30

D)出错

(10)在嵌套使用if语句时,C语言规定else总是________。

A)和之前与其具有相同缩进位置的if配对

B)和之前与其最近的if配对

C)和之前与其最近的且不带else的if配对

D)和之前的第一个if配对

(11)下列叙述中正确的是________。

A)break语句只能用于switch语句

B)在switch语句中必须使用default

C)break语句必须与switch语句中的case配对使用

D)在switch语句中,不一定使用break语句

(12)有以下程序

main()

{intk=5;

while(-k)printf("%d",k-=3);

printf("\n");

}

执行后的输出结果是________。

A)1

B)2

C)4

D)死循环

(13)有以下程序

main()

{intI;

for(I=1;I<=40;I++)

{if(I++%5==0)

if(++I%8==0)printf("%d",I);

}

printf("\n");

}

执行后的输出结果是________。

A)5

B)24

C)32

D)40

(14)以下不合法的用户标识符是________。

A)j2_KEY

B)Double

C)4d

D)_8_

(15)以下不合法的数值常量是________。

A)011

B)lel

C)8.0E0.5

D)0xabcd

(16)以下不合法的字符常量是________。

A)'\018'

B)'\”'

C)'\\'

D)‘\xcc'

(17)表达式3.6-5/2+1.2+5%2的值是________。

A)4.3

B)4.8

C)3.3

D)3.8

(18)以下能正确定义字符串的语句是________。

A)charstr[]={‘\064'};

B)charstr=”\x43”;

C)charstr=”;

D)charstr[]=”\0”;

(19)有以下程序

main()

{chara[7]="a0a0";inti,j;

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

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

}

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

A)22

B)76

C)74

D)62

(20)若要求从键盘读入含有空格字符的字符串,应使用函数________。

A)getc()

B)gets()

C)getchar()

D)scanf()

(21)在以下给出的表达式中,与while(E)中的(E)不等价的表达式是________。

A)(!

E=0)

B)(E>0||E<0)

C)(E==0)

D)(E!

=0)

(22)要求通过while循环不断读入字符,当读入字母N时结束循环。

若变量已正确定义,以下正确的程序段是________。

A)while((ch=getchar())!

='N')printf(“%c”,ch);

B)while(ch=getchar()!

='N')printf(“%c”,ch);

C)while(ch=getchar()==N')printf(“%c”,ch);

D)while((ch=getchar())=='N')printf(“%c”,ch);

(23)有以下程序

main()

{

intp[8]={11,12,13,14,15,16,17,18},i=0,j=0;

while(i++<7)if(p[i]%2)j+=p[i];

printf("%d",j);

}

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

A)42

B)45

C)56

D)60

(24)以下叙述中错误的是________。

A)C语句必须以分号结束

B)复合语句在语法上被看作一条语句

C)空语句出现在任何位置都不会影响程序运行

D)赋值表达式末尾加分号就构成赋值语句

(25)以下叙述中正确的是________。

A)调用printf函数时,必须要有输出项

B)使用putchar函数时,必须在之前包含头文件stdio.h

C)在C语言中,整数可以以十二进制、八进制或十六进制的形式输出

D)调用getchar函数读入字符时,可以从键盘上输入字符所对应的ASCII码

(26)若整型变量a、b、c、d中的值依次为:

1、4、3、2。

则条件表达式a

a:

c

c:

d的值________。

A)1

B)2

C)3

D)4

(27)有以下程序

main()

{inti=1,j=2,k=3;

if(i++==1&&(++j==3||k++==3))

printf("%d%d%d",i,j,k);

}

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

A)123

B)234

C)223

D)233

(28)设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是________。

A)6.500000

B)6

C)5.500000

D)6.000000

(29)当把以下四个表达式用作if语句的控制表达式时,有一个选项与其它三个选项含义不同,这个选项是________。

A)k%2

B)k%2==1

C)(k%2)!

=0

D)!

k%2==1

(30)以下能正确定义且赋初值的语句是________。

A)intn1=n2=10;

B)charc=32;

C)floatf=f+1.1;

D)doublex=12.3E2.5;

(31)以下程序的功能是:

给r输入数据后计算半径为r的圆面积s。

程序在编译时出错。

main()

/*Beginning*/

{intr;floats;

scanf("%d",&r);

s=*p*r*r;printf("s=%f\n",s);

}

出错的原因是________。

A)注释语句书写位置错误

B)存放圆半径的变量r不应该定义为整型

C)输出语句中格式描述符非法

D)计算圆面积的赋值语句中使用了非法变量

(32)设有定义:

intk=1,m=2;floatf=7;,则以下选项中错误的表达式是________。

A)k=k>=k

B)-k++

C)k%int(f)

D)k>=f>=m

(33)设有定义:

inta=2,b=3,c=4;,则以下选项中值为0的表达式是________。

A)(!

a==1)&&(!

b==0)

B)a

C)a&&b

D)a||(b+‘B’)&&(c-‘A’)

(34)有以下程序段

intk=0,a=1,b=2,c=3;

k=a>c?

c:

k;

执行该程序段后,k的值是________。

A)3

B)2

C)1

D)0

(35)有以下程序段

intn,t=1,s=0;

scanf("%d",&n);

do{s=s+t;t=t-2;}while(t!

=n);

为使此程序段不陷入死循环,从键盘输入的数据应该是________。

A)任意正奇数

B)任意负偶数

C)任意正偶数

D)任意负奇数

(13)

(36)数字字符0的ASCII值为48,若有以下程序

main()

{chara='1',b='2';

printf("%c,",b++);

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

}

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

A)3,2

B)50,2

C)2,2

D)2,50

(37)有以下程序

main()

{intm=12,n=34;

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

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

}

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

A)12353514

B)12353513

C)12343514

D)12343513

(38)有定义语句:

intb;charc[10];,则正确的输入语句是________。

A)scanf("%d%s",&b,&c);

B)scanf("%d%s",&b,c);

C)scanf("%d%s",b,c);

D)scanf("%d%s",b,&c);

(39)有以下程序

main()

{intm,n,p;

scanf("m=%dn=%dp=%d",&m,&n,&p);

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

}

若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是________。

A)m=123n=456p=789

B)m=123n=456p=789

C)m=123,n=456,p=789

D)123456789

(40)有以下程序

main()

{

inta,b,d=25;

a=d/10%9;

b=a&&(-1);

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

}

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

A)6,1

B)2,1

C)6,0

D)2,0

二、程序设计题(每小题10分,共20分)

1.使用循环语句编程实现:

打印下面的图形。

123456789

223456789

333456789

444456789

555556789

666666789

777777789

888888889

999999999

2.使用数组编程实现:

从键盘输入一串字符(可能含空格),逆序输入这些字符。

第3章选择结构程序设计

一、选择题

5.1在C程序中,判逻辑值时,用“非0”表示逻辑值“真”,又用“0”表示逻辑值“假”。

在求逻辑值时,用()表示逻辑表达式值为“真”,又用()表示逻辑表达式值为“假”。

A

A)10B)01

C)非0非0D)11

5.2已知intx=6,y=2,z;则执行表达式z=x=x>y后,变量z的值为B

A)0B)1C)4D)5

5.3能正确表示逻辑关系:

“a≥10或a≤0”的C语言表达式是D

A)a>=10ora<=0B)a>=0|a<=10

C)a>=10&&a<=0D)a>=10‖a<=0

5.4若变量c为char类型,能正确判断出c为小写字母的表达式是D

A)′a′<=c<=′z′

B)(c>=′a′)||(c<=′z′)

C)(′a′<=c)and(′z′>=c)

D)(c>=′a′)&&(c<=′z′)

5.5设intx=1,y=1;表达式(!

x||y--)的值是B

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

5.6有如下程序段

inta=14,b=15,x;

charc=′A′;

x=(a&&b)&&(c<′B′);

执行该程序段后,x的值为D

A)tureB)falseC)0D)1

5.7以下程序的输出结果是A

main()

{

inta=4,b=5,c=0,d;

d=!

a&&!

b||!

c;

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

A)1B)0C)非0的数D)-1

5.8设有:

inta=1,b=2,c=3,d=4,m=2,n=2;

执行(m=a>b)&&(n=c>d)后n的值是B

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

5.9已知x,y,z均为整型变量,且值均为1,则执行语句++x||++y&&++z;后,表达式x+y的值为C

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

5.11若运行时给变量x输入12,则以下程序的运行结果是A

main()

{intx,y;

scanf("%d",&x);

y=x>12?

x+10:

x-12;

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

}

A)0B)22C)12D)10

5.12已知charch=′C′;则以下表达式的值是D

ch=(ch>=′A′&&ch<=′Z′)?

(ch+32):

ch;

A)AB)aC)ZD)c

5.13若有条件表达式(exp)?

a++:

b--,则以下表达式中能完全等价于表达式(exp)的是B

A)(exp==0)B)(exp!

=0)

C)(exp==1)D)(exp!

=1)

5.14有以下程序C

main()

{inti=1,j=1,k=2;

if((j++||k++)&&i++)

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

}

执行后输出结果是

A)1,1,2B)2,2,1

C)2,2,2D)2,2,3

5.15请阅读以下程序:

D

main()

{inta=5,b=0,c=0;

if(a=b+c)printf("***\n");

elseprintf("$$$\n");

}

以上程序

A)有语法错不能通过编译

B)可以通过编译但不能通过连接

C)输出***

D)输出$$$

5.16若执行下述程序时,若从键盘输入6和8时,结果为C

main()

{inta,b,s;

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

s=a;

if(a

s=b;

s*=s;

printf("%d",s);

}

A)36B)64

C)48D)以上都不对

5.17有如下程序

main()

{floatx=2.0,y;

if(x<0.0)y=0.0;

elseif(x<10.0)y=1.0/x;

elsey=1.0;

printf("%f\n",y);}

该程序的输出结果是C

A)0.000000B)0.250000

C)0.500000D)1.000000

5.18以下4个选项中,不能看做一条语句的是C

A);B)a=5,b=2.5,c=3.6;

C)if(a<5);D)if(b!

=5)x=2;y=6;

5.19若intk=8;则执行下列程序后,变量k的正确结果是D

main()

{intk=8;

switch(k)

{case9:

k+=1;

case10:

k+=1;

case11:

k+=1;break;

default:

k+=1;}

printf("%d\n",k);}

A)12B)11

C)10D)9

5.20阅读如下程序段D

#include"stdio.h"

main()

{inta=45,b=40,c=50,d;

d=a>30?

b:

c;

switch(d)

{case30:

printf("%d,",a);

case40:

printf("%d,",b);

case50:

printf("%d,",c);

default:

printf("#");}}

则输出的结果是

A)40,50,B)50,#

C)40,#D)40,50,#

5.21现有如下程序段,此程序段编译有错误,则程序段的错误出在

#include

main()

{inta=30,b=40,c=50,d;

d=a>30?

b:

c;

switch(d)

{casea:

printf("%d,",a);

caseb:

printf("%d,",b);

casec:

printf("%d,",c);

default:

printf("#");}}

A)default:

printf("#");这个语句

B)d=a>30?

b:

c;这个语句

C)casea:

printf("%d,",a);caseb:

printf("%d,",b);casec:

printf("%d,",c);这三个语句

D)switch(d)这个语句

二、填空题

5.22设y是int型,请写出y为奇数的关系表达式【1】。

y%2!

=0或者y%2==1

5.24将以下程序写成三目运算表达式是【3】。

a>b?

a:

b

if(a>b)max=a;

elsemax=b;

5.25以下程序输出的结果是【4】。

0

main()

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

d=(a>b>c);

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

}

5.26若从键盘输入58,则以下程序输出的结果是【5】。

585858

main()

{inta;

scanf("%d",&a);

if(a>50)printf("%d",a);

if(a>40)printf("%d",a);

if(a>30)printf("%d",a);

}

5.29以下程序的输出结果是【8】。

-1

main()

{intx=100,a=10,b=20,ok1=5,ok2=0;

if(a

=15)

if(!

ok1)x=1;

elseif(ok2)x=10;

elsex=-1;

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

5.30阅读下面的程序,当程序在执行时,如果输入的是′A′,则输出结果为【9】。

#include"stdio.h"

main()

{chara;

a=getchar();

switch(a)

{case65:

printf("%c",′A′);

case66:

printf("%c",′B′);

default:

printf("%s\n","other");}}ABother(因为没有break语句。

第3章循环结构控制

一、选择题

1.设有程序段

intk=10;

while(k=0)k=k-1;

这下面描述中正确的是___c______.

a)while循环执行10次b)循环是无限循环

c)循环体语句一次也不执行d)循环体语句执行一次

2.语句while(!

E);中的表达式!

E等价于__a______.

a)E==0b)E!

=1c)E!

=0d)E==1

3.下面程序段的运行结果是_____c_____.

intn=0;

while(n++<=2);printf("%d",n);

a)2b)3c)4d)有语法错

4.下面程序的运行结果是__b__.

#include

main()

{

intnum=0;

while(num<=2)

{

num++;

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

}

}

a)1b)1c)1d)1

222

33

4

5.以下程序段____c____.

x=-1;

do{

x=x*x;

}

while(!

x);

a)是死循环b)循环执行二次

c)循环执行一次d)有语法错误

6.若有如下语句

intx=3;

do{printf("%d\n",x-=2);}while(!

(--x));

则上面程序段__b____.

a)输出的是1b)输出的是1和-2

c)输出的是3和0d)是死循环

7.下面程序的运行结果是___d___.

#include

main()

{inty=10;

do{y--;}while(--y);

printf("%d\n",y--);

}

a)-1b)1c)8d)0

8.以下正确的描述是___b____.

a)continue语句的作用是结束整个循环的执行

b)只能在循环体内和switch语句体内使用break语句

c)在循环体内使用break语句或continue语句的作用相同

d)从多层循环嵌套中退出时,只能使用goto语句

二、填空题

1.下面程序段是从键盘输入的字符中统计数字字符的个数,用换行符结束

循环。

请填空。

intn=0,c;

c=getchar();

while(__c!

=’\n’__)

{

if(__c>=’0’&&c<=’9’___)n++;

c=getchar();

}

2.下面程序的功能是用"辗转相除法"求两个正整数的最大公约数。

请填空。

#include

main()

{intr,m,

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

当前位置:首页 > 自然科学

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

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