好文档 - 专业文书写作范文服务资料分享网站

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

天下 分享 时间: 加入收藏 我要投稿 点赞

. . . .

【分析】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;

3.2.2 填空题

1. hn*2

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

2. n!=0 j++

【分析】由输出语句可知,定义的变量i,j 分别用于存放正数和负数的个数。 所以只要输入的数不是0,则进行判断。

3. 0 k/10 count++

【分析】count 作为累计的和所以初值一定为0;而while循环的作用是将指定的数k的各各位上的字数字取出来。k负责实现取出K的个位。则前两位则需通过k/10来实现。if (t==10)成立即是需要的数字,则总数需要自增。所以count++.

4. 50 (i*1.0)

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

5. 2*i-1 printf(\【分析】略

3.2.3 编程题

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

26,356010,2,3153,2,3,10xxxxyxxxxxxxxxxx?+?<=≠?=?+≤<≠≠????=?==

≥?

12

222

.下载可编辑.

. . . .

其中,x从键盘输入。 #include\int main() {

float x,y;

printf(\输入X\scanf(\printf(\if (x<0 &&x!=-3) {

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

else if (0<=x&&x<10&&x!=2&&x!=3) {

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

y=x*x-x-15;

printf(\}

2. 编写一个程序,从键盘输入年和月,计算并输出该年的该月份共有多少天。 算法分析:要考虑大月有31天,小月有30天,闰年的二月有29天以及非闰年的二月有28天这几种情况。

源程序:#include int main() {

int year,month,days;

printf(\scanf(\switch (month) {

case 1: case 3: case 5: case 7:

case 8: case 10: case 12: /*处理\大\月*/ days=31;break;

case 4: case 6: case 9: case 11: /*处理\小\月*/ days=30;break;

case 2: /*处理\平\月*/

if (year%4==0&&year0!=0||year@0==0) days=29; /*如果是闰年*/

13

.下载可编辑.

. . . .

else days=28; /*不是闰年*/ break;

default: printf(\月份输入错误*/ days=0; }

if (days!=0) printf(\

return 0; }

3. 编写一个程序,计算并输出下列级数之和:

23

1...2!3!!nxxxxexn=+++++

其中n与x从键盘输入。 #include\#include \main() { int i,n;

double s=1.0,s1=1.0,x; scanf(\for(i=1;i<=n;i++)

{s1=s1*i; /*各项中的阶乘*/

s=s+pow(x,i)/s1; /*按公式求出*/ }

printf(\}

4. 输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。

#include\main()

{char c;int i=0,j=0,k=0,l=0; while((c=getchar())!='\\n')

{if(c>=65&&c<=90||c>=97&&c<=122) i++; //i为字符数 else if(c>=48&&c<=57) j++; //j为数字数 else if(c==32) k++; //k为空格数 else l++;} //l为其他字符

printf(\}

5. 编写一个程序,解决猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个;以后每天早上都吃了前一天剩下的一半零一个;到第10天早上想再吃时,只剩一个桃子了。问猴子第一天共摘了多少桃子?

14

.下载可编辑.

. . . .

#include\main()

{int i=1,sum=0; for(;i<=10;i++) sum=2*sum+1;

printf(\}

4.2 习题解答 4.2.1 选择题

1. D

【分析】 定义一维数组的语法格式为“类型标识符 数组名[整型常量表达式] ;”,其中“整型常量表达式”是用来说明数组元素的个数,可以是整型常量、整型常量表达式或符号常量,但不能包含变量。选项A用圆括号定义数组a,是错误的;而选项B和C中,用变量n来说明数组a长度,是错误的。

2. C 【分析】 一维数组的初始化的语法格式为“类型标识符 数组名[整型常量表达式]={常量1,常量2,...常量n} ;”,所赋初值放在赋值号后的一对花括号中。选项A把初值放在一对圆括号,是错误的;选项B花括号中没有初值,而且语句没有“;”,是错误的;选项D中初值没有用花括号括起来,是错误的。

3. B 【分析】 选项A定义数组art有5个元素,而花括号中只提供2个初值,分别赋值给art[0]和art[1],其余元素自动赋值为0;选项B通过花括号的初值确定数组art有2个元素;选项C和D定义的数组art是等价的,表示含有5个元素,其值分别为“89、-23、0、0、0”。

4. A

【分析】 C语言中,二维数组排列的顺序是“按行存放”的,即先存放第0行的元素,再存放第1行的元素,以此类推。

5. B

【分析】 C语言中,二维数组是“按行存放”的,元素a[i][j]前面存放了i行,共i*m个元素,在第i行的第j列前面有j个元素,因此元素a[i][j]前的元素个数为i*m+j。

6. D

【分析】 选项A定义了a是一个1行4列的二维数组,但初值{1,2,3,4,5}却是1行5列,是错误的;选项B在初始化语句中省略了第二维的长度,是错误的;选项C定义了b是一个2行3列的二维数组,但初值{{1},{1,2},{1,2,3}}却是3行,是错误的;选项D省略了第一维的长度,第二维长度为3,因此选项D等价于“double y[1][3]={0};”。

7. D

【分析】 字符串\占9个字节,其中字符串结束标志'\\0'多占用了1个字节。选项A、B和C都只定义了8个元素的字符数组,是错误的。

15

.下载可编辑.

. . . .

8. D

【分析】 语句“char a[]=\长度,而\使以字符'\\0'为结束标志的一个字符序列,共7个字符,因此数组a长度为7;而语句“char b[]={'A','B','C','D','E','F'};”则定义了长度为6的字符数组,因此a数组比b数组长度长。

9. B

【分析】 格式说明符“%.4s”可以用来输出字符串中前4个字符,因此选项B正确。

10. B

【分析】 字符串输入函数gets(),其语法格式为“gets(字符数组名)”,选项A包含2个字符数组名,是错误的;选项D中gets函数的参数是字符串,也是不正确的; scanf函数使用%s格式说明符进行字符串输入,其输入项为数组名,选项C在数组名a和b前加“&”符号,是错误的。

11. D

【分析】 strcmp(s1,s2)将字符串s1和s2自左向右按字符的ASCII码值逐对进行比较,直到出现不同的字符或遇到'\\0'为止,如果s1等于s2,则strcmp(s1,s2)等于0;如果s1大于s2,则strcmp(s1,s2)大于0;如果s1小于s2,则strcmp(s1,s2)小于0。

12. C 【分析】 字符串复制函数strcpy(str1,str2)将字符串str2同串结束标志'\\0'复制到字符串str1中,函数返回str1的指针。字符串连接函数strcat(str1,str3) 将字符串str3连接到字符串str1之后。因此本题答案为选项C。

13. A

【分析】 结构体变量占存的大小是该结构体各成员所需存量的总和。

14. D

【分析】 程序中定义了一个结构体数组cnum[2],包含2个元素,并将初值{1,3,2,7}依次赋值给cnum[0].x、cnum[0].y、cnum[1].x和cnum[1].y。因此,表达式“cnum[0].y/cnum[0].x*cnum[1].x”的值为6。

15. C

【分析】 将初值{\}分别赋值给c[0].name、c[0].age、c[1].name、c[1].age、c[2].name、c[2].age、c[3].name、c[3].age,因此选项C能够打印出Mary。

16. C 【分析】程序中定义了一个共用体类型的变量u1,共用体各成员共同使用4字节存空间,初值u1.c=’A’,所以u1.n=65,输出是以%c格式符输出的,因此本题答案为选项C。

17. D

【分析】变量a是一个结构体类型,所占存的大小是该结构体各成员所需存量的总和。整型变量c占4字节存,共用体类型变量k占存的大小是该共用体中最大的一个成员j所占用的存量,为4字节,因此本题答案为选项D。

18. A 【分析】变量u是一个共用体类型变量,共用体类型变量u占存的大小是该共用体中最大的一个成员c所占用的存量共4个字节,共用体的所有成员公用一个存储空间,同一时间只能存储一个成员,并且所引用的是最后一次存入成员的值。因此本题答案为4,34,12。

16

.下载可编辑.

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

....【分析】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+
推荐度:
点击下载文档文档为doc格式
8cnr02luxe20sz532alg3gznb0gsy200bp7
领取福利

微信扫码领取福利

微信扫码分享