实验四数组二.docx

上传人:b****5 文档编号:3139984 上传时间:2022-11-17 格式:DOCX 页数:15 大小:1.13MB
下载 相关 举报
实验四数组二.docx_第1页
第1页 / 共15页
实验四数组二.docx_第2页
第2页 / 共15页
实验四数组二.docx_第3页
第3页 / 共15页
实验四数组二.docx_第4页
第4页 / 共15页
实验四数组二.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

实验四数组二.docx

《实验四数组二.docx》由会员分享,可在线阅读,更多相关《实验四数组二.docx(15页珍藏版)》请在冰豆网上搜索。

实验四数组二.docx

实验四数组二

实验四数组

(二)

一、实验目的

1.掌握一维字符数组的定义及初始化。

2.掌握一维字符数组元素的引用及其应用。

3.掌握二维数组的定义和初始化。

4.掌握二维数组元素的引用及其应用。

二、实验内容

题目1:

输入十个人的姓名,并按升序输出。

(用选择法或者冒泡法排序)

●问题

Strcpy函数是完全将后一个代替前一个么?

●源代码

 

#include

#include

intmain()

{

chara[10][80],x[80];

inti,j;

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

gets(a[i]);

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

for(j=i+1;j<10;j++)

if(strcmp(a[i],a[j])>0)

{

strcpy(x,a[j]);

strcpy(a[j],a[i]);

strcpy(a[i],x);

}

for(i=0;i<10;i++)printf("\n%s",a[i]);

return0;

}

 

●程序流程图

●实验结果

题目2:

求两个矩阵的积。

如:

运算规则为:

第i行第j列相乘得到结果矩阵中r[i][j]的值。

比如:

r[0][0]=1*1+2*5+3*8=35;

r[0][1]=1*5+2*3+3*1=14;

r[1][0]=4*1+5*5+6*8=77;

r[1][1]=4*5+5*3+6*1=41;

要求:

1.数组的行数和列数不超过100。

2.输入第一行中,第一个正整数m,表示第一个矩阵的行数,输入第二个正整数n,表示第一个矩阵的列数,也即是第二个矩阵的行数,输入第三个正整数p,表示第二个矩阵的列数。

3.接下来的m*n个数是第一个矩阵中的数。

4.再接下来的n*p个数是第二个矩阵中的数。

5.输出计算结果,为一个m行,p列的矩阵。

●问题

●源代码

#include

intmain()

{

inta[100][100]={0};

intb[100][100]={0};

intc[100][100]={0};

inti=0,j=0,k=0;

intn=0;

intx=0,y=0,z=0;

printf("请输入矩阵a的行数:

");

scanf("%d",&x);

printf("请输入矩阵a的列数:

");

scanf("%d",&y);

printf("请输入矩阵a,元素之间用Tab隔开:

\n");

for(i=0;i

{

for(j=0;j

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

printf("\n");

}

printf("请输入矩阵b的行数:

");

scanf("%d",&y);

printf("请输入矩阵b的列数:

");

scanf("%d",&z);

printf("请输入矩阵b,元素之间用Tab隔开:

\n");

for(i=0;i

{

for(j=0;j

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

printf("\n");

}

//jisuan

for(i=0;i

for(j=0;j

for(k=0;k

c[i][j]+=a[i][k]*b[k][j];

//output

for(i=0;i

{

for(j=0;j

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

printf("\n");

}

return0;

}

●程序流程图【必须有】

●实验结果

题目3:

求矩阵的鞍点。

鞍点位置上的元素在该行中值最大,在该列中值最小。

如下面矩阵的鞍点为35。

【输入】前两个数为行数和列数,其后是矩阵中的元素

【输出】如果没有鞍点,输出NO;如果有输出格式为:

[值1,行下标1,列下标1],[值2,行下标2,列下标2]……

●问题

下标的输出转换。

●源代码

#include

intmain()

{

inta[100][100];

intm,n,i,j,sign;

printf("inputmandn:

\n");

scanf("%d%d",&m,&n);

printf("请输入这个矩阵\n");

for(i=0;i

for(j=0;j

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

for(i=0;i

{

for(sign=0,j=1;j

if(a[i][sign]

sign=j;

for(j=0;j

if(a[i][sign]>a[j][sign])

break;

if(j>=m)

printf("鞍点是:

%d\n",a[i][sign]);

}

return0;

}

●程序流程图【必须有】

●实验结果

题目4:

井字格游戏

本题目可替代题目1~3作为实验内容。

程序大致的执行过程如图所示:

功能包括:

1.允许两个玩家下棋

2.允许玩家输入下棋的坐标

3.显示当前棋盘状态

4.判断玩家是否下错位置,即在已经下过棋的位置再次下棋

5.判断玩家下棋后,输赢状态

6.在屏幕提示中指导玩家交替下棋

●源代码

#include

#include

intc,i,j,kongzhi=1,i=1;

intbasic[3][3]={0,0,0,0,0,0,0,0,0};

inttasic[3][3]={0,0,0,0,0,0,0,0,0};

charT[3][3];

intprinterA(intsite1,intsite2){

if(tasic[site1][site2]==0&&basic[site1][site2]==0){

basic[site1][site2]=1;

T[site1][site2]='X';

for(i=0;i<3;i++){

printf("-------\n");

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

printf("|");

printf("%c",T[i][j]);

}

printf("|\n");

if(i==2){

printf("-------\n");

}

}

return0;

}

else

return99;

}

intprinterB(intsite1,intsite2){

if(tasic[site1][site2]==0&&basic[site1][site2]==0){

tasic[site1][site2]=-1;

T[site1][site2]='O';

for(i=0;i<3;i++){

printf("-------\n");

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

printf("|");

printf("%c",T[i][j]);

}

printf("|\n");

if(i==2){

printf("-------\n");

}

}

return0;

}

else

return-99;

}

intmain(){

intm,n,a,b;

while(kongzhi==1){

do{

a=0;

printf("请A下子:

");

scanf("%d%d",&m,&n);

system("cls");

a=printerA(m,n);

if(a==99)

printf("对不起,您下错位置了!

\n");

}

while(a==99);

if((basic[0][0]+basic[0][1]+basic[0][2]==3)||(basic[1][0]+basic[1][1]+basic[1][2]==3)||(basic[2][0]+basic[2][1]+basic[2][2]==3)||(basic[0][0]+basic[1][1]+basic[2][2]==3)||(basic[0][2]+basic[1][1]+basic[2][0]==3))

{

printf("A赢了!

\n");

return0;

}

do{

b=0;

printf("请B下子:

");

scanf("%d%d",&m,&n);

system("cls");

b=printerB(m,n);

if(b==-99)

printf("对不起,您下错位置了!

\n");

}

while(b==-99);

if((tasic[0][0]+tasic[0][1]+tasic[0][2]==-3)||(tasic[1][0]+tasic[1][1]+tasic[1][2]==-3)||(tasic[2][0]+tasic[2][1]+tasic[2][2]==-3)||(tasic[0][0]+tasic[1][1]+tasic[2][2]==-3)||(tasic[0][2]+tasic[1][1]+tasic[2][0]==-3))

{

printf("B赢了!

\n");

return0;

}

i++;

if(i==9){

printf("平局!

");

return0;

}

}

}

●程序流程图【必须有】

●实验结果

2.2.实验心得体会

●本次实验的收获是什么

了解strcpy函数和strcmp函数。

二维数组的赋值与输入输出。

●遇到了哪些问题,如何解决的

1.矩阵相乘;解决,找到行与列还有两个矩阵中列和行相等的关系

2.Strcpy函数若前一个字符串长后一个短,执行完后前一个字符串并不为后一个字符串,即\0后还有字符。

三、实验要求

1.利用F10进行循环结构的单步跟踪练习

2.实验报告内容

2.1.实验内容及结果

●问题

●源代码

●程序流程图【必须有】

●实验结果

2.2.实验心得体会

●本次实验的收获是什么

●遇到了哪些问题,如何解决的

3.报告命名

学号_班级_姓名_日期.docx

如:

2013011296_软工1301_白雪_20141205.docx

4.报告上传邮箱

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1