c语言实验报告同名.docx
《c语言实验报告同名.docx》由会员分享,可在线阅读,更多相关《c语言实验报告同名.docx(10页珍藏版)》请在冰豆网上搜索。
c语言实验报告同名
《C语言》课内实验报告
学生姓名:
及学号:
学院:
理学院
班级:
课程名称:
实验题目:
数组的应用
指导教师
姓名及职称:
李鹏松教授
方向实验师
刘力实验师
《C语言》课内实验
一、实验题目:
数组的应用
二、实验目的:
1.掌握一、二维数组、字符数组的定义、初始化和引用方法及字符串函数的用法。
2.理解与数组有关的算法。
三、实验内容:
1.用起泡法(或称冒泡法)对15、5、9、2、7、11、8、3、12、1共10个整数由小到大排序。
画出N-S算法流程图,编写源程序,给出注释及运行结果。
至少自己修改数据1次,重新运行1个新结果。
2.求A矩阵与B矩阵的和矩阵C。
其中
,
。
画出N-S算法流程图,编写源程序,给出注释及运行结果。
至少自己修改数据1次,重新运行1个新结果。
3.编程求出二维数组a的最大元素,同时求出该最大元素所在的行row和列column。
a数组的矩阵表示如下:
。
画出N-S算法流程图,编写源程序,给出注释及运行结果。
4.定义一个二维数组,存放5个字符串“dog”,“tiger”,“wolf”,“cat”,“horse”,然后用选择法将这5个字符串按由小到大的顺序并输出。
画出N-S算法流程图,编写源程序,给出注释及运行结果。
四、实验结果:
1.#include/*标准输入输出函数库*/
voidmain()/*定义主函数为空类型*/
{
inta[10],i,j,t;/*定义一个长度为10的整型数组,数组名为a,定义i,j,t为整型变量*/
printf("Pleaseinputtennumbers:
\n");/*提示用户输入十个数字*/
for(i=0;i<10;i++)/*给i赋初值为0;如果i小于10,则执行下面的内嵌语句,给i自加1,一直重复这个过程,直到i大于等于10*/
scanf("%d",&a[i]);/*把输入的10个数依次存放在之前定义好的数组中*/
for(j=0;j<9;j++)/*给j赋初值为0;如果j小于9,则执行下面的内嵌语句,给j自加1,一直重复这个过程,直到j大于等于9*/
for(i=0;i<9-j;i++)/*给i赋初值为0;如果i小于9减j,则执行下面的内嵌语句,给i自加1,一直重复这个过程,直到i大于等于9减j*/
if(a[i]>a[i+1])/*如果数组中,第i+1个元素大于第i+2个元素,则执行下面的内嵌语句*/
{
t=a[i];/*把数组中第i+1个元素赋给t*/
a[i]=a[i+1];/*把数组中第i+2个元素放到第i+1的位置,并覆盖该位置原来的元素*/
a[i+1]=t;/*把t中存放的值放到数组的第i+2个位置,并覆盖该位置原来的元素*/
}
printf("\n");/*使光标跳到下一行开头*/
printf("Theresultis:
\n");/*输出Theresultis:
并使光标跳到下一行开头*/
for(i=0;i<10;i++)/*给i赋初值为0;如果i小于10,则执行下面的内嵌语句,给i自加1,一直重复这个过程,直到i大于等于10*/
printf("%d,",a[i]);/*把排列好的十个数依次输出*/
printf("\n");/*使光标跳到下一行开头*/
}
2.#include/*标准输入输出函数库*/
voidmain()/*定义主函数为空类型*/
{
inta[3][4],b[3][4],c[3][4],i,j;/*定义了三个三行四列的二维数组,数组名分别为a,b,c,定义i,j为基本整型变量*/
printf("Pleaseinputa:
\n");/*提示用户输入矩阵a*/
for(i=0;i<=2;i++)/*把0赋给i,当i<=2时,执行下面的内嵌语句,给i自加1,一直进行这个循环,直到i>2*/
for(j=0;j<=3;j++)/*把0赋给j,当j<=3时,执行下面的内嵌语句,给j自加1,一直进行这个循环,直到j>3*/
scanf("%d",&a[i][j]);/*把输入的数值依次存放到数组a中*/
printf("Pleaseinputb:
\n");/*提示用户输入矩阵b*/
for(i=0;i<=2;i++)/*把0赋给i,当i<=2时,执行下面的内嵌语句,给i自加1,一直进行这个循环,直到i>2*/
for(j=0;j<=3;j++)/*把0赋给j,当j<=3时,执行下面的内嵌语句,给j自加1,一直进行这个循环,直到j>3*/
scanf("%d",&b[i][j]);/*把输入的数值依次存放到数组b中*/
for(i=0;i<=2;i++)/*把0赋给i,当i<=2时,执行下面的内嵌语句,给i自加1,一直进行这个循环,直到i>2*/
for(j=0;j<=3;j++)/*把0赋给j,当j<=3时,执行下面的内嵌语句,给j自加1,一直进行这个循环,直到j>3*/
c[i][j]=a[i][j]+b[i][j];/*把数组a中第i+1行,第i+1列的元素与数组b中第i+1行,第i+1列相加,所得到的结果,存放在数组c的第i+1行,第j+1列,并覆盖此位置原来的元素*/
printf("c:
\n");/*输出c:
并使光标移到下一行的开头*/
for(i=0;i<=2;i++)/*把0赋给i,当i<=2时,执行下面的内嵌语句,给i自加1,一直进行这个循环,直到i>2*/
{for(j=0;j<=3;j++)for(j=0;j<=3;j++)/*把0赋给j,当j<=3时,执行下面的内嵌语句,给j自加1,一直进行这个循环,直到j>3*/
printf("%3d",c[i][j]);/*依次输出数组c中的元素*/
printf("\n");/*使光标跳到下一行*/
}
}
3.#include/*标准输入输出函数库*/
voidmain()/*定义主函数为空类型*/
{
inta[3][4]={{10,9,2,1},{12,2,11,3},{4,13,21,14}},i,j,max,row,column;/*定义了一个三行四列的二维整型数组,数组名为a,并进行初始化,定义i,j,max,row,column为整型变量*/
max=a[0][0];/*把数组中第一行第一列的元素赋给max*/
for(i=0;i<=2;i++)/*给i赋初值为o,如果i<=2,则执行下面的循环体,然后,i自加1,一直进行这个循环,直到i>2*/
for(j=0;j<=3;j++)/*给j赋初值为o,如果j<=3,则执行下面的循环体,然后,i自加1,一直进行这个循环,直到j>3*/
if(a[i][j]>max)/*判断a[i][j]是否大于max中的值,如果成立,就执行下面的内嵌函数*/
{
max=a[i][j];/*把a[i][j]赋给max*/
row=i+1;/*把i+1中的值赋给row*/
column=j+1;/*把j+1中的值赋给rolumn*/
}
printf("Thebiggestnumberinthesenumbersis%d\nrow=%d\ncolumn=%d",max,row,column);/*输出这个矩阵中的最大数和这个数所在的行,列*/
}
4.
#include/*标准输入输出函数库*/
#include/*包括字符串函数*/
voidmain()/*定义主函数为空类型*/
{
chara[5][6];/*定义一个五行六列的二维字符型数组,数组名为a*/
charstring[10];/*定义了一个包含10个元素的一维字符型数组,数组名为string*/
inti,n;/*定义i,n为基本整型变量*/
for(i=0;i<5;i++)/*给i赋初值为0,当i<5,则执行下面的内嵌语句,给i自加1,一直进行这样的循环,直到i>=5*/
gets(a[i]);/*输入5个字符串*/
for(n=0;n<1000;n++)/*给n赋初值为0,当n<1000,则执行下面的内嵌语句,给n自加1,一直进行这样的循环,直到n>=1000*/
for(i=0;i<5;i++)/*给i赋初值为0,当i<5,则执行下面的内嵌语句,给i自加1,一直进行这样的循环,直到i>=5*/
if(strcmp(a[i],a[i+1])>0)/*如果前一个字符串比后一个字符串大,就执行下面的内嵌语句*/
{
strcpy(string,a[i]);/*把a[i]拷贝到string,并覆盖掉原位置之前的内容*/
strcpy(a[i],a[i+1]);/*把a[i+1]拷贝到a[i]中,并覆盖掉原位置之前的内容*/
strcpy(a[i+1],string);/*把string拷贝到a[i+1]中,并覆盖掉原位置之前的内容*/
}
for(i=0;i<5;i++)/*给i赋初值为0.当i<5,则执行下面的内嵌语句,给i自加1,一直进行这样的循环,直到i>=5*/
printf("%d:
%s\t",i+1,a[i]);/*从大到小输出之前输入的字符串,并给每个字符串编号*/
}
五、实验体会或遇到问题:
在这次的c语言实验中,最后一个题花费的时间最多,应该使字符串这里还住那个我的不够好,以后,多看看书,自己写写书上的程序。
不知道为什么,每次都要写完程序才画得出N-S流程图,不然,一点思路都没有,以后,多多练习先画图,在写程序吧!