教材课后题答案第5章Word文档下载推荐.docx

上传人:b****5 文档编号:21165170 上传时间:2023-01-28 格式:DOCX 页数:15 大小:75.08KB
下载 相关 举报
教材课后题答案第5章Word文档下载推荐.docx_第1页
第1页 / 共15页
教材课后题答案第5章Word文档下载推荐.docx_第2页
第2页 / 共15页
教材课后题答案第5章Word文档下载推荐.docx_第3页
第3页 / 共15页
教材课后题答案第5章Word文档下载推荐.docx_第4页
第4页 / 共15页
教材课后题答案第5章Word文档下载推荐.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

教材课后题答案第5章Word文档下载推荐.docx

《教材课后题答案第5章Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《教材课后题答案第5章Word文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。

教材课后题答案第5章Word文档下载推荐.docx

7.以下选项中,不能正确赋值的是【】。

A)chars1[10];

s1="

China"

B)chars2[]={'

C'

'

h'

i'

n'

a'

};

C)chars3[10]="

D)chars3[10]={"

【答案】A

【解析】因为s1是数组名,代表数组的首地址,是常量,常量不能被赋值。

8.若有定义:

charx[]="

abcdefg"

chary[]={'

b'

c'

d'

e'

f'

g'

则正确的叙述为【】。

A)数组x和数组y等价B)数组x和数组y的长度相同

C)数组x的长度大于数组y的长度D)数组x的长度小于数组y的长度

【解析】因为x数组初始化是用字符串"

,x数组的长度为8,y数组初始化是用7个字符,y数组的长度为7,所以,数组x的长度大于数组y的长度。

9.函数调用:

strcat(strcpy(str1,str2),str3)的功能是【】。

A)将串str1复制到串str2中后再连接到串str3之后

B)将串str1连接到串str2之后再复制到串str3之后

C)将串str2复制到串str1中后再将串str3连接到串str1之后

D)将串str2连接到串str1之后再将串str1复制到串str3中

10.下列程序的输出结果是___________。

#include"

stdio.h"

string.h"

voidmain()

{charst[20]="

\"

hello\"

"

printf("

%d\n"

strlen(st));

}

A)6B)7C)11D)12

二、填空题

1.若有以下定义:

doublem[20];

则m数组元素的最小下标是______,最大下标是______。

【答案】0和19

2.在C语言中,二维数组元素在内存中的存放顺序是按_________存放的。

【答案】行

3.若有以下定义:

inta[3][5]={{0,1,2,3,4},{3,2,1,0},{0}};

则初始化后a[1][[2]的值是________,a[2][1]的值是_________。

【答案】1和0

4.若有以下定义:

chars[100],d[100];

intj=0,i=0;

且s中已赋字符串,请填空以实现字符串复制。

(注意:

不得使用逗号表达式)

while(s[i]){d[j]=_________;

j++;

d[j]=0;

【答案】s[i++]

5.下列程序的输出结果是_____________。

{intk,a[2];

k=a[1]*10;

k);

A)0B)1C)10D)不定值

【解析】定义a数组时没有赋初值,初值不定,因此,a[1]*10是个不定值。

6.下列程序的输出结果是____________。

{inti,a[10];

for(i=9;

i>

=0;

i--)

a[i]=10-i;

%d%d%d\n"

a[2],a[5],a[8]);

A)258B)741C)852D)369

7.下面程序的功能是:

从键盘上输入若干个学生的成绩,当输入负数时表示输入结束,计算每位学生的平均成绩,并输出低于平均分的学生成绩。

请填空。

{floatx[1000],sum=0,ave,a;

intn=0,i;

Entermark:

\n"

);

scanf("

%f"

&

a);

while(a>

=0&

&

n<

=100)

{sum+=【1】_________;

x[n]=【2】_________;

n++;

}

ave=【3】_________;

Output:

ave=%f\n"

ave);

for(i=0;

i<

n;

i++)

if(x[i]<

ave)

%f\n"

x[i]);

【答案】【1】a【2】a【3】sum/n

8.输入一个字符串,判断其是否回文,是输出“Yes!

”,不是输出“No!

”。

请填空。

(所谓回文就是正着读反着读相同。

例如:

ABCDCBA、madam是回文;

ABCDE、China不是回文)

{chars[100];

inti,j,k;

\nPleaseenterstring:

gets(【1】_________);

k=strlen(s)-1;

for(i=0,j=k;

【2】_________;

i++,j--)

if(s[i]【3】_________s[j])break;

if(i>

=j)printf("

Yes!

elseprintf("

No!

【答案】【1】s【2】i<

j或i<

=j【3】!

=

9.下面程序的功能是求二维数组周边元素之和。

二维数组中的数据如下所示,输出结果:

sum=63

12345

23456

34567

45678

#defineM4

#defineN5

{inta[M][N],i,j,sum=0;

M;

for(j=0;

j<

N;

j++)

%d"

【1】_________);

{sum+=a[0][i];

sum+=【2】_________;

for(i=1;

M-1;

{sum+=a[i][0];

sum+=【3】_________;

sum=%d\n"

sum);

【答案】【1】&

a[i][j]【2】a[M-1][i]或a[3][i]【3】a[i][N-1]或a[i][4]

10.以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码值之差。

输入的两个字符串分别为abcdefg和abceef,则输出为-1。

{charstr1[80],str2[80],c;

inti=0,s;

gets(str1);

gets(【1】_________);

while((str1[i]==str2[i])&

(str1[i]!

=【2】_________))

i++;

s=【3】_________;

s);

【答案】【1】str2【2】'

【3】str1[i]-str2[i]

三、阅读下面的程序,写出程序输出结果

1.#include"

{intn[3],i,j,k;

3;

i++)n[i]=0;

k=2;

k;

j++)n[j]=n[i]+1;

n[1]);

【答案】3

【解析】第一个for循环给n数组中各元素赋0值,第二个for循环是循环嵌套,当i等于0时,j等于0求出n[0]等于1,j等于1时求得n[1]等于2,因为此时n[0]=1而不是0了。

当i等于1时,j等于0求出n[0]等于3,j等于1时求得n[1]等于3。

2.#include"

{inta[2][3],i,j,n=1;

2;

a[i][j]=n++;

{for(j=0;

%4d"

a[i][j]);

【答案】123

456

3.#include"

{charch[7]={"

652ab31"

inti,s=0;

ch[i]>

='

0'

&

ch[i]<

9'

i+=2)

s=10*s+ch[i]-'

【答案】62

4.#include"

{charss[10]="

12345"

strcat(ss,"

6789"

gets(ss);

%s\n"

ss);

运行时输入:

ABC,写出输出结果。

【答案】ABC

5.

(1)程序的功能是什么?

(2)写出程序运行的输出结果。

#defineN8

voidmain()

{inti,j,t,min,a[N]={60,67,90,84,40,70,57,78};

for(j=0;

N-1;

for(i=j+1;

if(a[j]>

a[i])

{t=a[j];

a[j]=a[i];

a[i]=t;

for(i=0;

i<

i++)

a[i]);

【答案】

(1)用选择法将N个数从小到大排序

(2)输出结果是:

4057606770788490

四、编程题

1.编程序求Fibonacci数列的前20项,Fibonacci数列的定义为:

要求将数列存放在数组中,并按每行5个数的格式输出该数列。

程序:

{inti;

longf[30]={1,1};

for(i=2;

30;

f[i]=f[i-2]+f[i-1];

{if(i%5==0)printf("

%12ld"

f[i]);

输出结果:

11235

813213455

89144233377610

9871597258441816765

1094617711286574636875025

121393196418317811514229832040

2.用“冒泡法”将输入的10个字符按从小到大顺序排序并输出结果。

{inti,j,t;

charstr[10];

10;

%c"

str[i]);

for(j=1;

10-j;

if(str[i]>

str[i+1])

{t=str[i];

str[i]=str[i+1];

str[i+1]=t;

str[i]);

运行情况如下:

eifjsacrop

acefijoprs

3.已知a数组中的数据已按升序排序,要求从键盘输入一个数后将其插入a数组中,并使该数组中的数据仍然有序。

思路:

这是一个“插入法排序”问题。

若a数组中的数已经按由小到大排好序,现在要将输入的数n按顺序插入到a数组中。

从a[0]开始,将a数组中的每个数与n比较大小,当找到第一个比n大的数时,该位置i就是n要插入的位置,然后将a[i]开始的所有数依次后移一个位置,最后将n插入到a[i]中。

方法1算法如图5-1所示。

{inta[11]={2,4,5,6,8,10,23,36,47,68},n,i,j;

arraya:

%5d"

\nInsertdata:

n);

if(n>

a[9])a[10]=n;

else

{for(i=0;

if(a[i]>

n)

{for(j=9;

j>

=i;

j--)

a[j+1]=a[j];

a[i]=n;

break;

Now,arraya:

11;

运行结果:

245681023364768

Insertdata:

7

2456781023364768

方法2算法如图5-2所示。

{inta[11]={2,4,5,6,8,10,23,36,47,68};

intt1,t2,n,i,j;

\narraya:

a[9])

a[10]=n;

else

{if(a[i]>

{t1=a[i];

for(j=i+1;

{t2=a[j];

a[j]=t1;

t1=t2;

4.分别求N阶方阵的两条对角线上元素之和。

N阶方阵就是N行N列的矩阵,矩阵左对角线上的元素是a[i][i](i=0~N-1),右对角线上的元素是a[i][j](其中:

i=0~N-1,j=N-1-i)。

由于j的值取决于i,因此只要一个for循环即可。

例如三阶方阵

左对角线元素之和是:

1+3+6=10,右对角线上元素之和是3+3+2=8。

{inta[3][3]={1,2,3,1,3,5,2,4,6},sum1,sum2,i;

sum1=sum2=0;

{sum1=sum1+a[i][i];

sum2=sum2+a[i][3-1-i];

sum1=%dsum2=%d\n"

sum1,sum2);

sum1=10sum2=8

5.打印出以下的杨辉三角形(要求打印出6行)。

1

11

121

1331

14641

15101051

算法:

如图5-3所示

#defineN7

{inta[N][N],i,j;

{a[i][i]=1;

a[i][1]=1;

for(i=3;

for(j=2;

i;

a[i][j]=a[i-1][j-1]+a[i-1][j];

{for(j=1;

6.输入一行英文字母,统计其中有多少个单词,单词之间用空格分隔。

设:

变量word作为标志变量,初值为0;

当读到非空格时,word置1,读到空格时,word置0;

变量num作为单词记数变量,读到第一个非空格时,num加1。

因此,当读到非空格字符时首先判断是否是新单词开始,如果word为0即为新单词开始,单词记数变量num加1,单词标志变量word置1,接下来若还是非空格字符,只要word为1就不是新单词开始,接着判断下一字符,当读到空格时,将word置0。

如图5-4所示。

{inti,num=0,word=0;

charstr[80];

gets(str);

str[i]!

if(str[i]=='

'

)word=0;

elseif(word==0)

{word=1;

num++;

num);

ChineseMaterialsResearchSociety

4

 

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

当前位置:首页 > 自然科学 > 数学

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

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