/*输入n个整数,将它们存入数组a中。输出最大值和它所对应的下标*/ #include<stdio.h> int main(void) { int i,index,n; /*index记录最大值对应的下标*/ int a[10]; printf("输入 n:"); scanf("%d",&n); printf("输入 %d 个整数:",n);
for(i=0;i<n;i++) scanf("%d",&a[i]); /*找最大值a[index]*/ index=0; for(i=1;i<n;i++) if(a[i]>a[index]) /*二者比较,取更大的值代入a[index]*/ index=i; printf("最大值是 %d 其数组下标是 %d ",a[index],index); return 0; }
/*输入n个整数,存入数组a中,分别按正序和逆序输出这些数*/ #include <stdio.h> int main(void) { int i,n; int a[10]; /*定义一个有五个整型元素的数组*/ printf("输入 n:"); scanf("%d",&n); printf("输入 %d 个整数:",n); for(i=0;i<5;i++) scanf("%d",&a[i]); /*循环输入10个整数*/ printf("正序输出一组数组a :"); for(i=0;i<5;i++) printf("数组元素 %d ",a[i]);/*正循环输出*/ printf("逆序输出一组数组a :"); for(i=5;i>0;i--) printf("数组元素 %d ",a[i]);/*逆循环输出*/ getchar(); /*按回车后程序结束*/ return 0; }
1、在输出时后缀“ ”表示换行;
2、注意“i=0;i<=5”中有五个数,不应加“=”。
问题:为什么逆序输出中第一组元素会这么奇怪?
/*设计一个程序,利用二维数组输出3x2矩阵*/ #include<stdio.h> int main(void) { int i,j; int a[3][2]; /*输入一个3*2矩阵*/ for(i=0;i<3;i++){ for(j=0;j<2;j++){ printf("enter a:"); scanf("%d",&a[i][j]); } } /*输出3x2矩阵*/ for(i=0;i<3;i++){ for(j=0;j<2;j++){ printf("%4d",a[i][j]); } printf(" "); } return 0; }
/*定义一维数组arr,用冒泡排序法,由大到小排序并输出*/ #include<stdio.h> int main(void) { double arr[5]; int i,j; double x; /*输入数组*/ printf("请输入5个实数: "); for(i=0;i<5;i++){ scanf("%lf",&arr[i]); } /*用冒泡排序法排序*/ for(i=0;i<5;i++){ for(j=0;j<5-i;j++){ if(arr[j]<arr[j+1]){ x=arr[j+1]; arr[j+1]=arr[j]; arr[j]=x; } } } /*输出数组*/ for(i=0;i<5;i++){ printf("%lf ",arr[i]); } return 0; }
/*定义一个3×3的整形二维数组arr,找出最小值以及它的行下标和列下标,并输出该矩阵*/ #include<stdio.h> int main(void) { int arr[3][3]; int i,j,x,y; /*输入矩阵*/ for(i=0;i<3;i++){ for(j=0;j<3;j++){ printf("输入数组arr各元素值: "); 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; } } } /*输出矩阵*/ for(i=0;i<3;i++){ for(j=0;j<3;j++){ printf("%4d",arr[i][j]); } printf(" "); } /*找出最小值以及它的行下标和列下标*/ printf("第%d行%d列最小值是%d ",x,y,arr[x][y]); return 0; }