c语言第八章课后题答案Word文档下载推荐.docx

上传人:b****5 文档编号:18614049 上传时间:2022-12-29 格式:DOCX 页数:20 大小:54.92KB
下载 相关 举报
c语言第八章课后题答案Word文档下载推荐.docx_第1页
第1页 / 共20页
c语言第八章课后题答案Word文档下载推荐.docx_第2页
第2页 / 共20页
c语言第八章课后题答案Word文档下载推荐.docx_第3页
第3页 / 共20页
c语言第八章课后题答案Word文档下载推荐.docx_第4页
第4页 / 共20页
c语言第八章课后题答案Word文档下载推荐.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

c语言第八章课后题答案Word文档下载推荐.docx

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

c语言第八章课后题答案Word文档下载推荐.docx

for(i=0;

i<

i++)

printf("

a[i]);

数组传递时向函数传递的是数组的地址值,实参与形参共享空间,在被调函数中对数组进行修改就会造成主函数中的数组也被修改。

8.2

(1)

intPositiveNum(inta[],intn)

inti,count=0;

n;

if(a[i]>

0)count++;

returncount;

voidFib(longf[],intn)

inti;

f[0]=0;

f[1]=1;

for(i=2;

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

(3)

inta[10],n,max,min,maxPos,minPos;

for(n=0;

n<

10;

n++)

scanf("

&

a[n]);

max=min=a[0];

maxPos=minPos=0;

if(a[n]>

max)

{

max=a[n];

maxPos=n;

}

elseif(a[n]<

min)

min=a[n];

minPos=n;

max=%d,pos=%d\n"

max,maxPos);

min=%d,pos=%d\n"

min,minPos);

(4)

#defineROW2

#defineCOL3

MultiplyMatrix(inta[ROW][COL],intb[COL][ROW],intc[ROW][ROW])

inti,j,k;

ROW;

for(j=0;

c[i][j]=0;

for(k=0;

k<

COL;

k++)

{

c[i][j]=c[i][j]+a[i][k]*b[k][j];

}

voidPrintMatrix(inta[ROW][ROW])

inti,j;

printf("

%6d"

a[i][j]);

\n"

);

inta[ROW][COL],b[COL][ROW],c[ROW][ROW],i,j;

Input2*3matrixa:

scanf("

a[i][j]);

Input3*2matrixb:

b[i][j]);

MultiplyMatrix(a,b,c);

Results:

PrintMatrix(c);

8-3、

viodDivArray(intpArray[],intn)

for(i=0;

pArray[i]/=pArray[0];

错误分析:

原代码中定义了一个未初始化的指针,而不是数组,有可能会使指针访问到不该访问的内存空间,造成危险,应该定义数组,对数组中的数进行修改操作。

8-6、

#defineN40

intReadscore(intscore[],longnum[]);

intFindMax(intscore[],longnum[],intn);

voidmain()

intscore[N];

longnum[N];

intn;

intm;

n=Readscore(score,num);

/*接收人数*/

m=FindMax(score,num,n);

最高的成绩:

%d\n学号为:

%ld\n"

score[m],num[m]);

intReadscore(intscore[],longnum[])

inti=-1;

do{

i++;

请输入学号:

"

%ld"

num[i]);

请输入成绩:

score[i]);

}while(score[i]>

=0&

&

num[i]>

=0);

returni;

intFindMax(intscore[],longnum[],intn)

intk;

intmax=score[0];

if(score[i]>

max=score[i];

k=i;

returnk;

8-7

voidSort(intscore[]);

voidReadscore(intscore[]);

intscore[10];

Readscore(score);

Sort(score);

voidReadscore(intscore[])

inputscore:

"

voidSort(intscore[])

intk,p;

inttemp;

intmin=score[0];

elseif(score[i]<

min=score[i];

p=i;

temp=score[k];

score[k]=score[p];

score[p]=temp;

%d"

score[i]);

8-10

inta[10][10];

intsum1=0;

intsum2=0;

请输入维数n(n<

=10):

scanf("

n);

请输入元素a[%d][%d]:

i,j);

sum1+=a[i][i];

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

主对角线之和:

%d\n副对角线之和:

%d\n"

sum1,sum2);

8-12

inta[7][7];

7;

i++)/*使对角线上、第一列的数均为1*/

a[i][i]=1;

a[i][0]=1;

i++)/*计算中间的数*/

for(j=1;

i;

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

i++)/*打印杨辉三角形*/

=i;

}#include<

8-13

longFibonacci(intn);

longm;

m=Fibonacci(12);

m);

longFibonacci(intn)

if(n==0)

return0;

elseif(n==1)

return1;

else

returnFibonacci(n-1)+Fibonacci(n-2);

结果

8-14

stdlib.h>

time.h>

floata=0,b=0,c=0,d=0,e=0,f=0;

srand(time(NULL));

/*注意:

只能将产生随机数种子写在循环外面*/

6000;

m=rand()%6+1;

switch(m)

case1:

a++;

break;

case2:

b++;

case3:

c++;

case4:

d++;

case5:

e++;

case6:

f++;

面数:

--1------2------3------4------5------6--\n"

概率:

%.2f%%%.2f%%%.2f%%%.2f%%%.2f%%%.2f%%"

a/6000,b/6000,c/6000,d/6000,e/6000,f/6000);

8-15

voidProduceNum(intnum[]);

voidGuessNum(intguess[]);

voidPanZhengWu(intnum[],intguess[],intresult[]);

intnum[4];

intguess[4];

intresult[2];

intflag=0;

ProduceNum(num);

请输入您想猜的次数:

GuessNum(guess);

PanZhengWu(num,guess,result);

if(result[0]==4)

Congradulations!

flag=1;

break;

if(flag==0)

Sorry!

Youhaven'

tguesstherightnumber!

/*功能:

产生4位相异的数字放入num【4】中

入口参数:

返回值:

*/

voidProduceNum(intnum[])

num[0]=rand()%10;

num[1]=rand()%10;

num[2]=rand()%10;

num[3]=rand()%10;

for(i=0;

for(j=i+1;

if(num[i]==num[j])/*判断是否产生4个完全相异的数字*/

flag=1;

//if(flag==0)

//printf("

%d%d%d%d\n"

num[0],num[1],num[2],num[3]);

}while(flag);

用户输入所猜的数并存入guess【4】中

voidGuessNum(intguess[])

请输入4位您猜的数:

输入第%d个数:

i+1);

guess[i]);

判断猜数正误

计算机产生的数、用户猜的数

voidPanZhengWu(intnum[],intguess[],intresult[])

intx=0;

inty=0;

if(num[i]==guess[i])/*数字对且位置对*/

x++;

if(num[i]==guess[j])/*数字对(含有位置对和位置不对的两种情况)*/

y++;

y=y-x;

result[0]=x;

result[1]=y;

猜测结果:

%dA%dB\n"

result[0],result[1]);

二、收集资料,总结数组(包括一维数组和二维数组)作为函数参数时应注意的问题,以及参数传递的特点。

向函数传递数组时,只需使用不带方括号的的数组名作为函数实参调用即可(即:

仅仅用一个数组名,不带方括号和下标)

注意:

1、由于数组名代表数组第一个元素的地址,因此用数组名作为函数实参实际上是将数组的首地址传给被调函数

2、将数组的首地址传给被调函数后,形参与实参数组具有相同的首地址,实际上占用相同的存储空间

3、在被调函数中修改形参数组元素时,实际上相当于修改是参数组中的元素

4、数组作函数形参时,数组的长度可不出现在数组名的方括号内,通常用另一个整型实参来制定数组的长度

成绩

批阅教师

批阅日期

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

当前位置:首页 > 工程科技 > 能源化工

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

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