admin 管理员组文章数量: 887021
2023年12月16日发(作者:sqlserver left join)
习题一
一、选择题
1.C语言是一种( C )。
A. 低级语言 B. 汇编语言 C. 高级语言 D. 机器语言
2.以下不是C语言的特点的是( D )。
A.语言简洁紧凑 B.可以直接对硬件进行操作
C.数据类型丰富 D.是面向对象的程序设计语言
3.一个C程序的执行是从( A )。
A. 本程序的main函数开始,到main函数结束
B. 本函数的第一个数开始,到本程序文件的最后一个函数结束
C. 本程序的main函数开始,到本程序文件的最后一个函数结束
D. 本函数的第一个数开始,到本程序main函数结束
4.以下叙述正确的是( C )。
A. 在C程序中,main函数必须位于程序的最前面
B.C程序的每行只能写一条语句
C. C语言的本身没有输入输出语句
D. 在对一个C程序进行编译的过程中,可以发现注释中的拼写错误
5.以下叙述不正确的是( D )。
A. 一个C源程序可由一个或多个函数组成
B. 一个C源程序必须包括一个main函数
C. C程序的基本组成单位是函数
D. 在C程序中,注释说明只能位于一条语句的后面
6.C语言规定:在一个源程序中,main函数的位置( C )。
A. 必须在最开始B. 必须在系统调用的库函数的后面
C. 可以任意D. 必须在最后
7.一个C语言程序是由( B )。
A. 一个主程序和若干子程序组成B. 函数组成
C. 若干过程组成D. 若干子程序组成
8.以下叙述中正确的是( C )。
A. C程序的基本组成单位是语句 B. C程序中的每一行只能写一条语句
C. C语句必须以分号结束D. C语言必须在一行写完
9.以下叙述中正确的是( C )。
A. C程序中的注释只能出现在程序的开始位置和语句的后面
B. C程序书写格式严格,要求一行只能写一个语句
1 / 82
C. C程序书写格式自由,一个语句可以写在多行上
D. 用C语言编写的程序只能放在一个程序文件中
10.以下叙述中正确的是( C )。
A. C语言程序将从源程序中第一个函数开始执行
B. 可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行
C. C语言规定必须用main作为主函数名,程序从此开始执行,在此结束
D. main可作为用户标识符,用以命名任意一个函数作为主函数
11.下列叙述中正确的是( A )。
A. 每个C程序文件中都必须要有一个main函数
B. 在C程序中main()位置是固定的
C. C程序中所有函数之间都可以相互调用,与函数所在位置无关
D. 在C程序的函数中不能定义另一个函数
12.C语言源程序的基本单位是( B )。
A. 过程 B. 函数 C. 子程序 D. 标识符
13.下列关于算法的特点描述中错误的是( D )。
A.有穷性 B.确定性 C.有零个或多个输入 D.有零个或多个输出
14.以下选项中不属于算法特性的是( C )。
A. 有穷性 B. 确定性 C. 简洁性 D. 有效性
15.用C语言编写的代码程序( B )。
A. 可立即执行 B. 是一个源程序
C. 经过编译即可执行 D.经过编译解释才能执行
二、填空题
1.C语言的源程序必须通过编译和连接后,才能被计算机执行。
2.C语言源程序文件的后缀是.c;经过编译后,生成文件的后缀是. obj;经过连接后,生成文件的后缀是.exe。
3.C语言从源程序的书写到上机运行输出结果要经过编辑、 编译、连接、执行四个步骤。
4.结构化程序由顺序结构、选择结构和循环结构三种基本结构组成。
5.C语言源程序的基本单位是函数。
6.一个C语言源程序是由若干函数组成,其中至少应含有一个主函数(或main函数)。
7.在一个C语言源程序中,注释部分两侧的分界符为/* …*/。
8.算法是程序设计的灵魂。
9.C语言程序只能从main函数开始执行。
10.自然语言、流程图和伪代码都可以用来表示算法,其中流程图是算法的图形化表示方法。
2 / 82
三、编程/思考题
1.简述C语言的主要特点。
1.C语言的主要特点有:(1)C语言具有结构化的高级编程语言应有的所有高级指令,使程序员不需要知道硬件细节。同时,C也具有一些低级指令,允许程序员能够直接快速地访问硬件。(2)C语言是结构式语言。(3)C语言是一种高效的语言。(4)C语言简洁紧凑,使用方便灵活。(5)C语言运算符丰富。(6)C语言是一种可移植性语言。
2.要得到一个可以正常运行的C语言程序,一般经过哪几个过程?
编辑C语言程序源代码,编译源文件,连接程序,执行程序。
3.算法具有哪些特点?
3.算法具有以下特点:(1)有穷性;(2)确定性;(3)有零个或多个输入;(4)有一个或多个输出;(5)有效性。
4.用流程图表示求解1×2×3×4×5的算法。
5.参照本章例题,编写一个C程序,输出以下信息:
*********************************
This is a simple C program!
答.#include
void main()
{
printf("*********************************n");
printf("This is a simple C program!n");
printf("*********************************n");
习题二
一、选择题
1.下列几个选项中,属于C语言的基本数据类型的是( B )。
A.整型、实型、结构体类型 B.整型、实型、字符型
C.整型、逻辑型、实型D.整型、字符型、数组类型
2.C语言规定,标识符的命名只能由字母、数字和下划线三种字符组成,且第一个字符( C )。
A.必须是字母 B.必须是下划线 C.必须是字母或下划线 D.必须是数字
3 / 82
3.下列标识符中,合法的标识符为( B )。
A.6adc B._max1 C.a*$bn D.123bc
4.下列标识符中,不合法的标识符为( A )。
A. intB. _n5C. i_5abD. q5n
5.下列不合法的字符常量是( D )。
A.‘a’ B.’”’ C.’n’ D.”a”
6.下列不合法的字符串常量是( A )。
A.‘abc’ B.”abc” C.”dfb345” D.””
7.下列不合法的转义字符是( D )。
A. ‘ ’ B. ‘t’C. ‘x6a’ D.’89’
8.下面四个选项中,均是不合法的转义字符的选项是( B )。
A. ‘’’‘t’‘’
B. ‘1234’‘018’‘x3h’
C. ‘n’‘16’‘”‘
D. ‘x8a’‘&’‘101’
9.下列整型常量中,不合法的是( D )。
A.89 B. -16 C. 0x4b D.0668
10.下面四个选项中,均是不合法的整型常量的选项是( A )。
A. -0f1 018 2e5
B. 25 0xf3 3.5
C. 065 -54 -0a4
D. 013 0xk5 -069
11.下列实型常量中,不合法的是( C )。
A. 0.0B. .123 C. 123 D. 2.34
12.下列实型常量中,合法的是( D )。
A. e3 B. 2e4.3 C.–e4 D. 2e-4
13.下面四个选项中,均是不合法的实型常量的选项是( B )。
A. 3e5.4 0.0 2e5
B. e5 5e2.5 68
C. 3.14 2e-4 123e-5
D. 0.98 -e-3 123e
14.在C语言中,int、char和short 三种类型数据在存中所占用的字节数( D )。
A. 由用户自己定义 B. 均为2个字节
C. 是任意的 D.由所使用的编译系统决定
15.若有说明语句:char c=’72’;则变量c( A )。
A.包含1个字符 B.包含2个字符
C.包含3个字符 D.说明不合法,c的值不确定
16.设变量a是整型,f是实型,i是双精度型,则表达式10+’a’+i*f值的数据类型为( C
4 / 82
。 )
A. int B. float C. double D.不确定
17.设有说明语句:char w; int x; float y; double z; 则表达式w*x+z-y值的数据类型为(D)。
A. float B. char C. int D. double
18.在C语言中,负整数在存中的存储形式是( A )。
A. 补码 B. 反码 C. 原码 D. ASCII码
19.在C语言中,字符型数据在存中的存储形式是( D )。
A. 补码 B. 反码 C. 原码 D. ASCII码
20.在C语言中,实型数据在存中的存储形式是( B )。
A. 小数形式 B. 指数形式 C. 十进制形式 D. ASCII码
21. 在C语言中,设一个short型数据在存中占用2个字节存储,则unsigned short 型数据的取值围为( C )。
A. 0~255 B. 0~32767 C. 0~65535 D. 0~2147483647
22.在C语言中,设一个float型数据在存中占用4个字节来存储,则一个float型数据的有效数字位数为( B )。
A. 5位B. 6~7位C.15~16位D. 18~19位
23.已知小写字母’a’的ASCII码为十进制数97,则执行语句c=’a’+2后,变量c中的字符为( B )。
A. AB. cC. CD. b
24.设有定义float x=3.5;则执行(int)x之后,x的值为( A )。
A. 3.500000 B. 3C. 4D. 3.0
25.若想确定所使用的编译系统中,int型数据所占用的存储宽度,可使用( B )进行测试。
A.(int) (int) C.(int)x D.(sizeof) int
二、填空题
1.C语言中的实型变量分为两种类型,它们是float和double。
2.C语言中的常量分为普通常量和符号常量两种类型
3.C语言中的标识符只能由3种字符组成,他们是字母、数字、下划线、和。
4.在C语言中,有一类特殊字符以“”开头,称为转义字符。转义字符’n’的功能是 回车换行;转义字符’r’的功能是 ,回车不换行。
5.在C语言中,用关键字float定义单精度实型变量,用关键字 DOUBLE 定义双精度实型变量,用关键字char定义字符型变量。
6.要定义双精度实型变量a和b,并使它们的初值都为5.6,则定义语句为doube a=5.6,b=5.6;。
7. 设C语言中一个short型数据占用2个字节存储,一个int型数据占用4个字节存储,则要将数值32768正确无误的存储在变量x中,应使用的定义语句为int x=32768。
8.若有定义 char ch;则执行ch=’A’+32后,变量ch中的字符为‘a’。
9.以下程序运行后的输出结果是9,90。
#include
void main()
5 / 82
{
int x=011,y=0x5a;
printf("%d,%dn",x,y);
}
10. 以下程序的输出结果是Beijing
China。
# include
void main( )
{
printf("BeijingnChinan",n);
}
三、思考题
1.C语言规定对所有用到的变量必须“先定义,后使用”,这样做有什么好处?
1.解:C语言中,要求对所有用到的变量“先定义,后使用”,这样做的好处是:能够保证程序中变量名使用得正确;在编译时就能为变量分配相应的存储单元;便于在编译过程中检查对该变量进行的运算是否合法。
2.字符常量和字符串常量有什么区别?
2.解:字符常量是一个字符,在程序中是用单撇号括起来的;字符串常量由0个或若干个字符组合而成,在程序中是用双撇号括起来的,在存储时,系统自动在字符串最后加上一个字符串结束符’0’。
3.若想要将一个大写字母转换为对应的小写字母,可以如何操作?
3.解:在存中,字符型数据以ASCII码存储,ASCII码是一串二进制编码,每个字符的ASCII码对应一个整数值,大写字母与其对应小写字母的ASCII码对应整数值相差32。因此,要将一个大写字母转换为小写字母,只需将该变量的值加上32即可。
4.常量’a’与”a”在存中所占用的字节数是否相同?为什么?
4.解:常量’a’与”a”在存中所占用的字节数不相同,因为’a’是字符常量,在存中占用一个字节存储,而”a”是字符串常量,在存中存储时,系统自动在其后加上一个字符串结束符’0’,在存中占用2个字节存储。
5.若有定义int a;float f,则表达式’c’+a+f的结果为何种数据类型?为什么?
5.若有定义int a;float f,则表达式’c’+a+f的结果为double型。因为表达式中f为float型,在计算之前必须先转换为double型,根据数据类型的自动转换规则,表达式的结果为double6 / 82
型。
6.设C语言中,一个short型数据占用2个字节存储,若有定义 short x=-12,则变量x的值-12在存中存储的二进制代码是如何表示的?
6.解:整数在存中以补码形式存储,负数的补码为反码+1,所以,当x=-12时,其在存中的存储形式为:1111 1111 1111 0100。
7.设C语言中,一个short型数据占用2个字节存储,若有定义short x=32768,则用输出语句printf(”%dn”,x);输出x值为多?为什么?
7.解:输出结果为-32768,因为一个short型数据在存中占用2个字节存储,所能表示的数值围为-32768~32767,当x=32768时,超出了其能表示的围,发生了溢出,数值32768的二进制编码的16位正好对应数值-32768。
8.若有x为int型变量,则执行x=3.14后,变量x的值为多少?为什么?
8.解:若有x为int型变量,则执行x=3.14后,变量x的值为3,因为x为int型变量,不能存储实型数据,当把一个实型数据赋给x时,发生了数据类型转换,系统自动把实型数据的小数部分舍去。
9. 分析下面两个程序运行结果是否相同?为什么?
程序A: #include
void main( ) void main( )
{ {
char c1,c2; int c1,c2;
c1=’a’; c1=97;
c2=’b’; c2=98;
printf(“%c,%cn”,c1,c2); printf(“%c,%cn”,c1,c2);
} }
9.解:两个程序的运行结果相同。因为字符型数据以ASCII码存储,ASCII码是一串二进制编码,每个字符的ASCII码对应一个整数值。因此,在一定围,整型数据和字符型数据是可以通用的。字符’a’和’b’对应的ASCII编码值分别为97,98。
10. 分析下面程序的运行结果:
#include
void main()
{
char c1='A',c2='B',c3='C',c4='101',c5='x42';
7 / 82
printf("a%cb%ctc%ctabcn",c1,c2,c3);
printf("%ct%c bBn",c4,c5);
aAbB□□□□cC□□□□□□abc
A□□□□□□□BB
}
习题三
一、选择题
1.若有代数式3aebc,则不正确的C语言表达式是( C )。
A. a/b/c*e*3 B. 3*a*e/b/c C. 3*a*e/b*c D. a*e/c/b*3
2.在C语言中,要求运算数必须是整型的运算符是( D )。
A. / B. = C. ++ D. %
3.若有定义语句:int a=7;float x=2.5,y=4.7; 则表达式x+a%3*(int)(x+y)%2/4的值(A
A.2.500000 B. 2.750000 C
4.若有定义int x=5,y=2,则表达式5/2的结果为( B )。
A. 2.5 B.2 C. 2.0 D. 3
5.判断char型变量ch是否为大写字母的正确表达式是( C )。
A.‘A’<=ch<=’Z’B. (ch>=’A’)&(ch<=’Z’)
C. (ch>=’A’)&&(ch<=’Z’)D. (ch>=’A’)and(ch<=’Z’)
6.为表示关系a≥b≥c,则正确的C语言表达式为( C )。
A. a>=b>=cB. (a>=b)&(b>=c)
C. (a>=b)&&(b>=c) D. (a>=b)||(b>=c)
7.逻辑运算符两侧运算对象的数据类型( D )。
A.只能是0或1 B.只能是0或非0正数
C.只能是整型或字符型 D.可以是任何数据类型
8.下列运算符中,优先级最高的是( B )。
A. < B. + C. && D. ==
9.设x、y、z是int型变量,且有x=3,y=4,z=5,则下面表达式中值为0的是(D )。A. ‘x’&&’y’B. x<=y
C.x||y+z&&y-z D. !((x 10.已知x=43,ch=’A’,y=0;则表达式(x>=y&&ch<’B’&&!y)的值为( B )。 8 / 82 。 ) A. 0 B.1 C.“假” D. true 11.下列表达式中,不满足条件“当x为奇数时值为真,当x为偶数时值为假”的是( C )。 A. x%2==1 B. !(x%2==0) C. !(x%2) D. x%2 12.设有int a=1,b=2,c=3,d=4,m=2,n=2;则执行表达式(m=a>b)&&(n=c>d)后,n的值为( C )。 A. 0 B. 1 C. 2 D. 3 13.判断char型变量c是否为0到9的数字的正确表达式为( C )。 A.‘0’<=c<=’9’B. 0<=c<=9C. c>=’0’&&c<=’9’D.c>=0&&c<=9 14.设有int x=3,y=4,z=5,则执行表达式!(x+y)+z-1&&y+z/2的结果是( D )。 A. 6B. 0 C. 2D. 1 15.以下程序的运行结果是( B )。 #include void main( ) { int a,b,d=241; a=d/100%9; b=(-1)&&(-1); printf(“%d,%dn”,a,b); } A. 6,1 B. 2,1 C. 6,0 D. 2,0 16.执行以下语句后x的值为,y的值为( C )。 int x=5,y=6,t=1,a=2,b=3,z=4; (x=t>a)&&(y=b>z) A. 5,6 B. 5,0 C. 0,6 D. 0,0 17.以下表达式中,与表达式!a等价的是( D )。 A. a==0B. a==1C. !a==0D. !a==1 18.以下符合C语言语法的赋值表达式是( D )。 A. a=10+n+m=a+3 B. a=10+m,b=a+5 C.b=b*8=2D. a+=a-=(m=4)*(n=3) 19.若有int a=7,b=12,则以下表达式中,值为3的是( D )。 A. b%=(a%=5)B.b%=(a-a%5) C. b%=a-a%5 D. (b%=a)-(a%=5) 20.已知各变量的类型说明如下。 int a=2,b; double x=2.56; 则以下不符合C语言语法的表达式是( A )。 A. x%(-3) B. a+=2 C. a+=a-=(b=4) D. x/=(b=3) 9 / 82 21.设以下变量均为int类型,则值不等于7的表达式是( C )。 A. (x=y=6,x+y,x+1) B. (x=y=6,x+y,y+1) C. (x=6,x+1,y=6,x+y) D. (y=6,y+1,x=y,x+1) 22.若x,i,j,k都是int型变量,则执行表达式x=(i=4,j=16,k=32)后,x的值为( C )。 A. 4B. 16C. 32D. 52 23.执行下面程序段后,输出结果为( C )。 int x=13,y=5;printf(“%d”,x%=(y/2)); A. 3B. 2C. 1D. 0 24.设x,y均为float型变量,则以下不合法的赋值语句是( B )。 A. x=0.0B. y=(x%2)/10;C. x*=y+8;D. x=y=0; 25.设int a=10,则执行语句a+=a*=a/5+10;后,a的值是( A )。 A.240 B.120 C.30 D.60 26.设有定义语句int x=2;则以下表达式中,值不为6的是( D )。 A. x*=x+1 B. x=2,3*x C. x*=(1+x) D. 2*x,x+=2 27.已知变量x、y、z都为int型,则执行z=2+(y=1,y+=1,x=y,x+8)后,x和z的值分别为( A )。 A.x=2,z=12 B.x=2,z=10 C.x=10,z=12 D.x=10,z=10 28.若w=1,x=2,y=3,z=4,则条件表达式w A. 4 B. 3 C. 2 D. 1 29.若w、x、y、z、m均为int型变量,则执行下面语句后,m的值为( A )。 w=1;x=2,y=3;z=4 m=(w m=(m m=(m A. 1 B.2 C. 3 D. 4 30.若运行时给变量x输入12,则以下程序的运行结果是( A )。 #include void main( ) { int x,y; scanf(“%d”,&x); y=x>12?x+10:x-12; printf(“%dn”,y); } A. 0 B.22 C. 12 D. 10 31.若已知num、sum均为int型变量,且num=sum=7;则计算表达式sum=num++,sum++后,sum的值为( B )。 10 / 82 A. 7 B. 8 C. 9 D. 10 32.若有int x=11,则表达式(x++*1/3)的结果为( B )。 A. 5 B. 3 C. 4 D. 6 33.若有定义语句:int x=3;则以下表达式中,值为5的是( A )。 A. ++x,x+1 B. x+=2,--x C. x+=2,x+1 D. x++,x++ 34.若已知m,n,x,y为int型变量,则执行以下语句后,变量y的值为( D )。 m=10;n=5; x=(--m==n++)?--m:++n; y=n; A. 5 B. 10 C. 6 D. 7 35.执行以下程序段后,变量a,b,c的值分别为(B )。 int x=10,y=9; int a,b,c; a=(--x==y++)?--x:++y; b=x++; c=y; A. a=9,b=9,c=9 B. a=8,b=8,c=10C. a=9,b=10,c=9 D. a=1,b=11,c=10 36.以下程序的输出结果是( C )。 #include void main( ) { int w=3,z=7,x=10; printf(“%dn”,x>10?x+100:x-10); printf(“%dn”,w++||z++); printf(“%dn”,!w>z); printf(“%dn”,w&&z); } A. 0 B.1 C. 0 D. 0 1 1 1 1 1 1 0 0 1 1 1 0 37.以下关于运算符优先顺序的描述中正确的是( C )。 A. 关系运算符<算术运算符<赋值运算符<逻辑与运算符 B. 逻辑与运算符<关系运算符<算术运算符<赋值运算符 C. 赋值运算符<逻辑与运算符<关系运算符<算术运算符 D. 算术运算符<关系运算符<赋值运算符<逻辑与运算符 11 / 82 38.下列运算符中,优先级最高的是( D )。 A. < B. % C. && D. ++ 39.设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是( C )。 A. ‘x’&&’y’B. x<=y<=z C. y+z&&y-z&&(x+1)%2 D. !x||x 40.以下不能将变量c中的大写字母转换为对应小写字母的语句是( D )。 A. c+=32 B. c=c-‘A’+’a’ C. c=c-65+97 D. c=c-32 二、填空题 1.若s是int型变量,且有s=6,则表达式s%2+(s+1)%2的值为 1 。 2.若a是int型变量,则计算表达式a=25/3%3后,a的值为 2 。 3. 若有定义:int b=7;float a=2.5,c=4.7;则表达式a+(int)(b/3*(int)(a+c)/2)%4的值为 5.5 。 4.若有定义:int a=2,b=3;float x=3.5,y=2.5;则表达式(float)(a+b)/2+(int)x%(int)y的值为 3.5 。 5.若有定义:int x=3,y=2; float a=2.5,b=3.5;则表达式(x+y)%2+(int)a/(int)b的值为 1 。 6.当a=3,b=2,c=1时,表达式f=a>b>c的值为 0 。 7.当a=5,b=4,c=2时,表达式a>b&&!c的值为 0 。 8.C语言提供的三种逻辑运算符是&&、||、!。 9.若a=2,b=4,则表达式!(x=a)||(y=b)&&0的值为 0 。 10.若a=1,b=4,c=3,则表达式!(a 11.若a=6,b=4,c=3,则表达式a&&b+c||b-c的值为 1 。 12.若a=3,b=4,c=5,则表达式a||b+c&&b==c的值为 1 。 13.条件“0≤x≤1或-1≤x≤0”的C语言表达式是x>=0&&x<=1||x>=-1&&x<=0。 14.若有定义:int m=5,y=2;则计算表达式y+=y-=m*=y后,y的值为-16。 15.若a是int型变量,且a的初值为6,则计算表达式a+=a-=a*a后,a的值为-60。 16.若a是int型变量,则表达式(a=4*5,a*2),a+6的值为26。 17.若x和n均为int型变量,且有x=n=5,则计算表达式x+=n++后,x的值为10,n的值为 6 。 18.若n、i均为int型变量,则表达式n=i=2,++i,i++的值为 3 。 19.若有定义:int x=1,y=0;则表达式x<(y+x)?’B’:’C’>y++?’A’:’Z’的值为 A 。 20.若有定义:int x=0,y=1;则表达式x++*x--!=’y’?8-4:y的值为 4 。 三、思考/编程题 1.设有定义:int a=3,b=4;float x=2.5,y=3.5;分析下面算术表达式的值 12 / 82 (1)x+a%2*(int)(x+y)%2/4 (2)(float)(a+b)/2+(int)y%(int)x 2.C语言中如何表示“真”和“假”?系统如何判断一个量的“真”“假”? 2.如果一个表达式的值为“真”,则以1表示,如果值为“假”,则以0表示;当判断一个量的逻辑值时,系统将0判断为“假”,将非0判断为“真”。 3.设有定义:int a=3,b=4,c=5,试分析下列表达式的值: (1) a+b>c&&b==c 0 (2) a||b+c&&b-c 1 (3)!(a>b)&&!c||1 1 (4)!(x=a)&&(y=b)&& 0 (5)!(a+b)+c-1&&b+c/2 1 4.设有定义:int a=15,n=7;试分析下列表达式执行后a的值为多少? (1) a+=a (2) a-=5 (3) a*=5-2 (4) a%=(n%3) (5) a/=(a+a) (6) a+=a-=a*a (7) a+=a-=a*=a 4.(1) 30; (2) 10;(3)45;(4)0;(5)0;(6)-420;(7)0 5.设有定义:int a,b;试分析下面表达式执行后变量a、b和表达式的值各是多少? a=3,b=a+2,a++,(b++)+1 .a=4,b=6,表达式的值为6; 6.试分析下面程序的运行结果。 #include void main( ) { int i=10,j=10; int m,n; m=++i; n=j--; printf(“%d,%d,%d,%dn”,i,j,m,n); 6.11,9,11,10 7.试分析下面程序的运行结果。 #include void main( ) 13 / 82 { int a,b,c; a=b=1; c=a++-1; printf(“%d,%dn”,a,c); c+=-a+++(++b||++c); printf(“%d,%dn”,a,c); } 2,0 3,-1 8.若程序运行时从键盘输入3 4 5,试分析下面程序的运行结果: #include void main( ) { int x,y,z,max; scanf(“%d%d%d”,&x,&y,&z); max=x>y&&x>z?x:y>x&&y>z?y:z; printf(“%dn”,max); } 5 9.编写程序,从键盘输入整型变量x的值,判断并输出x是奇数还是偶数。 9.#include void main( ) { int x; printf("请输入x的值:"); scanf("%d",&x); x%2?printf("奇数n"):printf("偶数n"); } 10.编写程序,从键盘输入一个大写字母赋给字符型变量ch,并将其转换成对应小写字母后输出。] 10.#include "stdio.h" void main() {char ch; printf("请输入一个大写字母:"); scanf(“%c”,&ch); 14 / 82 ch=ch+32; printf("%cn",ch); } 习题四 一、选择题 1.C语言程序的三种基本结构是( A )。 A.顺序结构、选择结构、循环结构 B.递归结构、循环结构、转移结构 C.嵌套结构、递归结构、顺序结构 D.循环结构、转移结构、顺序结构 2.以下能正确定义且赋初值的语句是( B )。 3.以下能正确定义整型变量a,b和c并为其赋初值5的语句是(A)。 A. int a=b=c=5; B. int a,b,c=5;C. a=5,b=5,c=5;D. a=b=c=5; 4.在下列选项中,不正确的赋值语句是(D )。 A.++t; B.n1=(n2=(n3=0)); C.k=i==j; D.a=b+c=1 5.有以下程序: main() { int a=0,b=0; a=10; b=20; printf("a+b=%dn",a+b); } 程序运行后的输出结果是( B )。 A.a+b=10 B.a+b=30 C.30 D.出错 6.有以下程序段: char ch='a'; int k=12; printf("%c,%d,",ch,ch,k); printf("k=%dn",k); 已知字符a的ASCII十进制代码为97,则执行上述程序段后输出结果是( D )。 A.因变量类型与格式描述符的类型不匹配输出无定值 B.输出项与格式描述符个数不符,输出为零值或不定值 C.a,97,12k=12 D.a,97,k=12 7.执行下面程序段后的输出结果是( D )。 15 / 82 int a=15; printf("a=%d,a=%o,a=%xn",a,a,a); A.a=15,a=15,a=15 B.a=15,a=017,a=0xf C.a=15,a=17,a=0xf D.a=15,a=17,a=f 8.以下程序的输出结果是( A )。 main() {int a=010,b=10,c=0x10; printf("%d,%d,%d",a,b,c);} A.8,10,16 B.8,10,10 C.10,10,10 D.10,10,16 9.以下程序的运行结果是(A )。(注:□代表空格) #include main ( ) { int m=5,n=10; printf ("%d,%dn",m++,--n); } A. 5,9 B. 6,9 C. 5,10 D. 6,10 10.设有以下程序: # include main ( ) { int a=201,b=012; printf(“%2d,%2d n”,a,b); } 程序执行后的输出结果是( B )。 A.01,02 B.201,10 C.01,10 D.20,01 11.有定义语句int a,b; ,若要通过语句scanf("%d,%d",&a,&b);使变量a得到数值6,变量b得到数值5,下面输入形式中错误的是( C )。(注:□代表空格) A. 6,5<回车> B. 6,□□5<回车> C. 6 5<.回车> D. 6,<回车> 5<回车> 12.已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数据时,正确的数据输入方式是( A )。(注:□表示空格) int a1,a2; char c1,c2; scanf("%d%c%d%c",&a1,&c1,&a2,&c2); A. 10A□20B<回车> B. 10□A□20□B<回车> C. 10A□20B<回车> D. 10A20□B<回车> 16 / 82 13.已有定义语句int x;float y;且执行scanf("%3d%f",&x,&y);语句,若从第一列开始输入数据12345□678<回车>,则x的值为( B )。(注:□表示空格) A.12345B. 123C. 45D.345 14.有输入语句:scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);为使变量a的值为1,b的值为3,c的值为2;从键盘输入数据的正确形式应当是( D )。(注:□表示空格) A. 132<回车> B. 1,3,2<回车> C. a=1□b=3□c=2<回车> D. a=1,b=3,c=2<回车> 15.设有如下程序: # include main ( ) { char ch1='A',ch2='a'; printf("%cn", (ch1,ch2)); } 则以下叙述中正确的是( B )。 A.程序的输出结果为大写字母A B.程序的输出结果为小写字母a C.运行时产生错误信息 D.格式说明符的个数少于输出项的个数,编译出错 16.执行下面程序段后的输出是( A )。(注:□表示空格) float f1=111.111; printf(“%%f f1=%8.3fn”,f1); A.%f f1=□111.111 B.%f f1=111.111 C.f1=111.111 D.f1= 111.111 17.以下不符合C语法的赋值语句是( C )。 A. m=(2+1,m=1);B. m=n=0;C. m=1,n=2D. n++; 18.以下程序的输出结果是( 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□□* 17 / 82 19.根据以下定义语句和数据输入方式,scanf 语句的正确形式应为( B )。 已有定义:float f1, f2; 数据的输入方式:4.53<回车> 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); 20.阅读以下程序,当输入数据的形式为25,13,10<回车>,程序的输出结果为( D )。 main () { int x,y,z; scanf ("%d%d%d",&x,&y,&z); printf ("x+y+z=%dn",x+y+z); } A. x+y+z=48 B. x+y+z=35 C. x+z=35 D. 不确定值 21.以下scanf函数的叙述中,正确的是( D )。 A.输入一项可以为一实型常量,如scanf("%f",3.5); B.只有格式控制,没有输入项,也能进行正确输入,如scanf("a=%d,b=%d"); C.当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf("%4.2f ",&f); D.当输入数据时,必须指明变量地址,如scanf("%f ",&f); 22.若有以下定义,则正确的赋值语句是( B )。 int a,b;float x; A. a=1,b=2,B. b++;C. a=b=5D. b=int(x); 23.已知ch是字符型变量,下面不正确的赋值语句是( A )。 A. ch='a+b';B. ch='0';C. ch='7'+'9';D. ch=5+9; 24.设x,y均为float型变量,则以下不合法的赋值语句是( D )。 A. ++x;B. y=(x%2)/10;C. x*=y+8;D. x=y=0; 25.设int a=10,则执行语句a+=a*=a/5+10;后,a的值是( A )。 A.240 B.120 C.30 D.60 26.以下程序的运行结果是( D )。 # include main ( ) { int x1=0xabc, x2=0xdef; x2-=x1; printf("%xn", x2); } A. ABC B. 0xabc C. 0x333 D. 333 27.有以下程序,其中%u表示按无符号整数输出: 18 / 82 main() {unsigned int x=0xFFFF; printf("%un",x); } 程序运行后的输出结果是( B )。 A.-1 B.65535 C.32767 D.0XFFFF 28.设有以下程序: # include 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%cn",c5,c6); } 若运行时从键盘输入数据: abc<回车> defg<回车>,则输出结果是( B )。 A. abcd B. abde C. abef 29.以下程序的运行结果是( A )。(注:□表示空格) main () { int y=23456; printf("y=%3xn",y); printf("y=%8xn",y); printf("y=%#8x|n",y); } A.y=5ba0 B.y=□□□5ba0 y=□□□□5ba0 y=□□□□□□□5ba0 y=□□0x5ba0 y=□□0x5ba0 C.y=5ba0 D.y=5ba0 y=5ba0 y=□□□□5ba0 y=0x5ba0 y=####5ba0 30.若x,y均定义为int型, z定义为double型,以下不合法的scanf函数调用语句是( D A. scanf("%d%lx,%le",&x,&y,&z);("%2d%*d%lf",&x,&y,&z); ("%x%*d%o",&x,&y,&z);("%x%o%6.2f",&x,&y,&z); 19 / 82 。 ) 二、填空题 1.C语句的最后用;结束。 2.以下printf语句中的负号的作用是输出数据左对齐。 # include main( ) { int x=12;double a=3.1415926; printf("%6d##n",x); printf("% -6d##n",x); } 3.以下printf语句中*号的作用是可以使同一输出语句中的输出宽度得以改变。 # include main( ) { int i=1; printf("##%*dn",i,i); } 4.以下程序的输出结果是x=1 y=2 *sum*=3。 main( ) {int x=1,y=2; printf("x=%d y=%d*sum*=%dn",x,y,x+y); } 5.以下程序的输出结果是261。 # include main( ) { int m=177; printf("%on",m); } 6. 已有定义 int a;float b,x;char c1,c2; 为使a=3,b=6.5,x=12.6,c1='a',c2='A',正确的scanf函数调用语句是scanf("%d%f%f%c%c",&a,&b,&c1,&c2);。 7.若整型变量a和b中的值分别为7和9,要求按以下格式输出a和b的值: a=7 b=9 请完成输出语句:printf("_______a=%dnb=%dn _______",a,b);。 8.以下程序运行后的输出结果是10,11。 main() {int m=011,n=11; printf("%d,%dn",++m,n++); 20 / 82 } 9. 以下程序的输出结果是20。 # include main( ) { int n=0; n+=(n=10); printf("%dn",n); } 10.执行以下程序时输入1234567 #include main() {int a=1,b; scanf("%2d%2d",&a,&b); printf("%d %dn",a,b); } 11.以下程序的输出结果是*3.140000,3.14*。 main( ) {printf("*%f,%4.3f*n",3.14,3.1415);} 12.以下程序的输出结果是2,48,20.0,20.0。 # include main( ) { int n=100;char c; float f=10.0; double x; x=f*=n/=(c=48); printf("%d,%d,%3.1f,%3.1fn",n,c,f,x); } 13.若要求下列程序的输出结果为8.00,则[ ]中应填入的是3.6。 # include main( ) { int k=2,m=5; float s,x=1.2,y=[ ]; s=2/3+k*y/x+m/2; printf("%4.2fn",s); } 14.已知字母A的ASCII码值为65。以下程序的输出结果是a=66,b=E。 # include 21 / 82 main( ) { char a,b; a='A'+'4'-'3'; b='A'+'6'-'2'; printf("a=%d,b=%cn",a,b); } 15.若有以下定义和语句,为使变量c1得到字符'A',变量c2得到字符'B',正确的输入形式是A□□□B□□□<回车>。 char c1,c2; scanf("%4c%4c",&c1,&c2); 三、编程题 1.编写程序,用一个16进制数对整型变量a赋值,按十进制数输出a的值。 1.#include main( ) {int a; a=0x123; printf(“%dn”,A.; } 2.编写程序,把450分钟换算成用小时和分钟表示,然后进行输出。 2.#include main( ) {int h,m,t=450; h=t/24; m=t%24; printf("450分钟换算成小时和分钟表示:%d小时,%d分钟n",h,m); } 3.编写程序,从终端键盘输入圆的半径r,圆柱的高h,分别计算出圆周长c1,圆面积cs,和圆柱的体积cvz。输出计算结果时要求有文字说明,并取小数点后2为数字。 3.#include main( ) { float pi,r,h,c1,cs,cvz; printf("请输入圆的半径r和圆柱的高h:"); scanf("%f,%f",&r,&h); 22 / 82 pi=3.14159; c1=2*pi*r; cs=pi*r*r; cvz=pi*r*r*h; printf("圆的周长为: %6.2fn",c1); printf("圆的面积为: %6.2fn",cs); printf("圆柱的体积为:%6.2fn",cvz); } 4.编写程序,输入一个字母,输出与之对应的ASCII码,输入输出都要有相应的文字提示。 4.#include main( ) { char ch; printf("请输入一个字母:"); scanf("%c",&ch); printf("字母%c对应的ASCII码为%dn",ch,ch); } 5.编写程序,从键盘输入两个整数,分别计算出它们的商和余数。输出时,商要求保留2为小数,并对第三位进行四舍五入。 5.#include main( ) { int x,y; printf("请输入两个整数:"); scanf("%d%d",&x,&y); printf("两数的商是%5.2f,两数的余数是%dn",(double)x/y,x%y); } 6.编写程序,从键盘输入一个华氏温度,要求输出摄氏温度。公式为c=5/9*(f-32),输出要有相应的文字说明。 6.#include main( ) {float f,c; printf("请输入华氏温度:"); scanf("%f",&f); c=5.0/9.0*(f-32); 23 / 82 printf("摄氏温度为:%fn",C.; } 7.编写程序,从键盘输入一个大写字母,要求输出对应的小写字母,输入输出都要有相应的文字提示。 7.#include main( ) {char ch; printf("请输入一个大写字母:"); scanf("%c",&ch); ch=ch+32; printf("小写字母为:%cn",ch); } 8.编写程序,从键盘输入三个整数,求它们的平均值。输出计算结果时要求有文字说明,并取小数点后2为数字。 8.#include main( ) {int num1,num2,num3; float aver; printf("请输入三个整数:"); scanf("%d,%d,%d",&num1,&num2,&num3); aver=(num1+num2+num3)/3.0; printf("三个整数分别为:%d,%d,%dn",num1,num2,num3); printf("平均值=%7.2fn",aver); } 9.编写程序,从键盘输入两个整数给变量x和y,交换x和y的值后输出。输入输出都要有相应的文字提示。 9.#include main( ) {int x,y,t; printf("请输入两个整数:"); scanf("%d,%d",&x,&y); printf("交换前:x=%d,y=%dn",x,y); t=x;x=y;y=t; 24 / 82 printf("交换后:x=%d,y=%dn",x,y); } 10.编写程序,用gechar函数读入两个字符给ch1、ch2,然后分别用putchar函数和printf函数输出这两个字符。 10.#include "stdio.h" main() {char ch1,ch2; printf("请输入两个字符:"); ch1=getchar(); ch2=getchar(); printf("用putchar函数输出结果为:"); putchar(ch1);putchar(ch2); putchar('n'); printf("用printf函数输出结果为:"); printf("%c,%cn",ch1,ch2); } 习题 一、选择题 1.在C语言中,紧跟在关键字if 后一对圆括号里的表达式( D )。 A.只能用逻辑表达式 B.只能用关系表达式 C.只能用逻辑表达式或关系表达式 D.可以是任意表达式 2.在嵌套使用if语句时,C语言规定else总是( C )。 A.和之前与其具有相同缩进位置的if配对 B.和之前与其最近的if配对 C.和之前与其最近的且不带else的if配对 D.和之前的第一个if配对 3.若有条件表达式(exp)?a++: b--,则以下表达式中能完全等价于表达式(exp)的是( B )。 A. (exp= =0) B. (exp!=0) C. (exp= =1) D. (exp!=1) 4.以下程序的输出是( B )。 main( ) { int x=2,y=-1,z=2; if(x 25 / 82 if(y<0) z=0; else z+=1; printf(“%dn”,z); } A. 3 B. 2 C. 1 D. 0 5.若有表达式(w)?(-x):(++y),其中与w等价的表达式是( D )。 A.w==1 B.w==0 C.w!=1 D.w!=0 6.C语言中的switch语句形式如下所示,关键字switch后一对圆括号中表达式exp的类型是( A )。 switch (exp) { case常量表达式1:语句1; … case常量表达式n:语句n; default:语句n+1; } A.只能是整型或字符型 B.只能是int类型 C.只能是字符型 D.只能是整型或实型 7.以下不正确的if语句形式是( D )。 (x>y&&x!=y); (x= =y) x+=y; (x!=y) scanf(“%d”,&x) else scanf(“%d”,&y); D. if (x 8.执行以下程序后的输出是( B )。 int i=-1; if(i<=0) printf(“****n”) else printf(“%%%%n”); A.**** B.有语法错误,不能正确执行 C.%%%%c D.%%%% 9.下列叙述正确的是( D )。 语句只能用于switch语句 B.在switch语句中必须使用default 语句必须与switch语句中的case配对 D.在switch语句中,不一定使用break语句 10.已知 int x=10,y=20,z=30;执行以下语句后x,y,z的值是( B )。 if (x>y) z=x; x=y; y=z; A. x=10,y=20,z=30 B. x=20,y=30,z=30 C. x=20,y=30,z=10 D. x=20,y=30,z=20 26 / 82 11.已知a,b,c的值分别为1,2,3,则执行下列语句后a,b,c 的值分别是( D )。 if(a++ else a=b=c=0; A.0,0,0 B.1,2,3 C.1,2,1 D.2,2,2 12.若有定义”int x,y;”并已正确给变量赋值,则以下选项与表达式”(x-y)?(x++):(y++)”中的条件表达式”(x-y)”等价的是( C )。 A.(x-y>0) B.(x-y<0) C.(x-y<0||x-y>0) D.(x-y==0) 13.以下程序( D )。 main( ) {int a=5,b=0,c=0; if (a=b+c) printf(“***n”); else printf(“$$$n”); } A. 有语法错误不能通过编译 B. 可以通过编译但不能通过连接 C. 输出*** D. 输出$$$ 14.有以函数关系是:当x<0,y= x-1;当x=0,y= x,当x>0,y= x+1。以下能正确表示上面关系的程序段是( C )。 A. y=x+1; B. y=x-1 if(x>=0) if(x!=0) if(x= =0) y=x; if(x>0) y=x+1; else y=x-1; else y=x; C. if(x<=0) D. y=x; if(x<0) y=x-1; if(x<=0) else y=x; if(x<0) y=x-1; else y=x+1; else y=x+1; 15.若运行时为变量x输入12,则以下程序的运行结果是( A )。 main( ) { int x,y; scanf(“%d”,&x); y=x>12?x+10:x-12; printf(“%dn”,y); } A. 0 B. 22 C. 12 D. 10 16.以下if语句中格式正确的是( B )。 (a>b) b++ else a++; (a>b) {b++;printf(“%d”,b);} else {a++;printf(“%d”,a);} 27 / 82 (a>b) {b++;printf(“%d”,b)} (a>b) b++;printf(“%d”,b); else {a++;printf(“%d”,a);} else printf(“%d”,a); 17. 以下语确的if语句是( B )。 (x>0) (x>0) printf(“%f”,x) {x=x+y;printf(“%f”,x);} else printf(“%f”, -x); else printf(“%f”, -x); (x>0) (x>0) {x=x+y;printf(“%f”,x);}x=x+y;printf(“%f”,x); else rintf(“%f”, -x); elseprintf(“%f”, -x); 18.有以下程序,从键盘上输入3和4,则程序输出是( B )。 #include main() {int a,b,s; scanf(“%d%d”,&a,&b); s=a; if(a s=b; s=s*s printf(“%d”,s); } A.14 B.16 C.18 D.20 19.有以下程序,从键盘上输入-1,则程序输出是( A )。 #include main() {int x,y; printf(“Enter an integer(x):”); scanf(“%d”,&x); if(x++<0) y=-1; else if(x==0) y=0; else y=1; printf(“%d”,y); } A.-1 B.0 C.1 D.不确定的值 20.以下程序的输出是( C )。 main( ) { int a=100,x=10,y=20,ok1=5,ok2=0; 28 / 82 if(x if(y!=10) if(!ok1) a=1; else if(ok2) a=10; a=-1; printf(“%dn”,a); } A. 1 B. 0 C.-1 D. 值不确定 21.有以下程序,程序运行的结果是( D )。 #include main() {int x=1,y=2,z=3; if(x>y) if(y else printf(“%d”,++y); printf(“%dn”,x++); } A.3 3 1 B.4 1 C.2 D.1 22.若变量已正确定义,有以下程序段: int a=3,b=5,c=7; if(a>b) a=b; c=a; if(c!=a) c=b; printf(“%d,%d,%dn”,a,b,c); 其输出结果是( B )。 A.程序段有语法错误 B.3,5,3 C.3,5,5 D.3,5,7 23.以下程序的输出是( A )。 #include”stdio.h” main( ) { int x=1; if(x=2) printf(“OK”); else if(x<2)printf(“%dn”,x): else printf(“Quit”); A. OK B. Quit C. 1 D. 无输出结果 29 / 82 24.有以下程序: main() {int a=0,b=0,c=0,d=0; if(a=1) b=1;c=2; else d=3; printf(‘%d,%d,%d,%dn”,a,b,c,d); } 程序输出( D )。 A.0,1,2,0 B.0,0,0,3 C.1,1,2,0 D.编译有错 25.以下程序所表示的分段函数是( D )。 #include”stdio.h” main( ) {int x,y; printf(“Enter x :”); scanf(“%d”,&x); y=x>=0? 2*x+1:0; printf(“x=%d:f(x)=%d”,x,y); } A. f(x)=0 (x<=0) B. f(x)=0 (x>=0) f(x)=2x+1) (x>0) f(x)=2x+1 (x<0) C. f(x)= 2x+1 (x<0) D. f(x)=0 (x<0) f(x)=0 (x>=0) f(x)=2x+1 (x>=0) 26. 若w=1,x=2,y=3,z=4,则条件表达式w A.4 B.3 C.2 D.1 27. 若w,x,y,z,m均为int型变量,则执行下面语句后的m值是( A )。 w=1;x=2;y=3;z=4; m=(w m=(m m=(m A.1 B.2 C.3 D.4 28.若执行下面的程序时从键盘上输入10,则输出的是( B )。 main() {int a; scanf(“%d”,&a); 30 / 82 if(a++>10) printf(“%dn”,++a); else printf(“%dn”,a--);} A.12 B.11 C.10 D.9 29.有以下程序,输出的是( B )。 main() {int x=100,a=10,b=20,v1=5,v2=0; if(a if(b!=15) if(!v1) x=1; else if(v2) x=10; x=-1; printf(“%dn”,x);} A.100 B.-1 C.1 D.10 30.有以下程序,( A )是正确的判断。 main() {int x,y; scanf(“%d, %d”,&x, &y); if(x>y) x=y;y=x; else x++;y++; printf(“%d,%dn”,x,y);} A.有语法错误 B.若输入3和4,则输出4和5 C.若输入4和3,则输出3和4 D.若输入4和3,则输出4和4 31.设变量x和y均已正确定义并赋值,以下的if语句中,在编译时将产生错误信息的是( C )。 (x++); (x>y&y!=0); (x>y)x-- (y<0) {;} else y++; else x++; 32.若变量都已正确定义,则以下程序段的输出是( B )。 a=10;b=50;c=30; if(a>b) a=b,b=c;c=a; printf(“a=%db=%dc=%dn”,a,b,c); 31 / 82 A.a=10 b=30 c=10 B.a=10 b=50 c=10 C.a=50 b=30 c=10 D.a=50 b=30 c=50 33.当a=1,b=3,c=5,d=4时,执行以下程序段后x的值是( B )。 if (a if (c else if(a if (b else x=3; else x=6; else x=7; A. 1 B. 2 C. 3 34.以下程序的输出是( B )。 #include”stdio.h” main( ) { int a=5,b=8,c=3,max; max=a; if(c>b) if(c>a) max=c; else if(b>a) max=b; printf(“max=%dn”,max); } A. max=8 B. max=5 C. max=3 35.以下程序的运行结果是( D )。 main( ) { int k=4,a=3,b=2,c=1; printf(“n%dn”,k } A. 4 B. 3 C. 2 36.以下程序运行后的输出结果是( C )。 #include main() {int x=2,y=3; printf(x>y?"***x=%d":"###y=%dn",x,y);} 32 / 82 D. 6 D. 无输出结果 D. 1 A.语法错误 B. ***x=2 C. ###y=2 D. ###y=3 37.有以下程序,运行后的输出结果是( A )。 main() {int a=2,b=0,c= -1; if(a=b+c) if(a>0) b=c=a; else if(a==0) a=b=c=0; else a=b=c=1; else a=b=c=-1; printf(“%d,%d,%d”,a,b,c);} A.1,1,1 B.0,0,0 C.-1,-1,-1 D.2,2,2 38.若u,w,x,y均为正整型变量,则以下正确的switch语句是( A )。 (x+y) x {case10:u=x+y;break; {default:u=x+y; case11:w=x-y;break; case10:w=x-y; break; } case11:u=x*y; break; (x*x+y*y) (pow(x,2)+pow(y,2))(注:pow是求幂的数学函数) {case3: {case1:case3:w=x+y; break; case3:w=x+y; break; case0:case5:w=x-y; case0:w=y-x; break; } 39.有以下程序,程序的运行结果是( D )。 #include main() {int x=1,y=0,a=0,b=0; switch(x) {case 1: switch(y) {case 0:a++;break; case 1:b++;break; } case 2:a++;b++;break; case 3:a++;b++; } printf(“a=%d,b=%dn”,a,b); } 33 / 82 A.a=1, b=0 B.a=2,b=2 C.a=1,b=1 D.a=2,b=1 40. 有以下程序,运行后的结果是( C )。 #include main() {int x=0,y=2,z=3; switch(x) {case 0:switch(y==2) {case 1:printf("*");break; case 2:printf("%");break; } case 1: switch(z) {case 1:printf("$"); case 2:printf("*");break; default: printf("#");} } } A.* B.*$ C. *# D.*$* 二、填空题 1.若运行时输入:16<回车>,则以下程序的运行结果是your $ 3.0 yuan/xiaoshi。 #include void main( ) {int year; printf(“Input your year:”); scanf(“%d”,&year); if (year>=18) printf(“your $ 4.5 yuan/xiaoshi”); else printf(“your $ 3.0 yuan/xiaoshi”); } 2.以下程序对应的数学表达式当a<0,b=-1;当a=0,b=0;当a>0,b=1。 #include”stdio.h” main( ) {int a,b; scanf(“%d”,&a); if(a<0) b=-1; else if(a= =0) 34 / 82 b=0; else b=1; printf(“a=%d,b=%dn”,a,b); } 3.若运行时输入:5999<回车>,则以下程序的运行结果(保留小数点后一位)是3635.4。 main ( ) { int x; float y; scanf(“%d”,&x); if(x>=0&&x<=2999) y=18+0.12*x; if(x>=3000&& x<=5999) y=36+0.6*x; if(x>=6000&&x<=10000) y=54+0.3*x; printf(“%6.1f”,y); } 4.以下程序的功能是:输出x、y、z三个数中的最大者。请填空。 main ( ) {int x=4,y=6,z=7; int u,v; if(x>y) u=x; else u=y; if(u>z) v=u; else v=z; printf(“v=%d”,v); } 5.以下程序的输出结果是x=2。 #include”stdio.h” main( ) { int x,y; x=y=2; if(x= =1) if(x= =2) printf(“x=%dn”,x=x+y); else printf(“x=%dn”,x=x-y); printf(“x=%dn”,x); } 35 / 82 6.下面程序的功能是:根据函数关系(当2 main( ) {int x,y; scanf(“%d”,&x); if(x>2&&x<=10) y=x*(x+2); else if(x>-1&&x<=2) y=2*x; else if(x<=-1) y=x-1; else y=-1; if(y!=-1) printf(“d”,y); else printf(“error”); } 7.以下程序的功能是:根据输入的三角形的三条边,判断是否能组成三角形,若可以则输出它的面积。请填空。 #include main ( ) { float a,b,c; float s ,area; scanf(“%f%f%f”,&a,&b,&c); if(a+b>c&&b+c>a&&a+c>b) { s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c) ); printf(“%f”,area); } else printf(“不能输出三角形”); } 8.以下程序的运行结果是-1。 main ( ) { int a=2,b=3,c; c=a; if(a>b) c=1; else if (a= =b) c=0; else c=-1; printf(“%dn”,c); } 9.以下程序的运行结果是0,1。 36 / 82 main ( ) { int x,y,z; x=3; y=z=4; printf(“%d,”,(x>=y>=x)?1:0); printf(“%dn”,z>=y&&y>=x); } 10.以下程序的功能是计算x、y个z中的最小值。请填空。 main( ) { int x=4,y=5,z=8; int u,v; u=x v=u printf(“%d”,v); } 11.将以下含有switch语句的程序段改写成对应的含有非嵌套if语句的程序段。请填空。 * 含有switch语句的程序段: int x,y,m; y=(int)(x /10); switch(y) {case 10:m=5;break; case 9:m=4;break; case 8:m=3;break; case 7:m=2;break; case 6:m=1;break; default:m=0; } * 含有含if语句的程序段: int x,m; if(x<110&&x>=100) m=5; if (x<100)&&(x>=90) ) m=4; if (x<90)&&(x>=80) ) m=3; if (x<80)&&(x>=70) ) m=2; if (x<70)&&(x>=60) ) m=1; if((x<60)| |(x>109)) m=0; 12.以下程序段的输出结果是x=5 37 / 82 The value of x is unknown.。 #include”stdio.h” main( ) {int x,y; x=5; switch(x) { case 1: case 2: case 3: case 4:printf(“x<5n”); case 5:printf(“x=%dn”,x); default:printf(“The value of x is unknown.n”); } } 13.以下程序的运行结果是F。 main ( ) {if (2*2= =5<2*2= =4) printf(“T”); else printf(“F”); } 14.以下程序的功能是输入两个数x,y,比较x+y和x*y哪个大。。 #include”stdio.h” main( ) {int x,y,sum,product; printf(“Enter x and y:”); scanf(%d,%d”,&x,&y); sum=x+y; product=x*y; if(sum>product) printf(“(x+y)>(x*y)”); else printf(“(x*y)>=(x+y)”); } 15.以下程序的运行结果是2,0,0。 main( ) 38 / 82 { int a,b,c; int s,w,t; s=w=t=0; a=-1;b=3;c=3; if(c>0) s=a+b; if(a<=0) { if(b>0) if(c<=0) w=a-b; } else if (c>0) w=a-b; else t=c; printf(“%d,%d,%d”,s,w,t); } 16.以下程序的运行结果是20。 main( ) { int a,b,c,d,x; a=c=0; b=1; d=20; if(a) d=d-10; else if(! b) if(!c) x=15; else x=25; printf(“%dn”,d); } 17.以下程序的运行结果是5,5,1。#include void main (void) { int x,y=1,z; ①if(y!=0) x=5; printf(“%dn”,x); ② if(y= =0) x=4; else x=5; printf(“%dn”,x); ③ x=1; if(y<0) 39 / 82 if(y>0) x=4; else x=5; printf(“t%dn”,x); }
版权声明:本文标题:c语言期末考试题库完整 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1702706420h427528.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论