文档库 最新最全的文档下载
当前位置:文档库 › 实验6 数组—二维数组和字符数组

实验6 数组—二维数组和字符数组

淮海工学院计算机科学系实验报告书

课程名:《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等,要熟悉它们的用法。

相关文档