实验四 数组(二)_第1页
实验四 数组(二)_第2页
实验四 数组(二)_第3页
实验四 数组(二)_第4页
实验四 数组(二)_第5页
已阅读5页,还剩13页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验四 数组(二)一、 实验目的1. 掌握一维字符数组的定义及初始化。2. 掌握一维字符数组元素的引用及其应用。3. 掌握二维数组的定义和初始化。4. 掌握二维数组元素的引用及其应用。二、 实验内容题目1:输入十个人的姓名,并按升序输出。(用选择法或者冒泡法排序)l 问题Strcpy函数是完全将后一个代替前一个么?l 源代码#include <stdio.h>#include <string.h>int main() char a1080,x80;int i,j;for(i=0;i<10;i+)gets(ai);for(i=0;i<9;i+)for(j=i+

2、1;j<10;j+)if(strcmp(ai,aj)>0)strcpy(x,aj);strcpy(aj,ai);strcpy(ai,x);for(i=0;i<10;i+)printf("n%s",ai);return 0;l 程序流程图l 实验结果题目2:求两个矩阵的积。如:运算规则为:第i行第j列相乘得到结果矩阵中rij的值。比如:r00 = 1*1+2*5+3*8=35;r01 = 1*5+2*3+3*1=14;r10 = 4*1+5*5+6*8=77;r11 = 4*5+5*3+6*1=41;要求:1.数组的行数和列数不超过100。2.输入第一行中,

3、第一个正整数m,表示第一个矩阵的行数,输入第二个正整数n,表示第一个矩阵的列数,也即是第二个矩阵的行数,输入第三个正整数p,表示第二个矩阵的列数。3.接下来的m*n个数是第一个矩阵中的数。4.再接下来的n*p个数是第二个矩阵中的数。5.输出计算结果,为一个m行,p列的矩阵。l 问题无l 源代码l# include<stdio.h>lint main()llint a100100 =0;lint b100100 = 0;lint c100100 = 0;lint i = 0,j = 0,k=0;lint n = 0;lint x=0,y=0,z=0;lprintf("请输入

4、矩阵a的行数:");lscanf("%d",&x);lprintf("请输入矩阵a的列数:");lscanf("%d",&y);lprintf("请输入矩阵a,元素之间用Tab隔开:n");lfor(i=0;i<x;i+)llfor(j=0;j<y;j+)lscanf("%d",&aij);lprintf("n");llprintf("请输入矩阵b的行数:");lscanf("%d",&am

5、p;y);lprintf("请输入矩阵b的列数:");lscanf("%d",&z);lprintf("请输入矩阵b,元素之间用Tab隔开:n");lfor(i=0;i<y;i+)llfor(j=0;j<z;j+)lscanf("%d",&bij);lprintf("n");l l/jisuanlfor(i=0;i<x;i+)lfor(j=0;j<z;j+)lfor(k=0;k<y;k+)lcij += aik*bkj;l/outputlfor(i

6、= 0;i < x;i+)llfor(j = 0;j < z;j+)lprintf("%dt",cij);lprintf("n");llreturn 0;ll 程序流程图【必须有】l 实验结果题目3:求矩阵的鞍点。鞍点位置上的元素在该行中值最大,在该列中值最小。如下面矩阵的鞍点为35。【输入】前两个数为行数和列数,其后是矩阵中的元素【输出】如果没有鞍点,输出NO;如果有输出格式为:值1,行下标1,列下标1, 值2,行下标2,列下标2l 问题下标的输出转换。l 源代码#include <stdio.h>int main()int a

7、100100;int m,n,i,j,sign;printf("input m and n:n");scanf("%d%d",&m,&n);printf("请输入这个矩阵n");for(i=0;i<m;i+)for(j=0;j<n;j+)scanf("%d",&aij);for(i=0;i<m;i+)for(sign=0,j=1;j<n;j+)if(aisign<aij)sign=j;for(j=0;j<m;j+)if(aisign>ajsign)b

8、reak;if(j>=m)printf("鞍点是:%dn",aisign);return 0;l 程序流程图【必须有】l 实验结果题目4:井字格游戏本题目可替代题目13作为实验内容。程序大致的执行过程如图所示:功能包括:1.允许两个玩家下棋2.允许玩家输入下棋的坐标3.显示当前棋盘状态4.判断玩家是否下错位置,即在已经下过棋的位置再次下棋5.判断玩家下棋后,输赢状态6.在屏幕提示中指导玩家交替下棋l 源代码#include<stdio.h>#include<stdlib.h>int c,i,j,kongzhi=1,i=1;int basic33

9、=0,0,0,0,0,0,0,0,0;int tasic33=0,0,0,0,0,0,0,0,0;char T33;int printerA(int site1,int site2)if(tasicsite1site2=0&&basicsite1site2=0)basicsite1site2=1;Tsite1site2='X'for(i=0;i<3;i+)printf("-n");for(j=0;j<3;j+)printf("|");printf("%c",Tij);printf("

10、;|n");if(i=2)printf("-n");return 0;else return 99;int printerB(int site1,int site2)if(tasicsite1site2=0&&basicsite1site2=0)tasicsite1site2=-1;Tsite1site2='O'for(i=0;i<3;i+)printf("-n");for(j=0;j<3;j+)printf("|");printf("%c",Tij);prin

11、tf("|n");if(i=2)printf("-n");return 0;elsereturn -99;int main()int m,n,a,b;while(kongzhi=1)doa=0;printf("请A下子:");scanf("%d%d",&m,&n);system("cls");a=printerA(m,n);if(a=99)printf("对不起,您下错位置了!n");while(a=99);if(basic00+basic01+basic02

12、=3)|(basic10+basic11+basic12=3)|(basic20+basic21+basic22=3)|(basic00+basic11+basic22=3)|(basic02+basic11+basic20=3)printf("A赢了!n");return 0; dob=0;printf("请B下子:");scanf("%d%d",&m,&n);system("cls");b=printerB(m,n);if(b=-99)printf("对不起,您下错位置了!n"

13、;);while(b=-99);if(tasic00+tasic01+tasic02=-3)|(tasic10+tasic11+tasic12=-3)|(tasic20+tasic21+tasic22=-3)|(tasic00+tasic11+tasic22=-3)|(tasic02+tasic11+tasic20=-3)printf("B赢了!n");return 0; i+;if(i=9)printf("平局!");return 0; l 程序流程图【必须有】l 实验结果 2.2.实验心得体会l 本次实验的收获是什么了解strcpy函数和strcmp函数。二维数组的赋值与输入输出。l 遇到了哪些问题,如何解决的1. 矩阵相乘;解决,找到行与列还有两个矩阵中列和行相等的关系2. Strcpy函数若前一个字符串长后一个短

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论