C语言程序设计实验报告
实验5 使用数组的程序设计
班级 2013156 学号 201315613 姓名 吴浩
一、实验目的
(1)掌握一维数组和二维数组的定义、赋值和输入输出方法。
(2)掌握字符数组的使用。
(3)掌握与数组有关的算法。
二、实验内容及步骤
1、 检验并打印幻方矩阵
在下面的5*5阶幻方矩阵中,每一行、每一列、每一对角线上的元素之和都是相等的,试编写程序将这些幻方矩阵中的元素读到一个二维整型数组中,然后检验其是否为幻方矩阵,并将其按如下格式显示到屏幕上。
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
程序代码:
#include
int main()
{
int a[5][5]={0};//初始化
int i,j,m,n,temp;
i=0;
j=5/2;
a[i][j]=1;//第一行中间填1
for(temp=2;temp<=5*5;temp++)//循环24次,填剩余的24个数
{
m=i;
n=j;
i--;
j++;
if(i<0)
i=5-1;
if(j>5-1)
j=0;
if(a[i][j]!=0)
{i=m+1;
j=n;}
a[i][j]=temp;
}
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
printf("%4d",a[i][j]);
printf("
");
}
return 0;
}
2、完成以下程序,并进行调试
某班期末考试科目为数学、英语和计算机,有最多不超过30人参加考试,考试后要求:
1)计算每个学生的总分和平均分;
2)按总分成绩由高到低排出成绩的名次;
3)打印出名次表,表格内包括学生学号、各科分数、总分和平均分;
4)任意输入一个学号,能够查找出该学生在班级中的排名及其考试分数。
【提示】:用二维数组score存放每个学生各门课程的成绩,用一维数组num存放每个学生的学号,用一维数组sum存放每个学生的总分,用一维数组aver存放每个学生的平均分。
程序代码:
#include
main()
{int num[5],i,j,k,c,e;
float score[5][3],sum[5]={0},aver[5],t,a1,a2,a3,b;
printf("请按从小到大学号输入各个同学的数学、英语和计算机的成绩:
");
for(i=0;i<5;i++)
num[i]=i+1;
for(i=0;i<5;i++)
{printf("学号%d:",num[i]);
for(j=0;j<3;j++)
{scanf("%f",&score[i][j]);}}
for(i=0;i<5;i++)
for(j=0;j<3;j++)
{sum[i]=score[i][j]+sum[i];}
printf("
");
for(i=0;i<5;i++)
printf("学号为%d的总分:%.2f
",num[i],sum[i]);
printf("
");
for(i=0;i<5;i++)
{aver[i]=sum[i]/3;
printf("学号为%d的平均分:%.2f
",num[i],aver[i]);}
printf("
");
for(i=0;i<5;i++)
{ for(k=0;k<5;k++)
if(sum[i]>sum[k])
{t=sum[i];
sum[i]=sum[k];
sum[k]=t;
c=num[i];
num[i]=num[k];
num[k]=c;
a1=score[i][0];
score[i][0]=score[k][0];
score[k][0]=a1;
a2=score[i][1];
score[i][1]=score[k][1];
score[k][1]=a2;
a3=score[i][2];
score[i][2]=score[k][2];
score[k][2]=a3;
b=aver[i];
aver[i]=aver[k];
aver[k]=b;}}
printf("名次 学号 数学 英语 计算机 总分 平均分
");
for(i=0;i<5;i++)
printf("%d%9d%10.2f%10.2f%10.1f%10.1f%9.1f
",i+1,num[i],score[i][0],score[i][1],score[i][2],sum[i],aver[i]);
printf("
");
p