c语言程序的设计基础课后复习题参考答案与解析.docx

上传人:b****7 文档编号:10764463 上传时间:2023-02-22 格式:DOCX 页数:35 大小:35.91KB
下载 相关 举报
c语言程序的设计基础课后复习题参考答案与解析.docx_第1页
第1页 / 共35页
c语言程序的设计基础课后复习题参考答案与解析.docx_第2页
第2页 / 共35页
c语言程序的设计基础课后复习题参考答案与解析.docx_第3页
第3页 / 共35页
c语言程序的设计基础课后复习题参考答案与解析.docx_第4页
第4页 / 共35页
c语言程序的设计基础课后复习题参考答案与解析.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

c语言程序的设计基础课后复习题参考答案与解析.docx

《c语言程序的设计基础课后复习题参考答案与解析.docx》由会员分享,可在线阅读,更多相关《c语言程序的设计基础课后复习题参考答案与解析.docx(35页珍藏版)》请在冰豆网上搜索。

c语言程序的设计基础课后复习题参考答案与解析.docx

c语言程序的设计基础课后复习题参考答案与解析

《程序设计基础》习题参考答案与部分解析

第1章C语言概述

一、填空

a)C源程序的基本单位是函数。

b)一个C程序中至少应包括一个main函数。

c)在C语言中,输出操作是有库函数printf()函数完成。

二、单选题

1、A2、C3、B

解析:

第1题答案:

A。

因为一个C程序总是从main函数开始执行的, 而不论main函数在程序中的位置。

且到main函数结束。

第2题答案:

C。

因为main函数没有限制必须位于程序的最前面。

C程序书写自由,一行内可写几个语句。

在对一个C程序进行编译的过程中,无法检查注释当中的拼写错误。

不过C语言本身并没有输入输出语句,输入输出是由函数完成的。

第3题答案:

B。

因为一个C语言程序是由若干个函数组成的。

但至少包含一个main函数,且main函数的位置不限。

三、编程题

1、编写一个输出“WelcometoC!

”信息的小程序。

解:

程序如下

#include“stdio.h”

main()

{

printf(“WelcometoC!

”);

}

2、已知三角形的三边长分别为3,4,5,试用海轮公式编程求其面积。

海伦公式为:

S△=,其中s=(a+b+s)/2;

 解:

程序如下

#include“math.h”

#include“stdio.h”

main()

{

inta,b,c;/*a,b,c3个整型变量表示三角形的3条边。

*/

floats,s1;/*s1作为面积变量,s作为中间变量是都应该是实形*/

a=3;b=4;c=5;

s=(a+b+c)/2.0;

 s1=sqrt(s*(s-a)*(s-b)*(s-c));/*sqrt函数完成开平方根功能。

*/

printf(“area=%f\n”,s1);

}

 

第2章程序设计基础知识

一、单选题

1、C2、A3、C4、A5、C6、C7、D8、C

9、D10、A11、D12、A13、C14、C15、BA

16、B17D

解析:

1.答案:

C。

这里考察的是用户标识符的定义。

用户标识符由字母、数字、下划线组成。

且必须以字母或下划线开头,区分大小写,且不能与C语言已有的32个关键字同名。

由于选择不合法的用户标识符, A项的A、P_0、Do都是合法的用户标识符;B项的_A是合法的;D项的_123、temp、INT也都是合法的。

只有C选项的标识符都是错误的用户标识符。

2.答案:

A。

这里考察的是整型常量的概念。

B项当中01a不正确,C

项当中的0668不是正确的八进制常量,D项当中的2e5是float型常量。

3.答案:

C。

这里考察的是字符常量的定义。

字符常量是用单撇号括起来的单个字符或转义字符。

所以答案是C。

4.答案:

A。

字符变量只能包含一个字符。

5.答案:

C。

这里考察的是转义字符的正确表示。

C项的’074’是错误的转义字符,正确表示方法是’\074’。

6.答案:

C。

字符变量只能包含一个字符,而C项的c=’yes’是错误的。

 7.答案:

D。

这里考察的是输入格式的控制。

输入格式要与scanf语句中字符串格式相对应。

8.答案:

C。

这里考察的是输出格式和字符对应的ASCII码值。

’A’的ASCII码值是65,’Y’字符的ASCII码值是89。

9.答案:

D。

这里考察输入格式和输出结果形式。

由于输入格式不正确,所以输出的是不确定值。

10.答案:

A。

这里考察的是标识符的特点区分大小写,变量sum和变量sUM是两个不同的变量,sum并没有参加运算,所以它的值不边仍然是7。

11.答案:

D。

%运算符要求两边的运算数必须是整型。

12.答案:

A。

这里考察的是复合赋值运算。

a%=b+1;等价与a=a%(b+1);

由于a=10,b=4;所以运算后a的值是0。

13.答案:

C。

这里考察的是在变量定义类型是进行赋值操作。

要求 a,b,c都赋值为5,且为int类型。

只有C正确。

14.答案:

C。

这里考察的是类型的自动转换,只要有单精度类型或双精度类型参加运算,结果都是double(双精度)类型。

15.答案:

B,A。

这里考察的是逻辑表达式的运算过程。

表达式1&表达式2,若表达式1的值是0的话,结果就是0,表达式2就不参加运算。

要注意:

赋值表达式的值是左边赋值变量的值。

所以答案为B,A。

16.答案:

B。

这里考察的是逗号表达式运算过程是从第1个表达式开始运算,然后依次运行到最后一个表达式。

逗号表达式的值是最后表达式的值,且注意逗号运算符优先级低于赋值运算符。

所以表达式

(a=2,b=5,b++,a+b)运算过程a=2—>b=5—>b++—>a+b=8;结果是8。

17.答案:

D。

这里考察的是条件表达式的结合性是从右向左。

所以

 k

k:

c

c:

a;等价于k

k:

(c

c:

a);先运算c

c:

a;的值

是1,然后计算k

k:

1;的值是1。

二、填空题

1、-32768-327672、字母,数字,下划线3、分号(;)

4、30,155、186、0

7、-2648、79、0

10、111、y%2==112、x

13、014、(x>2&&x<3)||x<-1015、1

三、编程题

1、编写程序,输入一个长方形的二边长,输出其面积。

 解:

程序如下

#include“stdio.h”

main()

{

inta,b,s;/*a,b作为长方形的两个边长,s为面积。

*/

printf(“请输入两个边长\n”);

scanf(“%d%d”,&a,&b);

s=a*b;

printf(“Thearea:

%d\n“,s);

}

2、设置半径为r=2.9,编程求圆周长和圆面积

解:

程序如下

#include“stdio.h”

#definePI3.14

main()

{

floatr,L,S;

L=2*PI*r;

 S=PI*r*r;

printf(“L=%f,S=%f\n“,L,S);

}

3、输入一个华氏温度,输出相应的摄氏温度。

二者的换算公式是:

c=5/9(F–32),其中F表示华氏温度,c表示摄氏温度。

解:

程序如下

#include“stdio.h”

main()

{

floatc,F;

printf(“请输入一个华氏温度:

\n”);

scanf(“%f”,&F);

c=(float)5/9*(F-32);

printf(“F=%f,c=%f\n”,F,c);

 }

第3章程序设计初步

一、单选题

1、C2、C3、B4、B5、B

解析:

1.答案:

C。

这里考察的是if-else语句和表达式中有增量和减量的执行过程。

if(m++>5)printf(“%d\n”,m);elseprintf(“%d\n”,m++);

先执行m>5的值是0,然后执行m=m+1;得到m=6;由于m>5的值是0所以执行else语句,应先输出m的值是6,然后m再自增一个单位变成7。

2.答案:

C。

这里考察的是if语句的嵌套。

根据else子句总是与之前最近的if语句配对来进行选择满足条件的答案。

3.答案:

B。

这里也考察的是if语句的嵌套。

同理:

if(x

if(y<0)z=0;elsez+=1;等价与if(x

4.答案:

B。

这里考察的是if语句的嵌套。

根据else子句总是与之前最近的if语句配对。

5.答案:

B。

由于B项:

if(x=y)&&(x!

=0)x+=y;if后的条件表达式没有用圆括号括起来。

正确的是:

if((x=y)&&(x!

=0))x+=y;

二、根据要求完成程序填空

1、z>yz>xy>x2、ch>=‘A’&&ch<=’Z’ch=ch-32

3、x<0x/10y!

=2

三、编程题

 1、编写一个程序,要求用户从终端键入两个整数数值。

检测这两个数,判定第一个数是否能被第二数整除,并在终端上显示相应的信息。

解:

程序如下

#include“stdio.h”

main()

{

inta,b;/*a为第一个数,b为第二个数*/

printf(“Pleaseinputtwonumbers:

\n”);

scanf(“%d%d”,&a,&b);

if(a%b==0)

printf(“%d能被%d整除。

\n”,a,b);

else

printf(“%d不能被%d整除。

\n”,a,b);

 }

2、有3个整数a,b,c,由键盘输入,输出其中最大的数。

解:

程序如下

#include“stdio.h”

main()

{

inta,b,c,max;

printf(“Pleaseinputthreenumbers:

\n”);

scanf(“%d%d%d”,&a,&b,&c);

if(a>b)max=a;

elsemax=b;

if(max

 printf(“Themaxis%d\n”,max);

}

3、给出一百分制成绩,要求输出成绩等级A、B、C、D、E。

其中90分以上为A,80~89分为B,70~79为C,60~69为D,60分以下为E。

解:

程序如下

#include“stdio.h”

main()

{

floatscore;

intgrade;

printf(“Pleaseinputascore:

\n”);

scanf(“%f“,&score);

grade=(int)score/10;

switch(grade)

{case10:

case9:

printf(“gradeisA\n”);break;

case8:

printf(“gradeisB\n”);break;

 case7:

printf(“gradeisC\n”);break;

case6:

printf(“gradeisD\n”);break;

default:

printf(“gradeisE\n”);

}

}

4、新世纪百货进行打折促销活动,消费金额(P)越高,折扣(d)越大,标准如下:

消费金额折扣

P<1000%

100≤P<2005%

200≤P<50010%

500≤P<100015%

P≥100020%

编程实现从键盘输入消费金额,输出折扣率和实付金额(f)。

要求分别用 if语句和switch语句实现。

解:

(1)用if语句编程实现如下

#include“stdio.h”

main()

{

floatP,d,f;

printf(“输入消费金额:

\n”);

scanf(“%f”,&P);

if(P<100)d=0;

if(P>=100&&P<200)d=0.05;

if(P>=200&&P<500)d=0.10;

if(P>=500&&P<1000)d=0.15;

if(P>=1000)d=0.20;

f=P*(1-d);

 printf(“折扣是%f,则实付金额为%f\n”,d,f);

}

(2)用switch语句编程实现如下

#include“stdio.h”

main()

{

floatP,d,f;

intc;

printf(“输入消费金额:

\n”);

scanf(“%f”,&P);

c=(int)P/100;

switch(c)

 {case0:

d=0;break;

case1:

d=0.05;break;

case2:

case3:

case4:

d=0.10;break;

case5:

case6:

case7:

case8:

case9:

d=0.15;break;

 default:

d=0.20;

}

f=P*(1-d);

printf(“折扣是%f,则实付金额为%f\n”,d,f);

}

第4章循环结构程序设计

一、单项选择

1、A2、D3、C4、D5、B

6、D7、B8、B

二、按要求完成程序填空

1、c!

=’\n’c>=’0’&&c<=’9’

2、i%3==2&&i%5==3&&i%7==2j%5==0

3、i<10j%3!

=0

 三、编程题

1、编程求n的阶乘(n由键盘输入)。

解:

程序如下

#include“stdio.h”

main()

{

intn,i;

longfac;

fac=1;

printf(“Inputanumber:

”);

 scanf(“%d”,&n);

i=1;

while(i<=n)

{fac=fac*i;

i++;

}

printf(“%d!

is%ld\n”,n,fac);

}

2、计算1!

+2!

+3!

+…+10!

的值。

解:

方法一

#include“stdio.h”

main()

{

inti=1,j;

doublefac,sum=0;

while(i<=10)

{j=1;

 fac=1;

while(j<=i)

{fac=fac*j;

j++;

}

sum=sum+fac;

i++;

}

printf(“1!

+2!

+3!

+…+10!

=%.0f\n”,sum);

}

方法二:

#include“stdio.h”

main()

 {

inti,j;

doublefac,sum=0;

for(i=1;i<=10;i++)

{

for(j=1,fac=1;j<=i;j++)

fac=fac*j;

sum=sum+fac;

}

printf(“1!

+2!

+3!

+…+10!

=%.0f\n”,sum);

}

方法三:

#include“stdio.h”

main()

{

inti;

doublefac,sum;

 sum=0;

fac=1;

for(i=1;i<10;i++)

{

fac=fac*i;

sum=sum+fac;

}

printf(“1!

+2!

+3!

+…+10!

=%.0f\n”,sum);

}

3、求Sn=a+aa+aaa+…+aaa…a(n个a)的值,其中a是一个数字。

例如:

3+33+333+3333(此时n=4),n由键盘输入。

 解:

程序如下

#include“stdio.h”

main()

{

inta,n,i;

longSn,t;

Sn=0;

printf(“Pleaseinputa:

\n”);

scanf(“%d”,&a);

printf(“Pleaseinputn:

\n”);

scanf(“%d”,&n);

t=a;

for(i=1;i<=n;i++)

{Sn=Sn+t;

 t=t*10+a;

}

printf(“Sn=%ld\n”,Sn);

}

4、打印出所有的“水花仙数”,所谓“水花仙数”是指一个3位数,其各位数字立方和等于该数本身。

例如,153是一个水花仙数。

解:

程序如下

#include“stdio.h”

main()

{

intt,a,b,c,n;/*变量n为统计水花仙数的个数*/

n=0;

for(t=100;t<1000;t++)

{a=t/100;

b=(t–a*100)/10;

c=t%10;

if(a*a*a+b*b*b+c*c*c==t)

 {n++;

if(n%6==0)

printf(“\n”);

printf(“%5d”,t);

}

}

}

6、每个苹果0.8元,第一天买2个苹果,第二天开始,每天买前一个的2倍,直至购买的苹果个数达到不超过100的最大值。

编写程序求每天平均花多少钱?

解:

程序如下

#include“stdio.h”

main()

{

 intday,num,sum;

floatmoney,every;

sum=0;

num=2;

for(day=1;num<100;)

{sum=sum+num;

day++;

num=num*2;

}

money=sum*0.8;

 every=money/day;

printf(“every=%f\n”,every);

}

7、变成完成用一元人民币换成一分、二分、五分的所有兑换方案,即输出所有满足搭配要求的1分币个数,2分币个数,5分币个数。

解:

程序如下:

#include“stdio.h”

main()

{

intone,two,five;

for(one=0;one<=100;one++)

for(two=0;two<=50;two++)

for(five=0;five<=20;five++)

 if(one+two*2+five*5==100)

printf(“one=%d,two=%d,five=%d\n”,one,two,five);

}

第5章模块化程序设计---函数

一、单选题

1、B2、B3、A4、A5、D

6、D7、B8、B9、B10、A

二、编程题

1、已知三角形的三边长,编一实现求三角形面积的功能函数。

说明:

用海伦公式来求面积,但要注意输入的三边长要符合构成三角形的条件。

海伦公式为:

SΔ=

(其中:

s=(a+b+c)/2)

解:

程序如下

 #include“stdio.h”

#include“math.h”

floatArea(inta,intb,intc)

{

floats,area;

s=(float)(a+b+c)/2;

if((a+b>c)&&(a-b)

area=sqrt(s*(s-a)*(s-b)*(s-c));

else

area=0;

returnarea;

}

main()

 {

inta,b,c;

floatarea;

floatArea(int,int,int);

printf(“请输入三角形的三边长\n”);

scanf(“%d%d%d”,&a,&b,&c);

area=Area(a,b,c);

if(area!

=0)

printf(“area=%f\n”,area);

eles

printf(“error!

\n”);

}

2、写一个判断素数的函数,在主函数输入一个整数,输出是否素数的信息。

解:

程序如下

#include“stdio.h”

intprime(intn)

{

intt,a=1;

for(t=2;t<=n/2;t++)

 if(n%t==0)

{

a=0;break;

}

returna;

}

main()

{

intn;

printf(“inputanumber:

\n”);

 scanf(“%d”,&n);

if(prime(n)==1)

printf(“%disprime\n”,n);

eles

printf(“%disnotprime\n”,n);

}

3、编写函数,求1!

+2!

+3!

+…+K!

的和。

解:

程序如下

#include“stdio.h”

doubleSUM(intk)

 {inti,j;

doublefac,sum;

sum=0;

for(i=1;i<=k;i++)

{

for(j=1,fac=1;j<=i;j++)

fac=fac*j;

sum=sum+fac;

}

returnsum;

 }

main()

{intk;

doublesum;

scanf(“%d”,&k);

sum=SUM(k);

printf(“1!

+2!

+3!

+…+K!

=%.0f\n”,sum);

}

4、求方程ax2+bx+c=0的根,用2个函数分别求当b2-4ac大于0和等于0的根并输出结果,从主函数中输入a、b、c的值。

#include“stdio.h”

#include“math.h”

 voidf1(floata,floatb,floatc)

{

floatt1,t2;

t1=(-b+sqrt(b*b-4*a*c))/(2*a);

t2=(-b-sqrt(b*b-4*a*c))/(2*a);

printf(“t1=%f,t2=%f\n”,t1,t2);

}

voidf2(floata,floatb,floatc)

{

floatt1;

t2=-b/(2*a);

printf(“t1=%f\n”,t1);

}

main()

{

 floata,b,c;

printf(“inputa,b,c\n”);

scanf(“%f%f%f”,&a,&b,&c);

if(b*b–4*a*c>

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

当前位置:首页 > 高等教育 > 哲学

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

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