淮海工学院计算机科学系实验报告书
课程名:《C语言程序设计A 》
题目:实验6 数组——二维数组
和字符数组
班级:软嵌151
学号:2015123349
姓名:陈正宁
1、实验内容或题目
(1)设某班有4门课程(语文、数学、英语,程序设计)的成绩。先输入学生人数,然后按学号从小到大的顺序依次输入学生成绩。编写一个程序实现统计每门课程全班的总成绩、平均成绩和最高分,以及每个学生的总成绩和平均成绩,并按总分从高到低顺序输出学生的学号、各门课程成绩及总成绩。
(2)从键盘输入10个字符串,由小到大输出。
(3)教材169页的第7和第8题。
(4)编写一个程序,将两个字符串合并成一个字符串。(不允许使用strcat函数)2、实验目的与要求
(1)掌握二维数组的定义和输入输出的方法。
(2)掌握与数组有关的算法,如排序、查找。
(3)掌握字符数组和字符串处理函数的使用。
3、实验步骤与源程序
⑴实验步骤
⑵源代码
(1)、
#include
int main()
#define N 50
{
int score[N][6],total[4];
double savg[N],cavg[4];
int i,j,s,n,t;
printf("请输入学生的个数:");
scanf("%d",&n);
for(i=0;i { printf("请输入第%d学生的学号:",i+1); scanf("%d",&score[i][0]); printf("请分别输入此学生的语文,数学,英语,计算机的分数:"); scanf("%d %d %d %d",&score[i][1],&score[i][2],&score[i][3],&score[i][4]); for(i=0;i { score[i][5]=score[i][1]+score[i][2]+score[i][3]+score[i][4]; savg[i]=(double)score[i][5]/4; } for(i=0;i { for(j=0;j { if(score[j][5] { for(s=0;s<6;s++) { t=score[j][s]; score[j][s]=score[j+1][s]; score[j+1][s]=t; } } } } for(i=0;i<4;i++) { total[i]=0; for(j=0;j { total[i]=total[i]+score[j][i+1]; } cavg[i]=(double)total[i]/n; } printf("计算结果如下:\n"); printf("编号\t学号\t语文\t数学\t英语\t体育\t总分\t均分\n"); for(i=0;i { printf("第%d名:",i+1); for(j=0;j<6;j++) { printf("\t%d",score[i][j]); } printf("\t%3.1lf\n",savg[i]); } printf("总分:"); printf("\t"); for(i=0;i<4;i++) { printf("\t%d",total[i]); printf("\n均分:"); printf("\t"); for(i=0;i<4;i++) { printf("\t%3.1lf",cavg[i]); } return 0; } (2)、 #include #include void main() { char s[10][20],t[20]; int i, j; for(i=0;i<10;i++) { printf("请输入第%2d个字符串:",i+1); gets(s[i]); } printf("\n"); for(j=0;j<20;j++) for(i=0;i<20-i;i++) if(strcmp(s[i],s[i+1])>0) { strcpy(t, s[i]); strcpy(s[i],s[i+1]); strcpy(s[i+1], t); } printf("输入的10个字符串,由小到大排序依次为:\n"); for(i=0;i<10;i++) puts(s[i]); } (3)、 #include void mofangzhen(int m) { int a[100][100]; int b, x, y; for(x=0;x { for(y=0;y a[x][y]=0; } x=0; y=(m-1)/2; a[x][y]=1; for(b=2;b<=m*m;b++) { if(x-1<0) x=(x-1+m)%m; else x=x-1; if(y-1<0) y=(y-1+m)%m; else y=y-1; if(a[x][y]!=0) { x=(x+2)%m; y=(y+1)%m; } a[x][y]=b; } for(x=0;x { for(y=0;y printf("%4d", a[x][y]); printf("\n"); } } void main() { int m; while(m%2!=1) { printf("请输入矩阵阶数m(奇数):\n"); scanf("%d", &m); if(m%2!=1) printf("m输入错误!\n"); } mofangzhen(m); } (4)、 #include #define MAX 100 void main() { int a[MAX][MAX],m,n,i,j,max,maxj,flag,k; printf("请输入行数列数(以空格分隔)[m n Enter]:"); scanf("%d%d",&m,&n); printf("请输入%d个数:\n",m*n); for(i=0;i for(j=0;j scanf("%d",&a[i][j]); printf("整理:\n"); for(i=0;i { for(j=0;j printf("%5d",a[i][j]); printf("\n"); } for(i=0;i { max=a[i][0]; maxj=0; for(j=0;j if(a[i][j]>max) { max=a[i][j]; maxj=j; } flag=1; for(k=0;k if(max>a[k][maxj]) { flag=0; break; } if(flag) printf("数组有鞍点:a[%d][%d]=%d\n",i+1,maxj+1,max); break; } if(!flag) printf("数组没有鞍点\n"); } (5)、 #include int main() { char a[30]; char b[10]; int i,j; printf("请输入字符串1:"); gets(a); printf("请输入字符串2:"); gets(b); for(i=0;i<30;i++) { if(a[i]=='\0') break; } for(j=0;j<10;j++) { a[i]=b[j]; i++; } puts(a); return 0; } 4、测试数据与实验结果(可以抓图粘贴) (2)、 5、结果分析与实验体会 1.二维数组常称为矩阵。把二维数组写成行和列的排列形式,可以有助于形象化 地理解二维数组的逻辑结构。 2.C系统在用字符数组存储字符串常量时会自动加一个’\0’作为结束符。 3.要记得专门处理字符串的函数,如:puts,gets等,要熟悉它们的用法。