程序设计基础教程课后答案.docx

上传人:b****7 文档编号:8753360 上传时间:2023-02-01 格式:DOCX 页数:64 大小:49.35KB
下载 相关 举报
程序设计基础教程课后答案.docx_第1页
第1页 / 共64页
程序设计基础教程课后答案.docx_第2页
第2页 / 共64页
程序设计基础教程课后答案.docx_第3页
第3页 / 共64页
程序设计基础教程课后答案.docx_第4页
第4页 / 共64页
程序设计基础教程课后答案.docx_第5页
第5页 / 共64页
点击查看更多>>
下载资源
资源描述

程序设计基础教程课后答案.docx

《程序设计基础教程课后答案.docx》由会员分享,可在线阅读,更多相关《程序设计基础教程课后答案.docx(64页珍藏版)》请在冰豆网上搜索。

程序设计基础教程课后答案.docx

程序设计基础教程课后答案

-CAL-FENGHAI.-(YICAI)-CompanyOne1-CAL-本页仅作为文档封面,使用请直接删除

 

程序设计基础教程(c语言版)课后答案(总68页)

z

习题解答

习题解答............................................................................................................3

选择题....................................................................................................3

填空题....................................................................................................3

编程题....................................................................................................4

习题解答............................................................................................................5

选择题....................................................................................................5

填空题....................................................................................................7

编程题....................................................................................................8

习题解答...........................................................................................................11

选择题...................................................................................................11

填空题..................................................................................................12

编程题..................................................................................................12

习题解答..........................................................................................................15

选择题..................................................................................................15

填空题..................................................................................................17

编程题..................................................................................................18

习题解答..........................................................................................................29

选择题..................................................................................................29

填空题..................................................................................................31

编程题..................................................................................................33

习题解答..........................................................................................................37

选择题..................................................................................................37

填空题..................................................................................................41

编程题..................................................................................................43

习题解答..........................................................................................................67

选择题..................................................................................................67

填空题..................................................................................................68

编程题..................................................................................................68

2

习题解答

选择题

1、B

【分析】在一个C程序中必须有且只能有一个main函数,而且main函数可以在任何地方出现.

2、C

【分析】C语言中合法以的标识符组成为:

字母,数字,下划线,且数字不能打头,亦不能为关键字。

A中,-sub不合法。

B中4d不合法。

D中void为关键字。

3、

【分析】

4、C

【分析】转义字符中,第一个\”输出“,第二\\输出\,第三个\b退格,把前一个\去掉了,第四个\’输出’,第五个\t跳格,第六个\”输出”,第七个\n输出换行。

5、C

【分析】本题将10进制17,分别按8、16进制输出。

8的进制21=2*8+1*1=17(10,16制11=1*16+1*1=17(10)

填空题

1、主

【分析】一个C源程序中至少包括一个主函数,其他函数没有限制。

2、双引号。

【分析】两种写法都是允许的,使用尖括号表示在包含文件目录中去查找(包含目录是由用户在设置环境时设置的),而不在源文件目录去查找.使用双引号则表示首先在当前的源文件目录中查找,若未找到才到包含目录中去查找。

用户编程时可根据自己文件所在的目录来选择某一种命令形式。

3、261,b1

【分析】将10进制的177,按8进制和16进制两种形式输出。

4、a=3b=7x=y=c1=Ac2=a

【分析】scanf函数中,格式说明符以外的原样输入。

5、printf函数中,格式说明符以外的原样输出。

%控制输出结果中共m位,小数

3

占n位。

【分析】

编程题

1.#include""

voidmain()

{floatqianmi,yingli;#include""

voidmain()

{

charx;

printf("请输出一个小写小母\n");

scanf("%c",&x);

printf("输出字母的大写型式为:

%c",x+32);

}

3、#include<>

voidmain()

{

floatc,f;

printf("请输入一个摄氏温度:

");

scanf("%f",&c);

f=32*c+5*c;

4

printf("华氏温度为:

%\n",f);

}

4.

#include<>

voidmain()

{

inta=3,b=4,c=5;

floatx=,y=,z=;

doubleu=51274,n=128765;

printf("a=%-3d,b=%-3d,c=%d\n",a,b,c);

printf("x=%,y=%,z=%\n",x,y,z);

printf("x+y=%,y+z=%,x+z=%\n",x+y,y+z,x+z);

printf("u=%.0lfn=%.0lf\n",u,n);

printf("c1='a'or97\nc2='b'or98\n");

}

习题解答

选择题

1、C.

【分析】C语言的运算符按运算对象的个数可以分为单目、双目和三目运算符和多目运算符。

2、C.

【分析】%运算符要求参加运算的数必须是整数

3、A.

【分析】B.赋值运算的作用是用将常量赋给变量,而不能给表达形式所以a*3=2不对。

C.%运算符要求参加运算的数必须是整数,而x是float类型所以x%(-3)不对。

D.y=float(i),由于i是int类型,向float类型转换是自由转的,不需要强制转。

4、A.

【分析】因为k=7,x=12;x%=k,则x=12%7,此时x=5,而k%=5,即k=7%5此时K=2,所以(x%=k)-(k%=5)就等价于5-2=3。

同理,x%=(k%=5)的值为0;x%=(k-k%5)的值为2;x%=k-k%5的值也为2

5、A.

5

【分析】首先通过n*100+将原数扩大100,并通过+判断是否进位。

之后/100进行舍去小数点后第三位的运算。

6、B.

【分析】分析根据优先级别,先计算小括号里,y与3相等成立所以表达式的值为1,再将1赋给x,而x的值就是表达式的值为1.

7、A.

【分析】略

8、D.

【分析】“a大于等于10”、“a小于等于0”两者分别为关系运算,一个“或”字又表明为逻辑或运算,所以D对。

9、B.

【分析】在逻辑表达式求解中,并不是所有的逻辑运算符都被执行,对&&运算符来说,只有前一个表达式不等于0时,才继续进行右边的运算。

由于a>b为0,所以左边的表达式为0,所以右边的++n将不被计算,所以n的值不变仍为2。

10、B

【分析】241的二进制形式为,15的二进制形式为00011111,进行按位&运算后为00010001;a的二进制形式为01100001,z的二进制形式为01111010,进行按位|运算后为0。

00010001与0都为非0元素,所以再进行&&时结果一定为1。

11、A

【分析】b>>2表示向右移动两位,相当于除以两个2结果为8/2=4;同理,b>>1相当于除一个2,结果为6,4/6为0。

12、B

【分析】3的二进制数为00000011。

10的二进制为00001010,a<<2的结果为00001100,b==1的值为0,所以00001100与0按位或之后结果为00001100。

即10进进制的12。

13、D.

【分析】就运算符的优先级别而言,单目>双目,算术运算>关系运算>逻辑运算。

14、B

【分析】19的二制数为00010011,23的二进制数为00010100,两者进行按位与后结果为00010000十进制16,即为16进制的13。

15、C

【分析】0x39的二进制形式为00111001,0xf的二进制形式为00001111,两者进行异或运算,异或结算的规则,参加运算的两个二进制位同号,则结果为假,异号则为真。

结果为:

00110110即为16进制的36。

16、A

6

【分析】进行按位或运算,要a的低8位为1,则要求b的低8位全为1,高8位要求不变,则要求高8位全为0,即b应该为:

00000000,即为8进制的0377。

17、A

【分析】由题得1>2不成立,所以x>y++x:

++y表达式的值为++y,则此时Y的值为3,而++x没有被执行,所以x的仍值为1,而Z的值与表达式的值相同所以选A。

18、C

【分析】赋值运算符的作和是将一个表达式或一个变量,常量赋给另一个变量,赋值号的左边只能是变量,不能是常量,所以A、B、D不对。

19、B

【分析】逗号运算符是级别最纸的运算符,逗号表达式也是值是所有表达式中最右边的值。

即a+b的值,由题从左向右算起,b++后b为6,则a+b为8.

20、D

【分析】在不同种数据类型进行计算时的转换规则是:

数据类型低的全部转换成运算过程中级别最高的。

在int、long、unsigned和char四个类型中,long的类型级别最高,所以结果的类型为long.

填空题

1.

【分析】“/”要求两操作数如果一个为实数结果都为实数,如果都为整数结果也为整数,所以a/=,a/4=2.所以原式=*10=。

2.5,32

【分析】x++表示将x的值拿来用,然后再++;而y*=x++等价于y=y*x,即y=8*4=32,此计算结束之后x的值才增加1,变为5。

3.-40

【分析】赋值运算符的结合方向是从右向左的,所以先计算a*a=25,所以a+=a-=a*a等价于a+=(a-=25),而此时a仍为5.接下来计算a-=25得a=2-25=-20;则a+=(a-=25)等价于a+=-20,所以a=a-20=-20-20=-40。

4.16

【分析】x+=--x%--y等价于x+=(--x)%(--y),--放在变量的前面时,要先对变量进行变化,然后再用,所以原式即为x+=14%3,而14%3=2,即x+=2,而此时x=14,所以x=x+2=16。

5.x>1&&x<10||x<0&&x!

=-1

【分析】略

6.0

7

【分析】根据运算符的优先级别,算术运算>关系运算>逻辑运算可知,要先算a+b=7,接下来计算7>c即7>5成立为1,然后计算b==c,而4==5不成立,所以值为0,即最终表达式等价于1&&0,所以结果为0.

7.0

【分析】略,同第6题。

8.-17

【分析】条件运算符优先级别高于赋值运算符,所以先算(a

b的值,由于13<25成立,所以(a

b的值为a的值,并将a的值赋给y,此时,原式等价于(13<-17)y:

c,而13<-17不成立,所以表达式的值为C的值,即为-17。

9.18,3,3

【分析】对逗号表达式的值,即为从左向右最后一个表达式的值,本题中表达式的值即为6*a的值即18。

10.

【分析】算术运算符中同一级别的运算符按从左向右的顺序进行,所以先算a%43=8,再计算8*(int)(x+y)=8*9=72,再计算72%3=0,再计算0/5=0.最后计算与X相加,所以最终结果为。

编程题

1.编写一个程序,要求输入圆的半径r,计算并输出该圆的周长和面积。

#definePI

#include""

voidmain()

{

floatr,S=0,L=0;

printf("inputr:

\n");

scanf("%f",&r);

S=PI*r*r;假设美元与人民币的汇率是1美元兑换元人民币,欧元与人民币的汇率是1欧元兑换元人民币,编程实现输入人民币的钱数,输出能兑换的美元及欧元金额。

#include""

voidmain()

{

floatrenminbi,meiyuan,ouyuan;

8

printf("inputrenminbi:

\n");

scanf("%f",&renminbi);

meiyuan=renminbi*;编写一个程序,从键盘上输入3个字符后,按各字符的ASCII码从小到大顺序输出这些字符。

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

#include<>(待查)

main()

{

unsignedu=0xffff;

h=u>>8;根据当前银行的利率表,编程实现从键盘输入存款金额money,存期year和年利率rate,计算银行存款的本息sum(保留1位小数)。

#include<>

intmain()

{

intyear;

floatmoney,rate,sum;

printf("请输出金额,利率,存款时间\n");

scanf("%f,%f,%d",&money,&rate,&year);

sum=money*year*rate;

printf("存款的本息sum=%.1f\n",sum);

10

}

习题解答

选择题

1.D

【分析】在此要注意,else总是于之前面最近的且没有用过的if进行配对,所以在本题中,else与第二个if配对,且整体做为第一个if语句的语句体。

又因,10>20不成立,所以第一个if根本不被执行,所以m的值没有任何变化。

2.A

【分析】else总是于之前面最近的且没有用过的if进行配对,所以在本题中,

if(a>b)t=s+t;

elseif(a==b)t=5;

elset=2*s;

相当于t=s+t;(a>b)t=5(a=b);t=2*s(a

3.C

【分析】while(E)的含义是当E为真。

为真即为不等于0,而A、B、D都是表示非零。

4.D

【分析】i=0,++i后,i为1,i%2=1,所以执行j+=i;即j=1,i=1小于5所以还执行++i,此时i为2,则i%2等于0,跳出本次判断。

同理当i等于4,6时同样跳出判断,而当i为3,5时,都要执行j+=i。

5.A

【分析】while

(1)进行判断时,条件永远成立,所以执行循环体。

输出一个“*”后,i++,i变为1,又1<3成立,所以结束循环。

6.D

【分析】当i=1时,执行s+=i后s=1;执行循环体中i++后,i为2,而后还要执行一次for结构中的i++,则i为小于6成立,则再执行s+=i;i++;则s为4,i为4,而后还要执行一次for结构中的i++,则i为5,同样5小于6成立,则再执行s+=i;i++;则s为9,i为6,而后还要执行一次for结构中的i++,则i为7,且7小于6已不再成立。

所以最后输出97

7.B

【分析】在for(语句1;语句2;语句3)结构中,语句1为初值,语句2为循环体执行的条件,语句3为变量自增语句。

本题中i为2,i==0不成立,所以循环体不被执行。

8.D

11

【分析】a=1,a<8成立,所以执行循环体b+=a;a+=2;后,a=3,b=3,再执行for结构中的a++,则a=4,b=3.以后同理。

9.B

【分析】当a=1时b=1,执行循环体,b>=20不成立,b%3==1成立,则执行b+=3;continue;则b=4,然后跳出本次行循环,则此时a=2,b=4.以后同理进行判断。

10.A

【分析】对于双重循环,外层循环变化一次,内层变化一个循环。

本题。

当i=1时,j可以为3、2、1,同理当当i=2时,j可以为3、2、1;当i=3时,j可以为3、2、1;而语句if(i*j>3)break;则表时,如果i*j>3时结束整个for循环。

条件不成立时再执行m*=i*j;

填空题

1.hn*2

【分析】sn为第n次落地时共经过的米数,hn为第n次反弹的高度n>=2,hn*2才为第n次经过的距离。

2.n!

=0j++

【分析】由输出语句可知,定义的变量i,j分别用于存放正数和负数的个数。

所以只要输入的数不是0,则进行判断。

3.0k/10count++

【分析】count作为累计的和所以初值一定为0;而while循环的作用是将指定的数k的各各位上的字数字取出来。

k%10负责实现取出K的个位。

则前两位则需通过k/10来实现。

if(t==10)成立即是需要的数字,则总数需要自增。

所以count++.

4.50(i*

【分析】本题的累加问题中,累加50次,即i<=50,两个相除时如果都为整数则结果一定为整数,为此,需要将分母转化成FLOAT类型。

所以填(i*。

5.2*i-1printf("\n");i

【分析】略

编程题

1.编写一个程序,计算并输出下列分段函数值:

26,356010,2,3153,2,3,10xxxxyxxxxxxxxxxx⎧+−<=≠⎪=−+≤<≠≠⎨⎪−−=−==≥⎩

12

其中,x从键盘输入。

#include""

intmain()

{

floatx,y;

printf("输入X");

scanf("%f",&x);

printf("\n");

if(x<0&&x!

=-3)

{

y=x*x+2*x-6;

}

elseif(0<=x&&x<10&&x!

=2&&x!

=3)

{

y=x*x-5*x+6;

}

else

y=x*x-x-15;

printf("y=%f",y);

}

2.编写一个程序,从键盘输入年和月,计算并输出该年的该月份共有多少天。

算法分析:

要考虑大月有31天,小月有30天,闰年的二月有29天以及非闰年的二月有28天这几种情况。

源程序:

#include<>

intmain()

{

intyear,mo

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 院校资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1