实验6数组参考答案Word格式.docx
- 文档编号:14720007
- 上传时间:2022-10-24
- 格式:DOCX
- 页数:19
- 大小:43.80KB
实验6数组参考答案Word格式.docx
《实验6数组参考答案Word格式.docx》由会员分享,可在线阅读,更多相关《实验6数组参考答案Word格式.docx(19页珍藏版)》请在冰豆网上搜索。
if(l<
n&
&
n<
=10)
”输入数据并求累加和权
/車求出平均值权
/审求最大、最小值的下标权
printf("
Input%dinteger:
for(i=0,sum=0;
i<
n;
i++){
scanf(w%dn,&
a[i]);
sum+=a[i];
}average=(float)sum/n;
for(i=0,max=0,min=0;
if(a[i]>
a[max])
max=i;
if(a[i]<
a[min])
min=i;
}printf(Bmax=%-5dindex=%d\nw>
a[max],max);
printf("
min=%-5dindex=%d\n"
・a[min],min);
average=%.2f\n"
average);
}
else
printfC数据超出围■);
4.编程:
青年歌手参加歌曲大奖赛,有10个评委对她(他)进行打分,试编程求这位选手的平均得分并
辙出(去掉一个最高分和一个最低分)。
#include<
voidmainO
inti,max,min;
floata[10],ave;
printf(B请输入10个评委的打分:
”);
for(i=0,ave=0;
10;
i++)/*输入分数并求累加和寧/scanfCXf"
&
ave+=a[i];
for(i=0,max=0,min=0;
i++)/*求最大、最小值的下标*/
辻(a[i]>
a[max])
max=i;
if(a[i]<
a[minj)
min=i;
ave=ave-a[max]-a[min];
ave=ave/8;
printf(”该选手的评委打分是:
for(i=0;
i++)
%.2f\a[i]);
printf(ff\nw);
printfC去掉最高分%.2ff去掉最低分%.2f,该选手的平均得分是%・2f\nJa[max],a[min],ave)
5.编程:
用两种方法输出斐波那切数列的前40项(参考例6-4)。
要求:
(1)方法1:
不使用数组;
★include<
intfl=lff2=ltf3ti;
printf(w%12d%12d\fl,f2);
for(i=3;
=40;
f3=fl+f2;
%12d\f3);
if(i%5=0)
printf(*\nw);
fl=f2;
f2=f3;
(2)方法2:
使用一维数组。
inti;
intfib[40];
fib[O]=fib[l]=l;
/*计算其余的38个数权
for(i=2;
40;
fib[i]=fib[i-l]+fib[i-2];
for(i=0;
printfC%12d\fib[i]);
if((i+l)%5==0)printfC\n"
);
6.编程:
输入n个(l<
=10)float型的数据并保存到数组中,用冒泡法或选择法将它们从大到小排序后
输出。
Input5number:
8.52.35.11.44.9
Aftersorted:
8.505.104.902.301.40
inti,j,n;
floata[10]tt;
printf(wInputn:
scanf("
%d"
&
辻(n>
l&
Input%dnumber:
n);
for(i=0;
i<
i++)
scanf
printf("
Beforesorted:
'
);
/*输出排序前的数据*/
printf(n%.2f\a[i]);
printf(B\n"
n-l;
i++)/*冒泡排序*/
for(j=0;
j<
n-i-l;
j++)
if(a[j]<
a[j+l])
t=a[j];
a[j]=a[j+l];
a[j+l]=t;
/*输出排序结果*/
printf(*%.2fa[i]);
printf(B\nw):
printfC数据超出围J;
7.在上题基础上(输入n个float型的数据并保存到数组中,用冒泡法或选择法将它们从大到小排序后输出)完成:
在已经排好序的数组(长度不足10)中插入一个数m(键盘输入)后输出,保持数组的降序排列。
程序分析:
首先判断此数長否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。
inti,j,ntp;
floata[10]tt,m;
printf(ffInputn:
scanf&
if(n>
i卄)
scanf(ff%f&
"
printfC%.2f"
a[i]);
\nw);
i++)/*冒泡排序*/
for(j=0;
a[j]=a[j+ll;
printf(ff%.2f"
printfC\n"
/*输出排序结果权
printfC请输入要插入的数据血•);
scanf("
%f\&
m);
/車如果in比最后一个元素小,则直接插入到最后的位置M
P=n;
i++)if(m>
a[i]){
P=i;
bre且k;
for(i=n;
i>
=p+l;
i—)a[i]=a[i-l];
}
/*否则.插入到中间的某个位置*/
/字将插入位置之后的元素后移韋/
/*插入权
a[p]=m;
printfC插入%・2fJff:
\m);
n+l;
i++)printf(n%.2f\a[i]);
printf(■\nw);
/*输出插入后结果柠
二.二维数组实验
1.以下程序功能为:
将下列矩阵中的元素向右移动一列,最后一列移至第一列。
找出并改正以下源程序中错误,通过调试得出正确的运行结果。
146
81012
源程序(有错误的程序)
^include<
#defineROW2
ttdefineCOL3
intmain()
inta[R0W][COL]={1,4,6.8.10,12};
intitj,temp;
R0W;
temp=a[i][COL-1];
for(j=C0L-2;
j>
=0;
j—)
a[i][j]=a[i][j+1];
/水调试时设置断点*/〃改为a[i][j+l]=a[i][j];
a[i][0]=temp;
/*调试时设置断点*/
for(inti二0;
ROW:
i++)//去掉int
j<
COL;
j++)
%6d"
a[i][j]);
printf('
An11);
return0;
运行结果(改正后程序的运行结果)
6
1
4
12
8
10
利用二维数组计算并打印一个n行的辉三角。
Input
n:
6
2
3
41
105
提示:
第一列及对角线上的元素都是1,其他元素通过计算得出:
如果用i表示行,j表示列,则第i行j列的元素]人身=几-1.尸]+Pij
inta[10][10]={0};
〃设最多10层
inti9j,n;
printf(w请输入辉三角形的层数:
w);
10)
printfC层数超出围"
return;
i++)//给笫0列和主对角线上的元素赋值1
a[i][0]=1;
a[i][i]=l;
for(i=2;
i++)〃计算其他位置元素的值
for(j=l;
i;
a[i][j]=a[i-l][j-l]+a[i-l][j];
i++)〃输出
for(j=0;
=i;
J++)
printf(”%4d・,a[i][j]);
\n"
通过键盘输入3行4列的二维数组,分别按行和按列输出数组。
Inputnumner:
1234
5678
910110
outputbyrow:
12345678910110
outputbycol:
15926103711480
voidmainO
inta[3][4],i,j;
请输入3X4整数矩阵八n"
3;
4;
j++)scanf(n%dw,&
a[i][j]);
printf(*按行输出:
・);
i++)for(j=0;
pr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 数组 参考答案
![提示](https://static.bdocx.com/images/bang_tan.gif)