实验 6 数组1 ok
1、输入n个整数,将它们存入数组a中。输出最大值和它所对应的下标。
#include<stdio.h> int main(void) { int i,index; int a[10]; printf("请输入10个整数:\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); /* 找最大值a[index] */ index=0; /* 假设a[0]是最大值 */ for(i=1;i<=10;i++) if(a[i]>a[index]) /*如果a[i]比假设的最大值还大*/ index=i; /*再假设a[i]是新的最大值,即下标为i的元素最大*/ printf("最大值是%d\t其数组下标是:%d\n",a[index],index); return 0; }
--------------------------------题目分割线---------------------------------
2、输入n个整数,存入数组a中,分别按正序和逆序输出这些数;
运行结果示例:
#include<stdio.h> int main(void) { int i,n,k; int a[10]; /*定义一个有10个整型元素的数组a*/ printf("输入n(n<=10):"); scanf("%d",&n); printf("输入%d个整数:\n",n); for(i=0;i<n;i++){ /*将输入数依次赋给数组a的n个元素a[0]~a[n-1]*/ scanf("%d",&a[i]); /*对n个数排序*/ } printf("正序输出一堆数组a:\n"); for(i=0;i<=n-1;i++){ /*循环实现顺序输出*/ printf("数组元素a[%d],元素值%d\n",i,a[i]); } printf("逆序输出一堆数组a:\n"); for(i=0;i<2;i++){ k=a[i]; a[i]=a[n-1-i]; a[n-1-i]=k; /*交换a[i]和a[n-1-i]的数值*/ } for(i=0;i<=n-1;i++){ /*循环实现顺序输出*/ printf("数组元素a[%d],元素值%d\n",i,a[i]); } return 0; }
for(i=0;i<2;i++){ i<2这是为什么- -。
--------------------------------题目分割线---------------------------------
△3、定义一维数组arr,他有5个双精度浮点型元素,任意输入5个后,用冒泡排序法,由大到小排序并输出:
运行结果示例:
#include<stdio.h> int main(void) { double arr[5]; /*定义一个有5个元素的数组*/ int i,j; double n; printf("请输入5个实数:\n"); for(i=0;i<5;i++){ scanf("%lf",&arr[i]); /*输入5个数*/ } for(i=0;i<5;i++){ for(j=0;j<5-i;j++){ if(arr[j]<arr[j+1]){ n=arr[j+1]; arr[j+1]=arr[j]; arr[j]=n; } } } printf("由大到小排序后:\n"); for(i=0;i<5;i++){ printf("%lf\n",arr[i]); } return 0; }
--------------------------------题目分割线---------------------------------
△4、设计一个程序,利用二维数组输出3x2矩阵,程序运行结果如下:
运行结果示例:
#include<stdio.h> int main(void) { int i,j; int a[3][2]; //定义一个二维数组a for(i=0;i<3;i++) //行下标是外循环的循环变量 for(j=0;j<2;j++) //列下标是内循环的循环变量 a[i][j]=i+j; //给数组元素赋值 //按矩阵的形式输出a for(i=0;i<3;i++){ //针对所有行的循环 for(j=0;j<2;j++) //输出第i行的所有元素 printf("%4d",a[i][j]); printf("\n"); //换行 } return 0; }
--------------------------------题目分割线---------------------------------
△5、定义一个3×3的整形二维数组arr,为数组各元素赋值,找出最小值以及它的行下标和列下标,并输出该矩阵
运行结果示例:
#include<stdio.h> int main(void) { int arr[3][3]; int i,j,x,y; //输入矩阵; printf("输入数组arr各元素值:\n"); for(i=0;i<3;i++){ for(j=0;j<3;j++){ scanf("%d",&arr[i][j]); } } x=y=0; //求出最小值; for(i=0;i<3;i++){ for(j=0;j<3;j++){ if(arr[i][j]<arr [x][y]){ x=i; y=j; } } } //输出矩阵 printf("输入数组为:\n"); for(i=0;i<3;i++){ for(j=0;j<3;j++){ printf("%4d",arr[i][j]); } printf("\n"); } printf("第%d行%d列最小值是%d\n",x+1,y+1,arr[x][y]); return 0; }