实验4使用数组的程序设计

  • 格式:doc
  • 大小:135.00 KB
  • 文档页数:5

下载文档原格式

  / 5
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言程序设计实验报告

实验4 使用数组的程序设计

一、实验目的

(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

main()

{

int a[5][5],i,j,sr,sc,st1=0,p=0,st2=0;

printf("请输入一个方阵:\n");

for(i=0;i<5;i++)

{for(j=0;j<5;j++)

scanf("%d",&a[i][j]);

}

for(i=0;i<5;i++)

{st1=st1+a[i][i];//主对角线的和

st2=st2+a[i][4-i];}//次对角线的和

if(st1==st2)

p++;

for(i=0,sr=0;i<5;i++)

{for(j=0,sc=0;j<5;j++)

{sr=sr+a[i][j];//行的和

if(sr!=st1)break;

sc=sc+a[j][i];//列的和

if(sc!=st1)break;}

}

if(p==1&&i==5)

{printf("这是一个幻方矩阵\n");

for(i=0;i<5;i++)

{for(j=0;j<5;j++)

printf("%d\t",a[i][j]);

printf("\n");

}}

else

printf("这不是一个幻方矩阵\n");

}

运行结果

2、完成以下程序,并进行调试

某班期末考试科目为数学、英语和计算机,有最多不超过30人参加考试,考试后要求:1)计算每个学生的总分和平均分;

2)按总分成绩由高到低排出成绩的名次;

3)打印出名次表,表格内包括学生学号、各科分数、总分和平均分;

4)任意输入一个学号,能够查找出该学生在班级中的排名及其考试分数。

【提示】:用二维数组score存放每个学生各门课程的成绩,用一维数组num存放每个学生的学号,用一维数组sum存放每个学生的总分,用一维数组aver存放每个学生的平均分。

程序代码:

#include

main()

{

double score[5][3],sum[5],aver[5];

int i,j,num[5],t;

printf("请输入每位同学的学号和各科成绩,用Tab键隔开:\n");

printf("学号\t数学\t英语\t计算机\n");

for(i=0;i<5;i++)

{

scanf("%d",&num[i]);

for(j=0;j<3;j++)

scanf("%lf",&score[i][j]);

}

for(i=0;i<5;i++)

{ sum[i]=0;

for(j=0;j<3;j++)

{sum[i]=sum[i]+score[i][j];}

aver[i]=sum[i]/3.0;

}

for(i=0;i<5;i++)

{if (sum[i]

{t=sum[i];sum[i]=sum[i+1];sum[i+1]=t;

t=num[i];num[i]=num[i+1];num[i+1]=t;

t=aver[i];aver[i]=aver[i+1];aver[i+1]=t;

for(j=0;j<3;j++)

{t=score[i][j];score[i][j]=score[i+1][j];score[i+1][j]=t;} }

}

printf("名次\t学号\t数学\t英语\t计算机\t总分\t平均分\n");

for(i=0;i<5;i++)

{printf("%d\t%d\t",i+1,num[i]);

for(j=0;j<3;j++)

printf("%.1lf\t",score[i][j]);

printf("%.1lf\t",sum[i]);

printf("%.1lf\n",aver[i]);

}

printf("请输入要查找的同学的学号:");

scanf("%d",&t);

printf("名次\t学号\t数学\t英语\t计算机\t总分\t平均分\n");

for(i=0;i<5;i++)

{

if(t==num[i])

{

printf("%d\t%d\t",i+1,t);

for(j=0;j<3;j++)

printf("%.1lf\t",score[i][j]);

printf("%.1lf\t%.1lf\n",sum[i],aver[i]);

}

}

}

运行结果: