实验 数组一,实验目的:1,掌握一维数组和二维数组的定义,赋值和输入输出的方法.2,掌握字符数组和字符串函数的使用.3,掌握与数组有关的算法(特别是排序算法).二,实验准备:1,复习数组的基本知识.2,复习字符串数组的特点和常用的字符串处理函数.3,源程序.三,实验步骤及内容:1,求两3*3二维数组的和:2,编程计算3*3矩阵两条对角线元素之和:#include "stdio.h"
main()
{ int i,j,s=0,k=0,w=0;
int a[3][3];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(i+j==2||i==j)
k=k+a[i][j];
printf("%d\n",k);
getch();
}
运行结果:
3,编写下列问题的源程序并上机调试运行.(1)用选择法对10个整数排序(10个整数用scanf函数输入).#include "stdio.h"
main ()
{int a[10];
int i,j,k;
printf("put 10 wordf:\n");
for (i=0;i<10;i++)
scanf("%d",&a[i]);
printf("\n");
for (j=0;j<9;j++)
for( i=0;i<9-j;i++)
if (a[i]>a[i+1])
{k=a[i];a[i]=a[i+1];a[i+1]=k;}
printf("min to max is:\n");
for (i=0;i<10;i++)
printf(" %d",a[i]);
printf("\n");
getch();
}
运行结果:
(2) 找出一个二维数组的"鞍点",即该位置上的元素在该行上最大,在该列上最小.也可能没有鞍点.此二维数组可以设定如下:9 80 205 4090 -60 96 1210 -3 101 89数组元素的值用赋初值方法在程序中指定. #include
main()
{int a[3][4],b[3],c[3],d[3][4],k=0,l=0;int i,j;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
scanf("%d",&d[i][j]);
for(i=0;i<3;i++)
for(j=0;j<4;j++,a[i][j]=d[i][j]);
for(i=0,k=0;i<3;i++,k++)
for(j=0;j<2;j++)
{if(a[i][j]>=a[i][j+1])
b[k]=a[i][j+1]=a[i][j];
else
b[k]=a[i][j+1];
}
for(j=0,l=0;j<5;j++,l++)
for(i=0;i<4;i++)
{if(a[i][j]<=a[i+1][j])
c[l]=a[i+1][j]=a[i][j];
else
c[l]=a[i+1][j];
}
for(i=0,k=0;i<3;i++,k++)
for(j=0,l=0;j<4;j++,l++)
if(d[i][j]-b[k]==0)
{if(d[i][j]-c[l]==0)
printf("d[%d][%d]=%d\n",i,j,d[i][j]);
else
printf("d[%d][%d]=%d isnot andi\n",i,j,d[i][j]);
}
}
运行结果:
(3)将两个字符串连接起来,不要用strcat函数. #include "stdio.h"
main ()
{char a[30]={"yao guo lei"} ,b[]={" class one"};
int i,j=0;
for(i=0;i<30;i++)
{if(a[i]=='\0')
a[i]=b[j++];
}
printf("%s",a);(或者puts(a))
getch();
}
运行结果:
四,实验报告:1,源程序.2,错误原因及其修改记录.3,实验结果记录.4,实验体会.