实验6-数组——参考答案
- 格式:doc
- 大小:101.00 KB
- 文档页数:16
. .
.
.页脚. 实验6 数组
一、一维数组实验
2. 编程:输入长度为10的整型数组并输出;然后将其逆序存放后再输出。例如:
#include
void main()
{
int i, j, a[10], t;
printf("Input 10 number: ");
for(i=0; i<10; i++) /*读入数据*/
scanf("%d", &a[i]);
printf("origin data: ");
for(i=0; i<10; i++) /*输出原始数据*/
printf("%d ", a[i]);
printf("\n");
for(i=0,j=9; i
{
t=a[i];
a[i]=a[j];
a[j]= t;
}
printf("After reversed: "); /*输出逆序存放后的数据*/
for(i=0; i<10; i++)
printf("%d ", a[i]);
printf("\n");
}
3. 编程:输入n个(1
.
.页脚.
#include
void main()
{
int i, n , max, min, a[10], sum;
float average;
printf("Input n (1
scanf("%d", &n);
if(1
{
printf("Input %d integer:", n); /*输入数据并求累加和*/
for(i=0, sum=0; i
{
scanf("%d", &a[i]);
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;
}
printf("max=%-5d index=%d\n", a[max], max);
printf("min=%-5d index=%d\n", a[min], min);
printf("average=%.2f\n", average);
}
else
printf("数据超出围");
}
4. 编程:青年歌手参加歌曲大奖赛,有10个评委对她(他)进行打分,试编程求这位选手的平均得分并输出(去掉一个最高分和一个最低分)。
#include
void main()
{
int i, max, min;
float a[10], ave;
printf("请输入10个评委的打分:");
for(i=0, ave=0; i<10; i++) /*输入分数并求累加和*/ . . .
.页脚. {
scanf("%f", &a[i]);
ave+=a[i];
}
for(i=0, max=0 , min=0; i<10; i++) /*求最大、最小值的下标*/
{
if(a[i]>a[max])
max=i;
if(a[i]
min=i;
}
ave=ave-a[max]-a[min];
ave=ave/8;
printf("该选手的评委打分是:");
for(i=0; i<10; i++)
printf("%.2f ", a[i]);
printf("\n");
printf("去掉最高分%.2f,去掉最低分%.2f,该选手的平均得分是%.2f\n", a[max], a[min], ave);
}
5. 编程:用两种方法输出斐波那切数列的前40项(参考例6-4)。
要求: (1)方法1:不使用数组;
#include
void main()
{
int f1=1, f2=1, f3, i;
printf("%12d%12d", f1, f2);
for(i=3; i<=40; i++)
{
f3=f1+f2;
printf("%12d", f3);
if(i%5==0)
printf("\n");
f1= f2;
f2= f3;
}
}
(2)方法2:使用一维数组。 . .
.
.页脚. #include
void main()
{
int i;
int fib[40];
fib[0]=fib[1]=1;
for(i=2; i<40; i++) /*计算其余的38个数*/
fib[i]= fib[i-1] + fib[i-2];
for(i=0; i<40; i++)
{
printf("%12d",fib[i]);
if((i+1)%5==0)
printf("\n");
}
}
6. 编程:输入n个(1
#include
void main()
{
int i, j, n;
float a[10], t;
printf("Input n: ");
scanf("%d",&n);
if(n>1 && n<=10)
{
printf("Input %d number:", n);
for(i=0;i
scanf("%f",&a[i]);
printf("Before sorted:"); /*输出排序前的数据*/
for(i=0; i
printf("%.2f ", a[i]);
printf("\n");
for(i=0; i
.页脚. for(j=0; j
if( a[j] < a[j+1] )
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
printf("After sorted:"); /*输出排序结果*/
for(i=0; i
printf("%.2f ", a[i]);
printf("\n");
}
else
printf("数据超出围");
}
7. 在上题基础上(输入n个float型的数据并保存到数组中,用冒泡法或选择法将它们从大到小排序后输出)完成:在已经排好序的数组(长度不足10)中插入一个数m(键盘输入)后输出,保持数组的降序排列。
程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。
#include
void main()
{
int i, j, n, p;
float a[10], t, m;
printf("Input n: ");
scanf("%d", &n);
if(n>1 && n<=10)
{
printf("Input %d number:", n);
for(i=0; i
scanf("%f", &a[i]);
printf("Before sorted: "); /*输出排序前的数据*/
for(i=0; i
printf("%.2f ", a[i]);
printf("\n");
for(i=0; i
for(j=0; j
if( a[j] < a[j+1] )
{