《C语言》课内实验报告(实验四)

更新时间:2023-12-19 00:54:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《C语言》

实验报告

姓名: 董俊蛟

班级: 数学101 学号: 1009300101

实验日期: 2011年4月27日

《C语言》实验报告

一、实验题目:

数组的应用

二、实验目的:

1.掌握一、二维数组、字符数组的定义、初始化和引用方法及字符串函数的用法。

2.理解与数组有关的算法。

三、实验内容:

1.用起泡法(或称冒泡法)对15、5、9、2、7、11、8、3、12、1共10个整数由小到大排序。画出N-S算法流程图,编写源程序,给出注释及运行结果。至少自己修改数据1次,重新运行1个新结果。

2.求A矩阵与B矩阵的和矩阵C。其中

?1121??2352?A??2213?,B??3161?。画出N-S算法流程图,编写源程序,给

???????4321???1150??出注释及运行结果。至少自己修改数据1次,重新运行1个新结果。

3.编程求出二维数组a的最大元素,同时求出该最大元素所在的行row和列

?10921?column。a数组的矩阵表示如下:A??122113?。画出N-S算法流程图,

????4132114??编写源程序,给出注释及运行结果。

4.定义一个二维数组,存放5个字符串“dog”,“tiger”,“wolf”,“cat”,“horse”,然后用选择法将这5个字符串按由小到大的顺序并输出。画出N-S算法流程图,编写源程序,给出注释及运行结果。

四、实验结果:

1. #include /*标准输入输出库*/ void main() /*主函数*/ {

int a[10]; /*定义整型数组a[10]*/ int i,j,t; /*定义整型变量i,j,t*/

for(i=0;i<10;i++) /*进行10次循环,实现10趟比较 */ scanf(\ /*输入整型数组*/ printf(“\\n”); /*换行*/

for(j=0;j<9;j++) /*进行9次循环,实现9趟比较*/

- 1 -

《C语言》实验报告

for(i=0;i<9-j;i++) /*在每一趟中进行9-j次比较*/ if(a[i]>a[i+1]) /*如果a[i]大于a[i+1]*/ {

t=a[i]; /*将a[i]赋给t*/

a[i]=a[i+1]; /*将a[i+1]赋给a[i]*/ a[i+1]=t; /*将t赋给a[i+1]*/ }

for(i=0;i<10;i++) /*i初值为0,判断i是否小于10,i加1*/ printf(\ /*输出a[i]*/ }

输出结果: 第一次输出

第二次输出

N-S流程图:

输入10个数赋给a[0]到a[9] 如果i<9 如果i<9-j a[i]>a[i+1] Y N a[i]和a[i+1]互 换位置

输出a[0]到a[9]的值 2、#include /*标准函数输入输出库*/

- 2 -

《C语言》实验报告

void main() /*主函数*/ {

int c[3][4],i,j; /*定义整型变量 int c[3][4],i,j*/ int a[3][4]={{1,1,2,1},{2,2,1,3},{4,3,2,1}}, /*分行给二维数组a[3][4]赋初值*/ b[3][4]={{2,3,5,2},{3,1,6,1},{1,1,5,0}}; /*分行给二维数组b[3][4]赋初值*/ printf(“A is:\\n”); /*输出A is:*/

for(i=0;i<3;i++) /*i从0到2执行下列语句*/ {for(j=0;j<4;j++) /*j从0到3执行下列语句*/ printf(“%d”,a[i][j]); /*以整形输出a[i][j]*/ printf(“\\n”);} printf(“B is:\\n”); for(i=0;i<3;i++) {for(j=0;j<4;j++) printf(“%d”,b[i][j]); printf(“\\n”);} for(i=0;i<3;i++) for(j=0;j<4;j++) c[i][j]=a[i][j]+b[i][j]; printf(“C is:\\n”); for(i=0;i<3;i++) { for(j=0;j<4;j++) printf(“%d\\n”,c[i][j]); } }

第一次输出结果:

第二次输出结果:

/*换行*/ /*输出B is:*/

/*i从0到2执行下列语句*/ /*j从0到3执行下列语句*/ /*以整形输出b[i][j]*/ /*换行*/

/*i从0到2执行下列语句*/ /*j从0到3执行下列语句*/ /* a[i][j]+b[i][j]的值赋给c[i][j]*/

/*输出C is:*/

/*i从0到2执行下列语句*/

/*j从0到3执行下列语句*/

/*以整形输出c[i][j]*/ - 3 -

《C语言》实验报告

N-S流程图:

输入a[3][4], b[3][4]的值 如果i<3, 如果j<4 输出a[i][j] 如果i<3, 如果j<4 输出b[i][j] 如果i<3 如果j<4 c[i][j]=a[i][j]+b[i][j] 如果i<3 如果j<4 如果i<3 输出c[i][j]

3. #include /*标准函数输入输出库*/

void main() /*主函数*/ {

int i,j,row=0,column=0,max; /*定义整形变量i,j,row=0,column=0*/ int a[3][4]={{10,9,2,1},{12,2,11,3},{4,13,21,14}};/*分行给二维数组a[3][4]赋初值*/ max=a[0][0]; /* a[0][0]赋给max */

for(i=0;i<3;i++) /*i从0到2执行下列语句*/ for(j=0;j<4;j++) /*j从0到3执行下列语句*/ if(a[i][j]>max) /*如果a[i][j]>max */ {max=a[i][j]; /* a[i][j]赋给max */ row=i; /*i赋给row */

column=j; /*j赋给column */

- 4 -

《C语言》实验报告

}

printf(“max=%d,row=%d,column=%d”,max,row,column); /* 输出:max ,row ,column*/

}

运行结果:

N-S流程图:

max=a[0][0] 如果i<3 如果j<4 a[i][j]>max Y N max=a[i][j] row=i column=j 输出:max ,row ,column

4. #include /*标准函数输入输出库*/

#include /*包含头文件*/ void main() /*主函数*/ {

char str[6][6]={“dog”,”tiger”,”wolf”,”cat”,”horse”}; /*定义字符型二维数组并依

次赋初值*/

int i,j; /*定义整型变量i,j*/

char string[10]; /*定义一个字符型string*/ for(j=0;j<3;j++)

for(i=0;i<4;i++) /*for循环i从0到3执行下

列句*/

if(strcmp(str[i],str[i+1])>0) /*如果strcmp(str[i],str[i+1])>0*/

- 5 -

《C语言》实验报告

{strcpy(string,str[i]); /*将str[i]中字符串复制到string中*/ strcpy(str[i],str[i+1]); /* 将str[i+1]中字符串复制到str[i]中*/ strcpy(str[i+1],string); /* 将string中字符串复制到str[i+1]中*/ }

for(i=0;i<5;i++) /* for循环i从0到4执行下列句*/ printf(“%s ”,str[i]); /*以字符型输出str[i]*/ }

运行结果:

如果i<3 如果j<4 strcmp(str[i],str[i+1])>0 Y N strcpy(string,str[i]) strcpy(str[i],str[i+1]) strcpy(str[i+1],string) 如果i<5 输出str[i]

五、实验体会或遇到问题:

1、N-S流程图画的还有些问题 2、独立解决问题能力还未提高 3、发现越来越难了

- 6 -

《C语言》实验报告

- 7 -

本文来源:https://www.bwwdw.com/article/gh55.html

Top