c语言第三、四章(习题册答案)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第三章数据类型、运算符和表达式
一、选择题:
1、以下选项中,不正确的C 语言浮点型常量是(C)。

A. 160.
B. 0.12
C. 2e4.2
D. 0.0
2、以下选项中,(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. 4
B. 16
C.32
D.52
5、算术运算符、赋值运算符和关系运算符的运算优先级按从高到低依次为(B)。

A. 算术运算、赋值运算、关系运算
B. 算术运算、关系运算、赋值运算
C. 关系运算、赋值运算、算术运算
D. 关系运算、算术运算、赋值运算
6、表达式!x||a==b 等效于(D)。

A. !((x||a)==b)
B. !(x||y)==b
C. !(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,0
B. 0,1
C. 1,0
D. 1,1
8、设有语句int a=3;,则执行了语句a+=a-=a*=a;后,变量a 的值是(B)。

A. 3
B. 0
C. 9
D. -12
9、在以下一组运算符中,优先级最低的运算符是(D)。

A. *
B. !=
C. +
D. =
10、设整型变量i 值为2,表达式(++i)+(++i)+(++i)的结果是(B)。

A. 6
B. 12
C. 15
D. 表达式出错
11、若已定义x 和y为double 类型,则表达式x=1,y=x+3/2 的值是(C)。

A. 1
B. 2
C. 2.0
D. 2.5
12、设a=1,b=2,c=3,d=4,则表达式:a<b? a : c<d? a : d的结果为(D)。

A. 4
B. 3
C. 2
D. 1
13、设a 为整型变量,不能正确表达数学关系:10<a<15的C 语言表达式是(A)。

A. 10<a<15
B. a= =11|| a= =12 || a= =13 || a= =14
C. a>10 && a<15
D. !(a<=10) && !(a>=15)
14、设f是实型变量,下列表达式中不是逗号表达式的是(D)。

A. f= 3.2, 1.0
B. f>0, f<10
C. f=2.0, f>0
D. f=(3.2, 1.0)
15、表达式18/4*sqrt(4.0)/8值的数据类型是(C)。

A. int
B. float
C. double
D. 不确定
16、已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句
C2=’A’+’6’-‘3’;后c2中的值是(A)。

A. D
B. 68
C. 不确定的值
D. C
17、以下用户标识符中,合法的是(B)。

A. int
B. nit
C. 123
D. a+b
18、C 语言中,要求运算对象只能为整数的运算符是(A)。

A. %
B. /
C. >
D. *
19、若有说明语句:char c='\72';则变量c在内存占用的字节数是(A)。

A. 1
B. 2
C. 3
D. 4
20、字符串"ABC"在内存占用的字节数是(B)。

A. 3
B. 4
C. 6
D. 8
21、要为字符型变量a赋初值,下列语句中哪一个是正确的(B)。

A. char a="3";
B. char a=’3’;
C. char a=%;
D. char a=*;
22、下列不正确的转义字符是(C)。

A. \\
B. \'
C. 074
D. \0
二、填空题:
1、C 语言中的逻辑值“真”是用1表示的,逻辑值“假”是用0表示的。

2、若x和n都是int型变量,且x的初值为12,n的初值为5,则计算表达式x%=(n%=2)后x的值为0。

3、设c='w',a=1,b=2,d=-5, 则表达式'x'+1>c, 'y'!=c+2, -a-5*b<=d+1, b==a=2的值为1、0、1、1。

4、设float x=2.5,y=4.7; int a=7;,表达式x+a%3*(int)(x+y)%2/4的值为2.5。

5、判断变量a、b 的值均不为0 的逻辑表达式为a!=0&&b!=0,值为1。

6、求解赋值表达式a=(b=10)%(c=6),表达式值为4、a、b、c 的值依次为1,0,6 。

7、求解逗号表达式x=a=3,6*a 后,表达式值为18、x、a 的值依次为3,3 。

三、编程题:
1、设长方形的高为1.5,宽为2.3,编程求该长方形的周长和面积。

2、编写一个程序,将大写字母A转换为小写字母a。

1.
main()
{float x=1.5,y=2.3;printf(“area is %6.2f\n”,x*y);}
2.
main()
{char c=’A’;printf(“%d”,c+32);}
第四章顺序结构程序设计
基础练习(A)
一、填空题
1、C语句分为五种:控制语句、函数调用语句、表达式语句、空语句和复合语句。

2、一个基本语句的最后一个字符是;。

3、复合语句又称分程序,是用{ }括起来的语句。

4、使用C语言库函数时,要用于预编译命令#include将有关的“头文件”包括到用户源文件中。

5、使用标准输入输出库函数时,程序的开头要有如下预处理命令:#include <stdio.h>。

6、{ a=3;c+=a-b; } 在语法上被认为是 1 条语句。

7、getchar函数的作用是从终端输入1个字符。

8、如果从键盘输入字符’a’并按回车键,请写出以下程序运行效果a。

#include<stdio.h>
main()
{
putchar(getchar());
}
9、以下程序的输出结果为i:dec=-4,oct=177774,hex=fffc,unsigned=65532。

main()
{
short i;
i=-4;
printf(“\ni:dec=%d,oct=%o,hex=%x,unsigned=%u\n”,i,i,i,i);
}
10、以下程序的输出结果为*3.140000,3.142*。

main()
{
printf(“*%f,%4.3f*\n”,3.14,3.1415);
}
11、以下程序的输出结果为c:dec=120,oct=170,hex=78,ASCII=x。

main()
{
char c=‘x’;
printf(“c:dec=%d,oct=%o,hex=%x,ASCII=%c\n”,c,c,c,c);
}
12、已有定义int d=-2;执行以下语句后的输出结果是*d(1)=-2*d(2)= -2*d(3)=-2 *
*d(4)=177776*d(5)= 177776*d(6)=177776 * printf(“*d(1)=%d*d(2)=%3d*d(3)=%-3d*\n”,d,d,d);
printf(“*d(4)=%o*d(5)=%7o*d(6)=%-7o*\n”,d,d,d);
13、以下程序的输出结果为x=1 y=2 *sum*=3
10 Squared is: 100
main()
{
int x=1,y=2;
printf(“x=%d y=%d *sum*=%d\n”,x,y,x+y);
printf(“10 Squared is:%d\n”,10*10);
}
14、以下程序的输出结果为(1) 123.456000
(2) □□□□□□□123.457
(3) 123.4560
(4) 8765.456700
(5) □□□□□□8765.457
(6) 8765.4567
(7) 8765.4567
#include <stdio.h>
main()
{
float a=123.456; double b=8765.4567;
printf(“(1) %f\n”,a);
printf(“(2) %14.3f\n”,a);
printf(“(3) %6.4f\n”,a);
printf(“(4) %lf\n”,b);
printf(“(5) %14.3lf\n”,b);
printf(“(6) %8.4lf\n”,b);
printf(“(7) %.4f\n”,b);
}
二、判断题
1、所谓函数体实际上就是一个复合语句。

(对)
2、C语言本身不提供输入输出语句,输入和输出操作是由函数来实现的。

(对)
3、putchar函数可以向终端输出一个整数数据。

(错)
4、考虑到printf 和scanf函数使用频繁,系统允许在使用这两个函数时可不加#include命令。

(对)
5、任何表达式都可以加上分号而成为有意义的语句。

(对)
三、选择题
1、以下不属于流程控制语句的是( A)。

A) 表达式语句B) 选择语句C) 循环语句D) 转移语句
2、putchar函数可以向终端输出一个( D)。

A)整型变量表达式值B)实型变量值C)字符串D)字符或字符型变量值
3、getchar函数的参数个数是(B)。

A) 1 B) 0 C) 2 D)任意
4、以下程序的输出结果是(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 *
5、printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。

如果字符串长
度大于5,则输出按方式( B)。

;如果字符串长度小于5,则输出按方式(C)。

A)从左起输出该字串,右补空格
B)按原字符长从左向右全部输出
C)右对齐输出该字串,左补空格
D)输出错误信息
6、已有定义int a=-2;和输出语句:printf(“%8lx”,a);以下正确的叙述是(D)。

A)整型变量的输出格式符只有%d一种
B)%x是格式符的一种,它可以适用于任何一种类型的数据
C)%x是格式符的一种,其变量的值按十六进制输出,但%8lx是错误的
D)%8lx不是错误的格式符,其中数字8规定了输出字段的宽度
7、以下C程序正确的运行结果是(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=-43456
y=- 43456 y=-43456
y=-0043456 y=-0043456
y=-43456 y=+-43456
C)y=-43456 D)y= -43456
y=-43456 y=-0043456
y=-0043456 y=00043456
y= -43456 y=+43456
8、以下C程序正确的运行结果是(D)。

main()
{
int y=2456;
printf(“y=%3o\n”,y);
printf(“y=%8o\n”,y);
printf(“y=%#8o\n”,y);
}
A)y= 2456 B)y= 4630
y= 2456 y= 4630
y=########2456 y=########4630
C)y=2456 D)y=4630
y= 2456 y= 4630
y= 02456 y= 04630
基础练习(B)
一、填空题
1、printf函数的作用是向终端输出若干个任意类型的数据。

2、printf函数中的“格式控制”,包括格式说明和普通字符两种信息。

3、scanf函数中的“格式控制”后面应当是变量地址,而不是变量名。

4、在用scanf函数中输入数据时,如果在“格式控制”字符传中除了格式说明以外还有其他字符,则应在对应位置输入与这些字符相同的字符。

5、在用”%c”格式输入字符时,空格字符和“转义字符”都作为有效字符输入。

6、在输入数据时,遇以下情况时该数据认为结束:遇空格、或按“回车”或“跳格”键;按指定的宽度结束;遇非法输入。

7、输入数据时不能规定精度。

8、如果在%后有一个“*”附加说明符,表示跳过它指定的列数。

二、选择题
1、若int a,b; scanf(“%d%d”,&a,&b); 不可以用(A)作为输入的分隔符。

A),B)空格C)回车D)TAB键
2、若x,y均定义为int型,z定义为double型,以下不合法的scanf函数调用语句是
( B)。

A)scanf(“%d%lx,%le”,&x,&y,&z);
B)scanf(“%2d*%d%lf”,&x,&y,&z);
C)scanf(“%x%*d%o”,&x,&y);
D)scanf(“%x%o%6.2f”,&x,&y,&z);
3、已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从
第一列开始输入数据时,正确的数据输入方式是(D)。

int a1,a2; char c1,c2;
scanf(“%d%d”,&a1,&a2);
scanf(“%c%c”,&c1,&c2);
A)1020AB<CR> B)10 20<CR>
AB<CR>
C)10 20 AB<CR> D)10 20AB<CR>
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)。

main()
{
int a; float f;
printf(“\nI nput number:”);
输入语句
printf(“\nf=%f,a=%d\n”,f,a);
}
Input number:4.5 2<CR>
A)scanf(“%d,%f”,&a,&f);
B)scanf(“%f,%d”,&f,&a);
C)scanf(“%d%f”,&a,&f);
D)scanf(“%f%d”,&f,&a);
6、根据定义和数据的输入方式,输入语句的正确形式为(B)。

已有定义:float f1,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);
7、阅读以下程序,若运行结果为如下形式,输入输出语句的正确内容是(B)。

main()
{
int x; float y;
printf(“enter x,y:”);
输入语句
输出语句
}
输入形式enter x,y:2 3.4
输出形式x+y=5.40
A)scanf(“%d,%f”,&x,&y);
printf(“\nx+y=%4.2f”,x+y);
B)scanf(“%d%f”,&x,&y);
printf(“\nx+y=%4.2f”,x+y);
C)scanf(“%d%f”,&x,&y);
printf(“\nx+y=%6.1f”,x+y);
D)scanf(“%d%3.1f”,&x,&y);
printf(“\nx+y=%4.2f”,x+y);
8、以下说法正确的是(D)。

A)输入项可以为一实型常量,如scanf(“%f”,3.5);
B)只有格式控制,没有输入项,也能进行正确输入,如scanf(“a=%d,b=%d”);
C)当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf(“%4.2f”,&f);
D)当输入数据时,必须指明变量的地址,如scanf(“%f”,&f);
9、有输入语句: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<回车>
}
10、已有如下定义和输入语句,若要求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<CR> B)10 A 20 B<CR>
C)10A20B<CR> D)10A20 B<CR>
11、已有定义int x; float y;且执行scanf(“%3d%f”,&x,&y);语句,若从第一列开始输入数据
12345 678<回车>,则x的值为(B),y的值为( B)。

(1) A)12345 B)123 C)45 D)345
(2) A)无定值B)45.000000 C)678.000000 D)123.000000
三、编程:
1、编写程序,从键盘上输入三个数分别给变量a、b、c,求它们的平均值。

并按如下形式输出:average of **、** and ** is **.** 。

其中,三个**依次表示a、b、c的值,**.**表示a,b,c的平均值。

2、输入9时23分并把它化成分钟后输出。

(从零点整开始计算)。

1、参考答案
main ( )
{ float a, b, c, t;
printf(“please input a,b,c:\n”);
scanf ("%f, %f, %f", &a, &b, &c);
t=(a+b+c)/3;
printf ("average of %6.2f、%6.2f and %6.2f is %6.2f\n”,a,b,c,t);
}
2、参考答案
main ( )
{ int h,m,s;
printf(“please input h,m:\n”);
scanf ("%d,%d", &h, &m);
s=h*60+m;
printf ("total %d minute\n”,s);
}。

相关文档
最新文档