谭浩强C语言程序设计习题集 下载本文

(2)□□□□10 (3)56.100000

(4) □□□□□□3.141600 (5)5.68100e+02

(6) □□□3.14160e+00 (7)3.1416

(8) □□□□□□3.1416

参考分析:采用g格式输出数据时,当数据<=10-5或>=107时,按指数方式输出(缺省正数11位,负数12位),否则按小数方式输出(缺省含小数点总宽度最多7位)。且不输出无意义的0(后面)和小数点。 3.34 以下程序的输出结果是( )。

#include main()

{float a=123.456;double b=8765.4567; printf(\printf(\printf(\printf(\printf(\printf(\printf(\}

参考答案:(1)123.456000

(2) □□□□□□□123.456 (3)123.4560 (4)8765.456700

(5) □□□□□□8765.456 (6)8765.4560 (7)8765.4560

*3.35 以下printf语句中*的作用是( ),输出结果是( )。

#include main() {int i=1;

printf(\i++;

printf(\i++;

printf(\}

参考答案:

(1)可使同一或相同输出格式数据输出宽度得以改变(动态域宽控制) (2)##1 ##□2 ##□□3

3.36 以下printf语句中的\的作用是( ),该程序的输出结果是( )。

#include main()

{int x=12;double a=3.1415926; printf(\

printf(\printf(\printf(\}

参考答案:

(1)输出数据左对齐 (2) □□□□12##

12□□□□##

□□3.1415926000## 3.1415926000□□##

*3.37 以下程序的输出结果是( )。

#include main()

{int a=325;double x=3.1415926; printf(\ x=%+e\\n\}

参考答案:a=+00325 x=+3.14159e+00 *3.38以下程序的输出结果是( )。

#include main() {int a=252;

printf(\ a=%#o\\n\printf(\ a=%#x\\n\}

参考答案:a=374□□a=0374 a=fc□□a=0xfc

3.39以下程序的输出结果是( )。

int x=7281;

printf(\

printf(\printf(\printf(\printf(\

参考答案:(1)x=7281,x=□□7281,x=□16161,x=□□1c71,x=□□7281 (2)x=7281,x=7281□□,x=$7281□□,x=$007281,x=d (3)x=+7281,x=□+7281,x=+0007281 (4)x=16161,x=016161 (5)x=1c71,x=0x1c71

**3.40 假设变量a和b均为整型,以下语句可以不借助任何变量把a、b中的值进行交换。请填空。

a+=( );b=a-( );a-=( ); 参考答案:b b b

3.41 假设变量a、b和c均为整型,以下语句借助中间变量t把a、b和c中的值进行交换,即把b中的值给a,把c中的值给b,把a中的值给c。例如:交换前a=10、b=20、c=30,交换后a=20,b=30,c=10。请填空。

( );a=b;b=c;( ); 参考答案:t=a c=t;

**3.42 设x、y和z都是int型变量,m为long型变量,则在16位微型机上执行下面赋

值语句后,y值为( ),z值为( ),m值为( )。

y=(x=32767,x-1); z=m=oxffff;

参考答案:32766、-1、65535

3.43 若x为int型变量,则执行以下语句后x的值为( )。

x=7;

x+=x-=x+x; 参考答案:-14

3.44 若a和b均为int型变量,则以下语句的功能是( )。

a+=b;b=a-b;a-=b;

参考答案:交换a、b变量的值 *3.45 在scanf函数调用语句中,可以在格式字符和%号之间加一星号,它的作用是( ),当输入以下数据:10□□20□□30□□40,下面语句的执行结果是( )。

int a1,a2,a3;

scanf(\参考答案:读入数据后不赋给相应的变量 把10给a1,把20不给任何变量,把30给a2,把40给a3

3.46有一输入函数scanf(\则不能使float类型变量k得到正确数值的原因是( )和( ),正确的语句应为( )。

参考答案:格式字符不正确 缺少&符号 scanf(\

3.47 已有定义int a;float b,x;char c1,c2;为使a=3,b=6.5,x=12.6,c1='a',c2='A',正确的scanf函数调用语句是( ),输入数据的方式为( )。 参考答案:

scanf(\3□6.5□12.6aA

参考分析:该题目不好,读取数据语句和提供数据方式全部由做题者决定,这会出现各式各样的答案。

*3.48 若有以下定义和语句,为使变量c1得到字符'A',变量c2得到字符'B',正确的格式输入形式是( )。

char c1,c2;

scanf(\参考答案:A□□□B□□□

参考分析:读取字符数据指定数据宽度时,系统读取第一个字符

*3.49 执行以下程序时,若从第一列开始输入数据,为使变量a=3,b=7,x=8.5, y=71.82, c1='A',c2='a',正确的数据输入形式是( )。 int a,b;float x,y;char c1,c2; scanf(\scanf(\

scanf(\

参考答案:a=3□b=7x=8.5□y=71.82c1=A□c2=a

*3.50 已有定义int i,j;float x;为将-10赋给i,12赋给j,410.34赋给x;则对应以下scanf函数调用语句的数据输入形式是( )。

scanf(\参考答案:-12□c□4.1034e2

参考分析:第一个数也可给17776,第二个数也可给0xc,第三个数也可给410.34。

第四章 逻辑运算和判断选取控制

4.1 选择题

**4.1逻辑运算符两则运算对象的数据类型 。

A)只能是0或1 B)只能是0或非0正数 C)只能是整型或字符型数据 D)可以是任何类型的数据 参考答案:D 参考分析:c语言中没有专用的逻辑量,任何数值类型的数据都可以作为逻辑数据使用,判断时0为假,非零为真,计算时真置1,假置0。 *4.2以下关于运算符优先顺序的描述中正确的是

A)关系运算符<算术运算符<赋值运算符<逻辑运算符 B)逻辑运算符<关系运算符<算术运算符<赋值运算符 C)赋值运算符<逻辑运算符<关系运算符<算术运算符 D)算术运算符<关系运算符<赋值运算符<逻辑运算符 参考答案:C

4.3 下列运算符中优先级最高的是 。

A)< B)+ C)&& D)!= 参考答案:B

*4.4能正确表示―当x的取值在[1,10]和[200,210]范围内为真‖的C语言表达式为 。 A) (x>=1)&&(x<=10)&&(x>=200)&&(x<=210) B) (x>=1)&&(x<=10)||(x>=200)&&(x<=210) C) (x>=1)||(x<=10)||(x>=200)||(x<=210) D) (x>=1)||(x<=10)&&(x>=200)||(x<=210) 参考答案:B

参考分析:C语言中实际上与运算和或运算优先级相等,由于C采用短路算法,所以不会影响B的结果,即不需要改成((x>=1)&&(x<=10))||((x>=200) &&(x<=210)) 4.5 表示图中坐标轴上阴影部分正确的表达式是 。 | | | a b c A)(x<=a)&&(x>=b)&&(x<=c) B)(x<=a)||(b<=x<=c) C)(x<=a)||(x>=b)&&(x<=c) D)(x<=a)&&(b<=x<=c) 参考答案:C

4.6判断char型变量ch是否为大写字母的正确表达式为 。

A)'A'<=ch<='Z' B)(ch>='A')&(ch<='Z') C) (ch>='A')&&(ch<='Z') D)('A'<=ch)AND('Z'>=ch) 参考答案:C

4.7 有int x=3,y=4,z=5;则下面表达式中值为0的是 。

A)'x'&&'y' B)x<=y C)x||y+z&&y-z D)!((x

4.8 已知x=43,ch='A',y=0;则表达式(x>=y&&ch<'B'&&!y)的值是 。

A)0 B)语法错误 C)1 D)\假\参考答案:C

4.9若希望当A的值为奇数时,表达式的值为―真‖,A的值为偶数时,表达式的值为―假‖。则以下不能满足要求的表达式是 。

A)A%2= =1 B)!(A%2= =0) C)!(A%2) D)A%2