实验6 数组1
1.输入n个整数,将它们存入数组a中。输出最大值和它所对应的下标
/*输入n个整数,将它们存入数组a中。输出最大值和它所对应的下标*/ #include<stdio.h> int main(void) { int i,index,n; int a[10]; /*定义1个数组a,它有10个整型元素*/ printf("Enter n:"); /*提示输入n*/ scanf("%d",&n); printf("Enter %d integers:",n); /*提示输入n个数*/ for(i=0;i<n;i++) scanf("%d",&a[i]); /*将输入的数依次赋给数组a的n个元素a[0]~a[n-1]*/ /*找最小值a[index]*/ index=0; /*假设a[0]是最大值,即下标为0的元素最大*/ for(i=1;i<n;i++) if(a[i]>a[index]) /*如果a[i]比假设的最大值还大*/ index=i; /*再假设a[i]是新的最大值,即下标为i的元素最小*/ printf("max is %d\tsub is %d\n",a[index],index); /*输出最大值和对应的下标*/ return 0; }
2、输入n个整数,存入数组a中,分别按正序和逆序输出这些数;
/*输入n个整数,存入数组a中,分别按正序和逆序输出这些数;*/ #include<stdio.h> int main(void) { int i,n; int a[10]; /*定义1个数组a,它有10个整型元素*/ printf("Enter n:"); /*提示输入n*/ scanf("%d",&n); printf("Enter %d integers:",n); /*提示输入n个数*/ for(i=0;i<n;i++) scanf("%d",&a[i]); /*将输入的数依次赋给数组a的n个元素a[0]~a[n-1]*/ printf("正序输出一维数组a\n"); /*正序输出结果*/ for(i=0;i<n;i++){ printf("数组元素a[%d],元素值%d\n",i,a[i]); } printf("\n"); printf("逆序输出一维数组a\n"); /*逆序输出结果*/ for(i=n-1;i>=0;i--){ printf("数组元素a[%d],元素值%d\n",i,a[i]); } return 0; }
4、设计一个程序,利用二维数组输出3x2矩阵,程序运行结果如下
#include<stdio.h> int main(void) { int i,j; /*定义行和列*/ int a[3][2]; /*定义1个二维数组a*/ /*给二维数组赋值*/ for(i=0;i<3;i++) for(j=0;j<2;j++) a[i][j]=i+j; /*给数组元素赋值*/ for(i=0;i<3;i++){ /*按矩阵的形式输出a*/ for(j=0;j<2;j++) printf("%4d",a[i][j]); printf("\n"); /*换行*/ } return 0; }
5.定义一个3×3的整形二维数组arr,为数组各元素赋值,找出最小值以及它的行下标和列下标,并输出该矩阵
/*定义一个3×3的整形二维数组arr,为数组各元素赋值,找出最小值以及它的行下标和列下标,并输出该矩阵*/ #include<stdio.h> int main(void) { int i,j,col,row; /*用变量row和col分别记录最小值得行下标和列下标*/ int a[3][3]; /*定义一个二维数组a*/ /*将输入的数存入二维数组*/ printf("Enter 9 integers:\n"); /*提示输入9个数*/ for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%d",&a[i][j]); /*按矩阵的形式输出二维数组a*/ for(i=0;i<3;i++){ for(j=0;j<3;j++) printf("%4d",a[i][j]); printf("\n"); } /*遍历二维数组,找出最小值a[row][col]*/ row=col=0; /*先假设a[0][0]是最小值*/ for(i=0;i<3;i++) /*如果a[i][j]比假设值小*/ for(j=0;j<3;j++) /*再假设a[i][j]是新的最小值*/ if(a[i][j]<a[row][col]){ row=i; col=j; } printf("min=a[%d][%d]=%d\n",row,col,a[row][col]); return 0; }