C教材答案13章.docx

上传人:b****3 文档编号:3507925 上传时间:2022-11-23 格式:DOCX 页数:16 大小:23.50KB
下载 相关 举报
C教材答案13章.docx_第1页
第1页 / 共16页
C教材答案13章.docx_第2页
第2页 / 共16页
C教材答案13章.docx_第3页
第3页 / 共16页
C教材答案13章.docx_第4页
第4页 / 共16页
C教材答案13章.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

C教材答案13章.docx

《C教材答案13章.docx》由会员分享,可在线阅读,更多相关《C教材答案13章.docx(16页珍藏版)》请在冰豆网上搜索。

C教材答案13章.docx

C教材答案13章

C教材习题答案(1-3章)

习题1

一.填空题

1.C程序是由(函数)构成的,一个C程序中至少包含(main函数)。

因此,(函数)是C程序的基本单位。

2.C程序注释是由(/*)和(*/)所界定的文字信息组成的。

3.函数体一般包括(声明部分)和(执行部分)。

二.判断题

1.一个C程序的执行总是从该程序的main函数开始,在main函数最后结束。

(正确)

2.main函数必须写在一个C程序的最前面。

(错误)

3.一个C程序可以包含若干的函数。

(正确)

4.C程序的注释部分可以出现在程序的任何位置,它对程序的编译和运行不起任何作用。

但是可以增加程序的可读性。

(正确)

5.C程序的注释只能是一行。

(错误)

6.C程序的注释不能是中文文字信息。

(错误)

8.可以使用TurboC来编译和连接一个C程序。

(正确)

9.可以使用TurboC来运行一个C程序。

(正确)

10.可以使用TurboC来实时调试(即动态调试)一个C程序。

(正确)

三、在c++6.0中输入如下的程序,编译、连接通过后显示结果

(1)#include“stdio.h”

voidmain()

{

printf(“*”)

printf(“***”);

printf(“*****”);

printf(“*******”);

}

答案:

*

***

*****

*******

(2)已知底和高,计算三角形的面积。

#include“stdio.h”

voidmain()

{intbottom,high,area;/*bottom表示底,high表示高,area表示面积*/

bottom=4;

high=6;

area=bottom*high/2;

printf(“theareais%d\n”,area);

}

答案:

theareais12

四、算法设计:

请试着分别用自然语言或、程序流程图和NS图描述如下算法。

1.设计一个程序在屏幕上显示如下的文字

HELLOWELCOMEYOU

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

例如:

153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。

3.对输入的某学生成绩,如果学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。

4.一个数如果恰好等于它的因子之和,这个数就称为“完数”。

例如6=1+2+3.编程找出1000以内的所有完数。

5.一只猴子摘了N个桃子第一天吃了一半又多吃了一个,第二天又吃了余下的一半又多吃了一个,到第十天的时候发现还有一个,问共有多少个桃子。

 

答案:

1.#include“stdio.h”

main()

{

printf(“HELLOWELCOMEYOU”);

}

2.水仙花数产生在100到999之间,利用穷举法,对此范围之内的所有数一个个进行测试,关键是要对每一个三位数分离出它的三个数字。

具体的算法是:

n%10,得到个位,(n/10)%10,得到百位数字,n/100,得到个位数字。

再利用水仙花数的含义来判断该数是否满足条件。

#include“stdio.h”

main()

{

intn,,i,j,k;

for(n=100;n<=999;n++)

{

i=n%10;

j=(n/10)%10;

k=n/100;

if(i*i*i+j*j*j+k*k*k==n)

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

}

}

 

3.此题用if…elseif来实现。

对于每次输入的成绩,判断它属于哪个等级。

#include"stdio.h"

main()

{

intgrade;

printf("inputgrade=");

scanf("%d",&grade);

if(grade>=90)printf("A\n");

elseif(grade>=60&&grade<=89)printf("B\n");

elseprintf("C\n");

}

 

4.先考虑一个整数m,如何判断它是否为完数。

从数学知识可知:

一个数m除该数本身外的所有因子都在1~m/2之间。

算法中要取得因子之和,只要在1~m/2之间找到所有的整数m的数,将其累加起来即可。

如果累加起来与m本身相等,则表示m是一个完数,可以将m输出。

#include"stdio.h"

main()

{

intm,i,s;

for(m=2;m<=1000;m++)

{s=0;

for(i=1;i<=m/2;i++)

if(m%i==0)s+=i;

if(m==s)

printf("%d\t",m);

}

printf("\n");

}

5.找出前后两天的数量关系,然后用递推法求解。

设第十天的桃子数目为t,昨天的数为y,则t=y/2-1,得到y=2t+2,这样由今日数目可以求出昨日数目,从最后一天开始,倒退到第一天,倒退的循环次数比天数少1。

所以,若已知第n天只留下一个,问第一天有多少个时,则倒退循环n-1次得到结果。

天数:

10987654321

桃子数目:

14102246941903827661534

#include"stdio.h"

main()

{

inti,t,y,n;

t=1;

printf("\ninputnumbern:

\n");

scanf("%d",&n);

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

{

y=2*t+2;

t=y;

}

printf("thetotalis:

%d\n",y);

}

 

习题2

一、选择题

C语言基本类型包括(D)

A)整型、实型、逻辑型B)整型、实型、字符型、逻辑型

C)整型、字符型、逻辑型D)整型、实型、字符型

下列四组选项中,均不是C语言关键字的选项是A。

A)defineIFtype

B)getccharprintf

C)includecasescanf

D)whilegopow

语言的字符型数据在内存中的存储形式是(D)

A)原码B)补码C)反码D)ASCII码

C语言的整型数据在内存中的存储形式是(B)

A)原码B)补码C)反码D)ASCII码

已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2=‘A’+‘6’-‘3’后,c2中的值为A。

A)DB)68C)不确定的值D)C

以下叙述正确的是C。

A)在C程序中,每行只能写一条语句

B)若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数

C)在C程序中,%是只能用于整数运算的运算符

D)在C程序中,无论是整数还是实数,都能被准确无误地表示

以下叙述不正确的是D。

A)在C程序中,逗号运算符的优先级最低

B)在C程序中,MAX和max是两个不同的变量

C)若a和b类型相同,在计算了赋值表达式a=b后,b中的值将放入a中,二b中的值不变

D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值

下面正确的字符常量是D。

A)“c”B)‘\\’’C)‘’D)‘K’

下列四组选项中,均是合法转义字符的选项是A。

A)‘\”’‘\\’‘\n’

B)‘\’‘\017’‘\”’

C)‘\018’‘\f’‘xab’

D)‘\\0’‘\101’‘xlf’

下列四组选项中,均是不合法的用户标识符的选项是B。

A)WP_0do

B)b-agotoint

C)floatla0_A

D)-123abcTEMP

若x、i、j、k都是int型变量,则计算下面表达式后,x的值为C。

x=(i=4,j=16,k=32)

A)4B)16C)32D)52

设有说明:

charw;intx;floaty;doublez;则表达式w*x+z-y值的数据类型为D。

A)floatB)charC)intD)double

设C语言中,一个int型数据在内存中占2个字节,则unsignedint型数据的取值范围为C。

A)0~255B)0~32767C)0~65535D)0~2147483647

若运行时给变量x输入12,则以下程序的运行结果是。

(有错误,应为0)

main()

{intx,y;

scanf(“%d”,&x);

y=x>12?

x+10:

x-12;

printf(“%d\n”,y);

}

A)4B)3C)2D)1

 

若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”。

则以下不能满足要求的表达式是C。

A)A%2==1B)!

(A%2==0)C)!

(A%2)D)A%2

设有:

inta=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后n的值为B。

A)1B)2C)3D)4

以下程序的运行结果是B。

main()

{inta,b,d=241;

a=d/100%9;

b=(-1)&&(-1);

printf(“%d,%d”,a,b);

}

A)6,1B)2,1C)6,0D)2,0

已知intx=10,y=20,z=30;以下语句执行后x,y,z的值是B。

if(x>y)z=x;x=y;y=z;

A)x=10,y=20,z=30B)x=20,y=30,z=30

C)x=20,y=30,z=10D)x=20,y=30,z=20

以下程序的运行结果是C。

main()

{intm=5;

if(m++>5)

printf(“%d\n”,m);

else;

printf(“%d\n”,m--);

}

A)4B)5C)6D)7

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

A)‘A’<=ch<=‘Z’B)(ch>=‘A’)&(ch<=‘Z’)

C)(ch>=‘A’)&&(ch<=‘Z’)D)(‘A’<=ch)AND(‘Z’>=ch)

 

逻辑运算符两侧运算对象的数据类型D。

A)只能是0和1B)只能是0或非0正数

C)只能是整型或字符型数据D)可以是任何类型的数据

 

sizeof(float)是B。

A)一个双精度型表达式B)一个整型表达式

C)一种函数表达式D)一个不合法的表达式

设x、y、z和k都是int型变量,则执行表达式:

x=(y=4,z=16,k=32)后,x的值为C

A)4B)16C)32D)52

设有如下的变量定义:

inti=8,k,a,b;

unsignedlongw=5;

doublex=1,42,y=5.2;

则以下符合C语言语法的表达式是A

  A)a+=a-=(b=4)*(a=3)

  B)x%(-3);

  C)a=a*3=2

  D)y=float(i)

假定有以下变量定义:

intk=7,x=12;则能使值为3的表达式是D

A)x%=(k%=5)B)x%=(k-k%5)C)x%=k-k%5D)(x%=k)-(k%=5)

设x和y均为int型变量,则以下语句:

x+=y,y=x-y;x-=y;的功能是D

  A)把x和y按从大到小排列

  B)把x和y按从小到大排列

  C)无确定结果

  D)交换x和y中的值

以下程序的输出结果是D

main()

{inta=12,b=12;

printf("%d,%d\n",--a,++b);

}

A)1010  B)1212 C)1110 D)1113

在C语言提供的合法的关键字是D

A)swicth  B)cher    C)CaseD)default

若已定义x和y为double类型,则表达式:

x=1,y=x+3/2的值是C

A)1  B)2     C)2.0 D)2.5

C语言提供的合法的数据类型关键字是B

A)Double B)short C)integerD)Char

在C语言中,合法的长整型常数是A

A)0L

B)4962710

C)0.054838743

D)2.1869e10

二、填空题

scanf函数的格式化字符串中,格式说明与输出项的个数必须相同。

如果格式说明的个数小于输出项的个数,则多余的输出项____忽略___。

如果格式说明的个数多于输出项的个数,则多余多余的格式将输出______。

以下程序的运行结果是__52.00_____。

#include

voidmain()

{inti=5,j=9;

floatx=2.3,y=45.;

printf(“%8.2f\n”,i%(int)(x+y)*j/2/3+y);

}

若有定义:

charc=‘\010’;则变量c中包含的字符个数为___1个___。

若x和n均是int型变量,且x和n的初值均为5,则计算表达式x+=n++后x的值为___10___,n的值为____6__。

若a是int型变量,则计算下面表达式A=25/3%3后a的值为__2____。

若x和a均是int型变量,则计算表达式x=(a=4,6*2)后的x值为_12_____,计算表达式x=a=4,6*2后的x值为__4____。

若a是int型变量,则表达式(a=4*5,a*2),a+6的值为__26____。

若s是int型变量,且s=6,则表达式s%2+(s+1)%2的值为__1____。

在VC++中,一个int型数据在内存中占4个字节,则int型数据的取值范围为__-2147483648~2147483647___。

若有以下定义intm=5,y=2;,则计算表达式y+=y-=m*=y后的y值是___-16___。

设有定义语句:

inti=3;floatf=456.789;则表达式1.2+i+’A’+f值的数据类型是__double____。

 

三、思考以下问题

1.几种基本数据类型各占几个字节?

2.标识符分哪几类,各有什么用途?

3.为什么要定义符号常量?

4.变量名定义有什么规则?

5.C语言有哪些几类运算符号,又有哪几类表达式?

 

习题3

一、选择题

能正确表示a和b同时为正或同时为负的逻辑表达式是D

A)(a>=0||b>=0)&&(a<0||b<0)

B)(a>=0&&b>=0)&&(a<0&&b<0)

C)(a+b>0&&a+b<=0)

D)a*b>0

以下条件表达式中能完全等价于条件表达式x的是(B)。

A)(x==0)B)(x!

=0)

C)(x==1)D)(x!

=1)

设ch是char型变量,值为'A',则表达式ch=(ch>='A'&&ch<='Z')?

ch+32:

ch的值是:

B

A)ZB)a

C)zD)A

设a,b和c都是int型变量,且a=3,b=4,c=5,则下面的表达式中,值为0的表达式是D

A)'a'&&'b'B)a<=b

C)a||b+c&&b-cD)!

((a

c||1)

设a=5,b=6,c=5,d=8,m=2,n=2,执行(m=a>b)&&(n=c>d)后n的值为B

A)1B)2

C)3D)0

设x、y、z、t均为int型变量,则执行以下语句后,t的值为C

x=y=z=1;

t=++x||++y&&++z;

A)不定值B)4

C)1D)0

已知intx=10,y=20,z=30,则执行

if(x>y)

z=x;x=y;y=z;

语句后,x、y、z的值是(B)。

A)x=10,y=20,z=30B)x=20,y=30,z=30

C)x=20,y=30,z=10D)x=20,y=30,z=20

设a为整型变量,不能正确表达数学关系10

A

A)10

C)a>10&&a<15D)!

(a<=10)&&!

(a>=15)

语句:

printf("%d",(a=2)&&(b=-2));的输出结果是D

A)无输出B)结果不确定

C)-1D)1

执行下列程序片段时输出结果是。

C

        intx=13,y=5;

        printf(“%d”,x%=(y/=2));

A)3B)2C)1D)0

下列程序的输出结果是。

B

        main()

        {intx=023;

printf(“%d”,--x);

        }

A)17B)18C)23D)24

已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数据时,正确的输入方式是。

D

        inta1,a2;charc1,c2;

        scanf(“%d%d”,&a1,&a2);

        scanf(“%c%c”,&c1,&c2);

A)1020AB↙B)1020↙

                                            AB↙

C)1020AB↙D)1020AB↙

执行下列程序片段时输出结果是。

B

        intx=5,y;

        y=2+(x+=x++,x+8,++x);

        printf(“%d”,y);

A)13B)14C)15D)16

有输入语句:

scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);为使变量a的值为1,b的值为3,c的值为2,则正确的数据输入方式是。

D

A)132↙B)1,3,2↙

C)a=1b=3c=2↙D)a=1,b=3,c=2↙

二、读程序或程序段,写出结果

1.charc1=’a’,c2=’c’;

printf(“%d,%c”,c2-c1,c2-‘a’+’C’);

 

结果:

2,E

2.#include“stdio.h”

main()

{

charch1,ch2;

ch1=’A’+’5-‘3’;

ch2=’A’+’6’-‘3’;

printf(“%d,%c”,ch1,ch2);

}

结果:

-87,D

3.#include“stdio.h”

main()

{intx;floaty;

scanf(“%3d%f”,&x,&y);

printf(“x=%d,y=%f”,x,y);

}

当执行时从第一列输入数据1234空格678回车,

则x和y的值分别是多少?

结果:

x=123,y=4.000000

4.    main()

        {inta=12345;

           floatb=-198.345,c=6.5;

           printf(“a=%4d,b=%-10.2e,c=%6.2f\n”,a,b,c);

        }

结果:

a=12345,b=-1.98e+002,c=6.50

5.    main()

        {intx=-2345;

           floaty=-12.3;

           printf(“%6d,%06.2f”,x,y);

        }

三、填空题

1.C语言的程序是由一个或者多个文件组成的,每个文件又是由一个或多个函数组成的。

2.C语句可以分为表达式语句,函数调用语句,复合语句,空语句和控制语句

等5种类型。

3.C控制语句有3种。

4.一个表达式要构成一个C语句,必须加分号。

5.复合语句是用一对大括号界定的语句块。

6.printf函数和scanf函数的格式说明都使用#字符开始。

7.scanf处理输入数据时,遇到下列情况时该数据认为结束:

(1)遇空格、“回车”、“跳格”键。

(2)遇宽度结束,(3)遇非法输入。

8.已有inti,j;floatx;为将-10赋给i,12赋给j,410.34赋给x;则对应以下scanf函数调用语句的数据输入形式是。

9.C语言本身不提供输入输出语句,其输入输出操作是由函数来实现的。

10.一般地,调用标准字符或格式输入输出库函数时,文件开头应有以下预编译命令:

#include  。

四、程序设计

1.编写一个程序,从键盘接受3个整数,作为三角形的三边,求出三角形的面积

答案:

#include

#include

main()

{

inta,b,c;

doublep,S;

printf("请输入三边长度(如3,4,5):

");

scanf("%d,%d,%d",&a,&b,&c);

if(a+b<=c||b+c<=a||a+c<=b)

printf("您所输入的三边不构成三角形!

");

else

{

p=(a+b+c)/2;

S=sqrt(p*(p-a)*(p-b)*(p-c));

printf("此三角形面积为:

%f",S);

}

}

2.编写一个程序,输入华氏温度,输出相应的摄氏温度。

转换公式是:

c=(f-32)/1.8,c表示摄氏温度,f表示华氏温度。

答案:

#include

voidmain()

{

doublec,f;

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

");

scanf("%lf",&f);

c=(f-32.0)/1.8;

printf("摄氏温度为:

%5.2f\n",c);

}

3.输入秒数,将它转换,用小时、分钟、秒来表示。

例如输入7278秒,则输出:

2小时1分18秒。

答案:

#include

main()

{

ints,f,m;

m=7278;

s=m/3600;

f=m%3600/60;

m=m%3600%60;

printf("%d:

%d:

%d",s,f,m);

}

 

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

当前位置:首页 > 党团工作 > 党团建设

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

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