《C语言程序设计习题与上机指南》答案 联系客服

发布时间 : 星期五 文章《C语言程序设计习题与上机指南》答案更新完毕开始阅读d5c1e01ac5da50e2524d7f99

scanf(\f=1.0*a/b;

c=(int)(f*100);

printf(\两数进行实数除,商是%f,商的第二位小数位是%d\\n\}

运行结果:

请输入两个整数:158

两数进行实数除,商是1.875000,商的第二位小数位是7

7.输入一个(unsigned类型)无符号整数,分别输出它的低四位和高四位。

#include voidmain()

{unsignedu,high4,low4;

printf(\请输入一个无符号整数:\scanf(\

low4=(u&0xf);/*u的低四位保留原值,其余位置0*/

high4=(u&0xf000)>>12;/*u的高四位保留原值,其余位置0,并右移12位*/ printf(\的十六进制是%x\\n\

printf(\十六进制表示%u的低四位是%x,高四位是%x\\n\}

运行结果:

请输入一个无符号整数:54332 54332的十六进制是d43c

十六进制表示54332的低四位是c,高四位是d

8.输入两个小写字母分别赋值给字符变量ch1与ch2,将它们转换成大写字母,并交换ch1与ch2的值,最后输出ch1与ch2的值。

#include

voidmain() {charc1,c2,t;

printf(\请输入两个半角的小写英文字母:\c1=getchar(); c2=getchar(); c1-=32;

c2-='a'-'A';/*与32等价*/ t=c1; c1=c2; c2=t;

printf(\}

运行结果:

请输入两个半角的小写英文字母:db BD

9.输入秒数,将它转换,用小时、分钟、秒来表示。例如输入7278秒,则输出:2小时1分18秒。

#include

voidmain()

{intk;

inthour,minute,second; printf(\请输入秒数:\scanf(\hour=k/3600; k%=3600; minute=k/60; second=k`;

printf(\小时%d分钟%d秒。\\n\}

运行结果:

请输入秒数:7278 2小时1分钟18秒。

10.输入两个复数的实部和虚部,输出这两个复数积的实部和虚部。两复数的积按下面的公式计算:(a+bi)·(c+di)=(ac-bd)+(ad+bc)i。

#include voidmain()

{floata,b,c,d,real,imag;

printf(\请输入第一个数的实部和虚部:\scanf(\

printf(\请输入第二个数的实部和虚部:\scanf(\real=a*c-b*d; imag=a*d+b*c;

printf(\两个复数积的实部和虚部分别是%f,%f\\n\}

运行结果:

请输入第一个数的实部和虚部:1.12.2 请输入第二个数的实部和虚部:3.34.4

两个复数积的实部和虚部分别是-6.050000,12.100000 第三章C程序的基本控制结构

一.单选题

1.若变量已经正确定义为float型,要通过语句scanf(“%f%f%f”,&a,&b,&c)。

给a输入10.0,n输入20.0,c输入30.0,下列不正确的输入形式是(B)。 A)10<回车>20<回车>30<回车>B)10.0,20.0,30.0<回车> C)10.0<回车>20.030.0<回车>D)1020<回车>30<回车> 2.若有说明语句:charc=?65?;则变量c(D)。 A)包含1个字符 B)包含2个字符 C)包含3个字符 D)说明不合法,c的值不确定

3.若w=1,x=2,y=3,z=4,则条件表达式w

4.x、y、z被定义为int型变量,若从键盘给它们输入数据,正确的输入语句是(B)。

A)inputx,y,z;B)scanf(“%d%d%d”,&x,&y,&z);

C)scanf(“%d%d%d”,x,y,z);D)read(“%d%d%d”,&x,&y,&z); 5.有以下程序。

#include voidmain() {

chara1=?A?,a2=?a?; printf(“%c\\n”,(a1,a2)); }

以下叙述中正确的是(B)。

A)程序输出大写字母AB)程序输出小写字母a

C)格式说明符不足,编译出错D)程序运行时产生出错信息 6.以下程序的输出结果是(A)。

#include voidmain() {

inta=2,b=3,c=0,d; d=!a&&!b||!c; printf(“%d\\n”,d);} A)1B)0C)非0的数D)-1

7.以下程序的输出结果是(B)。

#include voidmain() {

inta=6,b=5;

printf(“%d\\n”,--a+b,--b+a); }

A)8B)9C)10D)11

8.下面程序输出的结果是(D)。

#include voidmain()

{inta=55,b=50,c=60,d; d=a>20?b:c; switch(d)

{case40:printf(“%d,”,a);

case50:printf(“%d,”,b); case60:printf(“%d,”,c); default:printf(“$\\n”);}}

A)50,60B)50,$C)60,$ D)50,60,$

9.如果从键盘输入数据666,下面程序输出的结果是(C)。

#include voidmain() {intx;

scanf(“%d”,&x);

if(x>300)printf(“%d”,x); if(x>200)printf(“%d”,x);

if(x>100)printf(“%d”,x); }

A)666 B)666666C)666666666 D)以上都不对 10.有如下程序。

#include voidmain() {

inta=5,b=6,c=1; switch(c) {

case0:b++; case1:a++; case2:a++;b++; }

printf(“a=%d,b=%d\\n”,a,b); }

该程序的输出结果是(C)

A)a=5,b=6B)a=6,b=7C)a=7,b=7D)a=7,b=8 11、下面的程序中:

inti=9;

while(i=0)i=i-1;

则下列描述正确的是(C) A)while循环执行9次 B)循环体语句执行一次 C)循环体语句一次也不执行 D)循环是无限循环

(注意:i=0是赋值语句,不是对i中值和0进行比较,因此程序执行后i的值是0而不是9)

12、下面的程序中:

inti=-1; do

{i=i*i;}while(!i);

则下列描述正确的是(B)

A)循环体一次也不执行B)循环体执行一次 C)循环体执行两次D)是无限循环 13、下面的程序中:

inti=0; while(i=1) {…}

则下列描述正确的是(C) A)循环控制表达式不合法 B)循环控制表达式为0 C)循环控制表达式为1 D)以上都不对 14、下面的程序中:

intx=0,total=0;

while(!x!=0)total+=++x; printf(“%d”,total);

则下列描述正确的是(D)

A)程序段的控制表达式是非法 B)程序段是无限循环