c语言第3章B
- 格式:ppt
- 大小:825.50 KB
- 文档页数:26


数据类型、运算符和表达式复习题
一.选择题
1. 以下不合法的用户标识符是:( )
a) f2_G3 b) If c) 4d d) _8
2. 以下选项中合法的用户标识符是:( )
a) long b) _2Test c) 3Dmax d) A.dat
3. 以下可用作用户标识符的是:( )
a) 12_a b) signed c) t-o d) _if
4. 以下不是关键字的标识符是:( )
a) continue b) char c) If d) default
5. C语言提供的合法的关键字是:( )
a) swicth b) cher c) Case d) void
6. 以下选项中不合法的int整型常数是( )
a) 32768 b) -56 c) 03 d) 0xAF
7. 以下合法的长整型常量是( )
a) 2L b) 49627 c) d) 213&
8. 以下正确的实型常量是( )
a) 1.2E b) . c) 1.2e0.6 d) 8
9. 以下选项中合法的实型常数是( )
a) 5E2.0 b) E-3 c) .2E0 d) 1.3E
10. 以下合法的八进制数是( )
a) 0135 b) 068 c) 013.54 d) o7
11. 以下合法的十六进制数是( )
a) 0x b) 0x4de c) 0x1h d) ox77
12. 以下选项中非法的数值常量是( )
a) 019 b) 0L c) 0xff d) 1e1
.
. 习 题
3.参考答案:
〔1〕后缀:w,源:基址+比例变址+偏移, 目:寄存器
〔2〕后缀:b,源:寄存器,目:基址+偏移
〔3〕后缀:l, 源:比例变址, 目:寄存器
〔4〕后缀:b, 源:基址, 目:寄存器
〔5〕后缀:l, 源:立即数, 目:栈
〔6〕后缀:l, 源:立即数, 目:寄存器
〔7〕后缀:w, 源:寄存器, 目:寄存器
〔8〕后缀:l, 源:基址+变址+偏移, 目:寄存器
4.参考答案:
〔1〕源操作数是立即数0xFF,需在前面加‘$’
〔2〕源操作数是16位,而长度后缀是字节‘b’,不一致
〔3〕目的操作数不能是立即数寻址
〔4〕操作数位数超过16位,而长度后缀为16位的‘w’
〔5〕不能用8位寄存器作为目的操作数地址所在寄存器
〔6〕源操作数寄存器与目操作数寄存器长度不一致
〔7〕不存在ESX寄存器
〔8〕源操作数地址中缺少变址寄存器
5.参考答案:
表3.12 题5用表
src_type dst_type 机器级表示
char int movsbl %al, (%edx)
int char movb %al, (%edx)
int unsigned movl %eax, (%edx)
short int movswl %ax, (%edx)
unsigned char unsigned movzbl %al, (%edx)
char unsigned movsbl %al, (%edx)
int int movl %eax, (%edx)
6.参考答案:
〔1〕xptr、yptr和zptr对应实参所存放的存储单元地址分别为:R[ebp]+8、R[ebp]+12、
R[ebp]+16。
〔2〕函数func的C语言代码如下:
void func(int *xptr, int *yptr, int *zptr)
{
第3章 最简单的C程序设计—顺序程序设计
一、单项选择题
1. 不是C语言提供的合法关键字是 。
A)switch B)cher C)case D)default
2. C语言提供的合法关键字是 。
A)next B)string C)do case D)struct
3. 下列不属于C语言中关键字的是 。
A) long B) print C)default D)typedef
4. 下列不正确的标识符是 。
A) -a1 B) a[i] C)a2_i D)x
5. 下列C语言用户标识符中合法的是 。
A)*y B)sum C)int D)%5f
6. 下面四个选项中,合法的标识符是 。
A)auto B)define C) 6a D) c
7.下列C语言用户标识符中合法的是 。
A)3ax B)x C)case D)-e2
8. 以下选项中合法的用户标识符是 。
A) long B) _2Test C) 3Dmax D) A.dat
9.下列四组选项中,正确的C语言标识符是 。
A)%x B) a+b C)a123 D) 123
10. 请选出可用作C语言用户标识符的一组标识符
A) void B) a3_b3 C) For D) 2a
3.2基础实验
一、程序分析
1.以下程序若输入’a’,则输入格式为:__c1=a____;运行结果为:___a,A↙_____。
#include
intmain( )
{char c1,c2;
scanf(“c1=%c”,&c1);
c2=c1-32;
printf(“%c,%c\n”,c1,c2);
return 0;
}
2.以下程序如果使得a的值为2、b的值为3,则输入格式为:_a=2,b=3__;运行结果为:_2,3↙_。
#include
intmain( )
{ int a,b;
scanf(“a=%d,b=%d”,&a,&b);
printf(“%d,%d\n”,a,b);
return 0;
}
3.以下程序若输入12.3、7.6、1.1,则输入格式为:_12.3 7.6 1.1__;运行结果为:_aver=7.00___。
#include
intmain( )
{ floata,b,c,d;
scanf(“%f%f%f”,&a,&b,&c);
d=(a+b+c)/3;
printf(“aver=%.2f”,d);
return 0;
}
二、程序填空
1.输入一个四位整数,求各位数字之和(如1234,则结果为1+2+3+4=10)。若输入3562,则运行结果为:___3+5+6+2=16↙____________。
#include
intmain( )
{ int n,a,b,c,d,m;
scanf(“%d”,&n);
a=n%10;
b=(n/10)%10;
c=(n/100)%10;
d=__n/1000________;
m=__a+b+c+d________;
printf(“%d+%d+%d+%d=%d\n ”, d,c,b,a,m);
return 0;
}
2.给定一个华氏法表示的温度值,将其转换为摄氏法表示的温度,转换公式为则运行结果为:__f=64.00,c=17.78↙__。