实验6 数组参考答案Word格式文档下载.docx
- 文档编号:7139940
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:26
- 大小:23.19KB
实验6 数组参考答案Word格式文档下载.docx
《实验6 数组参考答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《实验6 数组参考答案Word格式文档下载.docx(26页珍藏版)》请在冰点文库上搜索。
3.编程:
输入n个(1<
n<
=10)正整数并保存到数组中,求出最大值、最小值、平均值,以及最大值、最小值在数组中的下标分别是多少。
Inputn:
5
Input5integer:
82514
max=8index=0
min=1index=3
average=4
#include<
inti,n,max,min,a[10],sum;
floataverage;
Inputn(1<
=10):
n);
if(1<
n&
&
n<
=10)
{
printf("
Input%dinteger:
"
n);
/*输入数据并求累加和*/
for(i=0,sum=0;
n;
{
scanf("
sum+=a[i];
}
average=(float)sum/n;
/*求出平均值*/
for(i=0,max=0,min=0;
i++)/*求最大、最小值的下标*/
if(a[i]>
a[max])
max=i;
if(a[i]<
a[min])
min=i;
max=%-5dindex=%d\n"
a[max],max);
min=%-5dindex=%d\n"
a[min],min);
average=%.2f\n"
average);
else
数据超出范围"
4.编程:
青年歌手参加歌曲大奖赛,有10个评委对她(他)进行打分,试编程求这位选手的平均得分并输出(去掉一个最高分和一个最低分)。
inti,max,min;
floata[10],ave;
请输入10个评委的打分:
for(i=0,ave=0;
i++)/*输入分数并求累加和*/
scanf("
%f"
ave+=a[i];
for(i=0,max=0,min=0;
if(a[i]>
a[max])
max=i;
if(a[i]<
a[min])
min=i;
ave=ave-a[max]-a[min];
ave=ave/8;
该选手的评委打分是:
for(i=0;
i++)
%.2f"
printf("
去掉最高分%.2f,去掉最低分%.2f,该选手的平均得分是%.2f\n"
a[max],a[min],ave);
5.编程:
用两种方法输出斐波那切数列的前40项(参考例6-4)。
要求:
(1)方法1:
不使用数组;
intf1=1,f2=1,f3,i;
%12d%12d"
f1,f2);
for(i=3;
=40;
f3=f1+f2;
%12d"
f3);
if(i%5==0)
printf("
f1=f2;
f2=f3;
(2)方法2:
使用一维数组。
inti;
intfib[40];
fib[0]=fib[1]=1;
for(i=2;
40;
i++)/*计算其余的38个数*/
fib[i]=fib[i-1]+fib[i-2];
fib[i]);
if((i+1)%5==0)
6.编程:
=10)float型的数据并保存到数组中,用冒泡法或选择法将它们从大到小排序后输出。
Input5number:
8.52.35.11.44.9
Aftersorted:
8.505.104.902.301.40
inti,j,n;
floata[10],t;
&
if(n>
1&
Input%dnumber:
for(i=0;
i<
i++)
Beforesorted:
/*输出排序前的数据*/
n-1;
i++)/*冒泡排序*/
for(j=0;
j<
n-i-1;
j++)
if(a[j]<
a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
/*输出排序结果*/
7.在上题基础上(输入n个float型的数据并保存到数组中,用冒泡法或选择法将它们从大到小排序后输出)完成:
在已经排好序的数组(长度不足10)中插入一个数m(键盘输入)后输出,保持数组的降序排列。
程序分析:
首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。
inti,j,n,p;
floata[10],t,m;
请输入要插入的数据m:
m);
/*找到插入位置*/
if(m<
a[n-1])/*如果m比最后一个元素小,则直接插入到最后的位置*/
p=n;
else
for(i=0;
i++)/*否则,插入到中间的某个位置*/
if(m>
a[i])
{
p=i;
break;
for(i=n;
i>
=p+1;
i--)/*将插入位置之后的元素后移*/
a[i]=a[i-1];
/*插入*/
a[p]=m;
插入%.2f后:
m);
/*输出插入后结果*/
n+1;
二、二维数组实验
1.以下程序功能为:
将下列矩阵中的元素向右移动一列,最后一列移至第一列。
找出并改正以下源程序中错误,通过调试得出正确的运行结果。
146
81012
源程序(有错误的程序)
#defineROW2
#defineCOL3
intmain()
inta[ROW][COL]={1,4,6,8,10,12};
inti,j,temp;
ROW;
{
temp=a[i][COL-1];
for(j=COL-2;
j>
=0;
j--)
a[i][j]=a[i][j+1];
/*调试时设置断点*///改为a[i][j+1]=a[i][j];
a[i][0]=temp;
/*调试时设置断点*/
}
for(inti=0;
i++)//去掉int
for(j=0;
j<
COL;
j++)
%6d"
a[i][j]);
return0;
运行结果(改正后程序的运行结果)
614
12810
利用二维数组计算并打印一个n行的杨辉三角。
6
1
11
121
1331
14641
14101051
提示:
第一列及对角线上的元素都是1,其他元素通过计算得出:
如果用i表示行,j表示列,则第i行j列的元素
inta[10][10]={0};
//设最多10层
请输入杨辉三角形的层数:
10)
层数超出范围"
return;
i++)//给第0列和主对角线上的元素赋值1
a[i][0]=1;
a[i][i]=1;
i++)//计算其他位置元素的值
for(j=1;
i;
a[i][j]=a[i-1][j-1]+a[i-1][j];
i++)//输出
for(j=0;
=i;
%4d"
通过键盘输入3行4列的二维数组,分别按行和按列输出数组。
Inputnumner:
1234
5678
910110
outputbyrow:
12345678910110
outputbycol:
15926103711480
inta[3][4],i,j;
请输入3X4整数矩阵:
3;
4;
a[i][j]);
按行输出:
按列输出:
a[j][i]);
输入一个m*n矩阵,求他们的各行元素之和。
Inputm,n:
22
Input2*2matrix:
45
56
sum[0]=9
sum[1]=11
设计一个一维数组ints[10],分别保存各行元素之和。
inta[10][10],s[10]={0};
//设定矩阵最大为10x10
intm,n,i,j;
请输入矩阵的行数和列数:
%d%d"
m,&
if(m<
0||m>
10||n<
0||n>
行或列(1~10)值超出范围"
请输入%d*%d矩阵:
m,n);
m;
//求各行之和并输出
s[i]+=a[i][j];
sun[%d]=%d\n"
i,s[i]);
判断一个二维数组是否存在鞍点,若存在,则输出鞍点及其行号和列号;
否则输出没有鞍点信息。
“鞍点”是指这样的元素:
它在本行是最大元素,而在本列是最小的元素。
45
56
i=0,j=1,saddlepoint:
找鞍点需要处理三件事情:
(1)找每行中最大值所在的列下标;
(2)判断该元素在本列上是否为最小;
(3)判断是否找到了鞍点,若找到,输出。
inta[10][10];
intm,n,i,j,col,flag=0;
//退出程序
col=0;
//找出第i行中的最大值所在列下标col
if(a[i][col]<
a[i][j])
col=j;
j++)//判断该元素在本列上是否为最小
if(a[i][col]>
a[j][col])
break;
if(j==m)
flag=1;
//有鞍点
i=%d,j=%d,saddlepoint:
%d\n"
i,col,a[i][col]);
if(flag==0)
Nosaddlepoint!
三、字符串实验
输入一个字符串,将其逆序输出。
源代码(有错误的程序)
string.h>
inti,j;
chars[80],result[80];
Enterastring:
gets(s);
for(i=strlen(s)-1,j=0;
i>
i--,j++)
result[j]=s[i];
result[j]='
\0'
;
//必须给字符串加上串结束标志
Thisisreversestring:
puts(result);
运行结果(改正后的程序)
Enterastring:
asdfg
Thisisthereversestring:
gfdsa
任意输一个字符串保存在一维字符数组中,求其长度(不用strlen函数)。
Inputastring:
aadfdg
length=6
字符串的有效长度就是有效字符的个数,即数组中第一个‘\0’前面的字符个数。
inti,len=0;
chars[80];
请输入字符串,以回车键结束:
gets(s);
s[i]!
='
len++;
字符串%s的长度为:
s,len);
任意输入两个字符串分别保存在一维字符数组中,把第二个字符串连接到第一个字符串末尾(不用strcat函数)。
Inputtwostring:
erty
afterstrcat:
asdfgerty
inti,j;
chars1[80],s2[80];
请输入字符串1以回车键结束:
gets(s1);
请输入字符串2以回车键结束:
gets(s2);
s1[i]!
i++);
/*定位第一个字符串的结束标志*/
s2[j]&
80;
i++,j++)/*将s2接到s1后*/
s1[i]=s2[j];
s1[i]='
两个串连接后:
%s\n"
s1);
从键盘读入两个字符串分别保存在一维字符数中,比较两个字符串大小(不用strcmp函数),输出较大的字符串。
chara[80],b[80];
gets(a);
gets(b);
//逐个比较直到两个字符不同或其中一个字符串结束
a[i]&
b[i];
if(a[i]!
=b[i])
break;
if(a[i]>
b[i])
第一个字符串%s大!
a);
elseif(a[i]==b[i])
两字符串相同!
第二个字符串%s大!
b);
任意输入一个字符串保存在一维字符数组中,判断里面数字字符的个数。
adg4521gadg4adg
number:
inti,n=0;
请输入一个字符串以回车键结束:
for(i=0;
s[i];
if(s[i]>
0'
&
s[i]<
9'
)
n++;
字符串中包含的数字个数为:
n);
从一个字符串中删除从某个特定字符开始的所有字符。
例如原字符串为"
abcdefg"
,特定字符为'
d'
,删除后的字符串为"
ab
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验6 数组参考答案 实验 数组 参考答案