C语言 实验七 数组
一、实验目的
1.掌握一维数组和二维数组的定义,数组元素的引用形式和数组的输入输出方
法。
2.了解与数组有关的算法(如插入、排序、查找等)。
二、实验学时
4 学时
三、实验内容
1.从键盘输入十个学生的成绩,输出平均成绩以及高于平均成绩的学生人数。
2.某数列前两项为 2 和 3,其后每项为前两项之和,求此数列的前 10 个数并输出
显示。
3.输出 Fibonacci 数列前 60 项,要求每行输出 6 个数。如 1, 1,2,3,5,8,13……
4.任意输入 10 个整数,要求从大到小降序排列并输出,编写排序函数 int sort(int
x[],int n)。
5.从键盘输入一个 4×4 的整数矩阵,输出主对角线(\)元素之和。
6.请阅读以下程序并填空使得运行有如下的结果:
1 2 3 4 5 6
1 1 2 3 4 5
1 2 1 2 3 4
1 3 3 1 2 3
1 4 6 4 1 2
1 5 10 10 5 1
#include<stdio.h>
int main()
{ int a[6][6],i,j;
for(i=0;i<6;i++)
{for(j=0;j<6;j++)
{if (① ) a[i][j]=1;
else if(i<j) a[i][j]= ② ;
else a[i][j]= ③ ;
printf(“%4d”,a[i][j]);
}
printf(“\n”);
}
return 0;
}
7.从键盘上输入一个 4×4 整数矩阵,以主对角线为对称轴,将左下角元素中较
大元素替代右上角对应元素,并将右上角元素(含对角线元素)输出。
#include<stdio.h>
main()
{
int i,j=0;
float a[10],s,aver;
printf("输入十个学生的成绩:");
for(i=0;i<10;i++)
{
scanf("%f",&a[i]);
s+=a[i];
}
aver=s/10;
for(i=0;i<10;i++)
if(a[i]>aver)
j++;
printf("平均成绩=%f\n高于平均值的学生=%d",aver,j);
}
#include<stdio.h>
main()
{
int a[10]={2,3},i;
for(i=0;i<10;i++)
{
if(i>1)
a[i]=a[i-2]+a[i-1];
printf("%d\n",a[i]);
}
}
#include<stdio.h>
main()
{
long long Fib[60]={1,1},i,j;
for(i=0;i<60;i++)
{
if(i>1)
Fib[i]=Fib[i-2]+Fib[i-1];
printf("%Id,",Fib[i]);
if((i-5)%6==0)
printf("\n");
}
}
①冒泡排序法
#include <stdio.h>
int sort(int x[],int n)
{
int i,j,s;
for(i=1;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)
if(x[j]>x[j+1])
s=x[j],x[j]=x[j+1],x[j+1]=s;
}
for(j=0;j<n;j++)
printf("%d,",x[j]);
}
int main()
{
int x[10],i;
printf("请输入十个整数:");
for(i=0;i<10;i++)
scanf("%d",&x[i]);
sort(x,10);
}
②选择排序法
#include <stdio.h>
int sort(int x[],int n)
{
int i,j,s,max;
for(i=0;i<n-1;i++)
{
max=i;
for(j=i+1;j<n;j++)
if(x[j]>x[max])
max=j;
if(max!=i)
s=x[max],x[max]=x[i],x[i]=s;
}
for(j=0;j<n;j++)
printf("%d,",x[j]);
}
int main()
{
int x[10],i;
printf("请输入十个整数:");
for(i=0;i<10;i++)
scanf("%d",&x[i]);
sort(x,10);
}
③交换排序法
#include <stdio.h>
int sort(int x[],int n)
{
int i,j,s;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
if(x[i]>x[j])
s=x[i],x[i]=x[j],x[j]=s;
}
for(j=0;j<n;j++)
printf("%d,",x[j]);
}
int main()
{
int x[10],i;
printf("请输入十个整数:");
for(i=0;i<10;i++)
scanf("%d",&x[i]);
sort(x,10);
}
④插入排序法
#include <stdio.h>
int sort(int x[],int n)
{
int i,j,s;
for(i=1;i<n;i++)
{
int m=x[i],j=i-1;
while(j>=0&&x[j]>m)
x[j+1]=x[j], j--;
x[j+1]=m;
}
for(j=0;j<n;j++)
printf("%d,",x[j]);
}
int main()
{
int x[10],i;
printf("请输入十个整数:");
for(i=0;i<10;i++)
scanf("%d",&x[i]);
sort(x,10);
}
#include <stdio.h>
int main()
{
int x[4][4],i,j,s=0;
printf("请输入一个 4×4 的整数矩阵:");
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
scanf("%d",&x[i][j]);
printf("%4d ",x[i][j]);
if(i==j)
s+=x[i][j];
}
printf("\n");
}
printf("主对角线元素之和=%d",s);
}
#include<stdio.h>
int main()
{
int a[6][6],i,j;
for(i=0;i<6;i++)
{
for(j=0;j<6;j++)
{
if (j==0||i==j)
a[i][j]=1;
else if(i<j)
a[i][j]=j-i+1;
else a[i][j]=a[i-1][j-1]+a[i-1][j];
printf("%4d",a[i][j]);
}
printf("\n");
}
return 0;
}
#include <stdio.h>
int main()
{
int x[4][4],i,j,s;
printf("请输入一个 4×4 的整数矩阵:");
//存入整数和输出交换元素之前的整型矩阵
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
scanf("%d",&x[i][j]);
printf("%-4d ",x[i][j]);
}
printf("\n");
}
printf("\n");
//交换元素
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
if(x[i][j]>x[j][i])
s=x[i][j],x[i][j]=x[j][i],x[j][i]=s;
}
}
//输出交换元素后的整形矩阵
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
printf("%-4d ",x[i][j]);
}
printf("\n");
}
printf("\n");
//输出右上角元素
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
if(i<=j)
printf("%-4d ",x[i][j]);
}
printf("\n");
}
}