C语言基础练习题含答案 下载本文

17.解析:转义字符的特征是以“\\”开头,其后跟一些字符,如

\\n, \\t, \\’, \\\\, \\}, \\”, \\b, \\f等代表一些特殊的含义,而\\后如跟数字,可以为八进制或者十六进制,将其转换为对应的ASCII码值,就可以得出对应的字符。“\\”后跟八进制的写法:\\0nn, 或者\\nn, 表示“\\0”或者“\\”后只能跟1或3位0——7之间的数字;“\\”后跟十六进制的写法:\\xnn,或者\\nn, 表示“\\x”或者“\\”后只能跟1或2位0——9及a——f(A——F)之间的字符。选项B的错误在于8不是八进制;而选项C的错误在于没有“\\”;选项D的错误在于超长(多了一位)。

21.解析:B的错误在于赋值语句的左侧只能为一个简单变量,如:

n=3*(n=18); C的错误在于%运算符只能适用于整型数据,D的错误在于作类型转换时,应将类型加上括号,即为:y=(float) m

31.解析:逗号表达式的最终结果为最右端的表达式(即x+y)的

值,其运算顺序是从左自右的。第三个表达式y++,其隐含有两步操作:先取y的原值,再执行y=y+1运算;而本题中,虽然没有将y赋给某个变量(取其原值),但还是一定会执行加运算的。因而,经过第三个表达式,y已经自加为6,故x+y的值为8,相对应得表达式最终结果为8。若本题改为:(x=2, y=5, z=y++, x+z),则其结果应为7。

二. 填空题答案

1. 答案:英文字母、数字、一些有特定含义的标点符号 2. 答案:顺序结构、选择结构、循环结构 3. 答案:C,OBJ,EXE 4. 答案:小写

5. 答案:函数说明部分和函数体 6. 答案:变量定义部分和执行部分

7. 答案:输入和输出函数

8. 答案:dec:-1,oct:177777,hex:ffff,unsigned:65535

dec:1,oct:1,hex:1,unsigned:1

9. 答案:dec:98,oct:142,hex:62,ASCII:b

10.答案:3.141593,3.1416,3.142, └┘└┘└┘└┘└┘3.142

3.141593e+00,3.1416e+00,3.142e+00,└┘└┘3.142e+00 (注:由于c编译系统不同,我们上机使用的机器,其第二个printf语句实际结果为:3.14159e+00,3.142e+00,3.14e+00,└┘└┘3.14e+00,即:小数点后取5位。)

11.答案:c=h

12.答案:i=1,k=└┘,j=2

13.答案:第一种情况的执行结果:x1=98,x2=765,y1=4,y2=1

第二种情况的执行结果:x1=98,x2=76,y1=└┘,y2=3

第三种情况的执行结果:x1=98,x2=765,y1=4,y2=2

14.答案:交换x和y的值 15.答案:(1)格式符应为:%f;(2)变量前边未加取地址符&, 即应为scanf(”%f”,&k); 16.答案:【1】123 【2】45.000000

第二章 选择结构

2.1 选择题

1. 已有定义:int x=3, y=4, z=5; 则表达式!(x+y)+z-1 && y+z/2的值是(D)。

A.6 B.0 C.2 D.1 2. 设a=5,b=6,c=7,d=8,m=2,n=2, 则执行(m=a>b) && (n=c>d)后n的值为(B)。

A.1 B.2 C.3 D.4 3. 设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

C.在其之前未配对的最近的if D.同一行上的if

5. 逻辑运算符两侧运算对象的数据类型(D)。 A.只能是0或1

B.只能是0或非0正数 C.只能是整型或字符型数据 D.可以是任何类型的数据

6. 以下关于运算符优先顺序的描述中正确的是(C)。

A.关系运算符<算术运算符<赋值运算符<逻辑与运算符 B.逻辑与运算符<关系运算符<算术运算符<赋值运算符 C.赋值运算符<逻辑与运算符<关系运算符<算术运算符 D.算术运算符<关系运算符<赋值运算符<逻辑与运算符 7. 下列运算符中优先级最高的是(C)。

A.< B.&& C.+ D.8. 选择出合法的if语句(设int x,a,b,c;)(A)。 A.if(a=b) c++; B.if(a=b) c++; D.if(a=>b) c++;

9. 能正确表示“当x的取值在[-58,-40]和[40,58]范围内为真,否

!= 则为假”的表达式是(C)。

A.(x>= -58) && (x<= -40) && (x>=40) && (x<=58) B.(x>= -58) || (x<= -40) || (x>=40) || (x<=58)

C.(x>= -58) && (x<= -40) || (x>=40) && (x<=58) D.(x>= -58) | |(x<= -40) && (x>=40) || (x<=58)

10.判断char型变量s是否为小写字母的正确表达式是(C)。 A.’a’ <= s<=’z’ B.(s>=’a’) & (s<=’z’)

C.(s>=’a’) && (s<=’z’) D.(’a’<=s) and (’z’>=s)

11.若希望当x的值为奇数时,表达式的值为“真”,x的值为偶

数时,表达式的值为“假”。则以下不能满足要求的表达式是(C)。

A.x%2==1 B.!(x%2==0) C.!(x%2) D.x%2 12.已知 x=45, y=’a’, z=0; 则表达式(x>=z && y<’z’ || !y)的值是(C)。

A.0 B.语法错 C.1 D.“假” 13.指出下列程序段所表示的逻辑关系是(B)。

if(a

x=10; } else x=-10;

10a?b且c?dA.x?? ???1010B.x?????10a?b且c?da?b且c?da?b

10C.x???a?b且c?da?b且c?da?b且c?dc?d??1010D.x?????10

,以下程序段中不能根据x值正确

??114.有一函数:y???0?1?x?0x?0 x?0计算出y值的是(C)。 A.if (x>0) y=1;

else if (x==0) y=0; else y= -1; B.y=0;

if (x>0) y=1;

else if (x<0) y= -1; C.y=0; if (x>=0)

if(x>0) y=1; else y= -1; D.if (x>=0) if (x>0) y=1; else y=0; else y= -1;

15.执行以下语句后,y 的值为(A)。

int x,y,z; x=y=z=0;

++x || ++y && ++z;

A.0 B.1 C.2 D.不确定值

16.已知int a=1,b=2,c=3; 以下语句执行后a,b,c的值是(B)。

if(a>b)

c=a; a=b; b=c;

A.a=1, b=2, c=3 B.a=2, b=3, c=3