当前位置:文档之家› C语言一维数组

C语言一维数组


例2、 用冒泡法对 个数排序 、 用冒泡法对10个数排序
38 49 38 49 65 76 97 13 97 76 13 97 27 27 97 30 30 97 初 始 n=8 38 49 65 13 76 13 27 76 27 30 76 30 76 97 第 一 趟 38 49 13 65 65 27 13 30 27 65 30 65 76 第 二 趟 第 三 趟 趟 四 趟 第 五 趟 38 49 13 49 13 27 49 30 27 30 49 65 38 13 38 38 27 13 30 27 38 30 49 13 27 30 38 13 13 27 27 30
例3、 用简单选择法对 个数排序 、 用简单选择法对10个数排序
k i=1 初始: [ 49 13 k 38 j k i=2 一趟: 13 65 j 97 j 97 j 97 [97 49 49 49 76 j 76 j 76 76 [76 65 65 k 49 13 j 27 ] k j
[38 65 27 j
例4、 有十个学生的成绩,求平均分 、 有十个学生的成绩, 92 85 68 75 54 88 98 45 61 79
a[0] 92 85 68 75 54 88 98 45 61 79
#include <stdio.h> main() { int k , a[10]; for(k=0;k<10;k++) scanf(“%d”,&a[k]); for(k=0;k<10;k++) sum+=a[k]; printf(“Average is %d\n”,sum/10); }
#include <stdio.h> #define SIZE 10 main() { int x[SIZE],i,max,min; printf("Enter 10 integers:\n"); for(i=0;i<SIZE;i++) { printf("%d:",i+1); scanf("%d",&x[i]); } max=min=x[0]; for(i=1;i<SIZE;i++) { if(max<x[i]) max=x[i]; if(min>x[i]) min=x[i]; } printf("Maximum value is %d\n",max); printf("Minimum value is %d\n",min); }
第 六
第 七 趟

#include <stdio.h> main() { int a[11],i,j,t; for(i=0;i<10;i++) scanf("%d",&a[i]); printf("\n"); for(j=1;j<10;j++) for(i=1;i<=10-j;i++) if(a[i]>a[i+1]) { t=a[i]; a[i]=a[i+1]; a[i+1]=t; } for(i=0;i<10;i++) printf("%d ",a[i]); }
a和b为有10个元素的整型数组 比较两数组对应元素 变量n,m,k记录a[i]>b[i], a[i]==b[i], a[i]<b[i]的个数 最后 若n>k,认为数组a>b 若n<k,认为数组a<b 若n==k,认为数组a==b
#include <stdio.h> main() int large(int x,int y) { int a[10],b[10],i,n=0,m=0,k=0; printf("Enter array a:\n"); { int flag; for(i=0;i<10;i++) if(x>y) flag=1; scanf("%d",&a[i]); else if(x<y) flag=-1; printf("Enter array b:\n"); else flag=0; for(i=0;i<10;i++) return(flag); scanf("%d",&b[i]); } for(i=0;i<10;i++) { if(large(a[i],b[i])==1) n=n+1; else if(large(a[i],b[i])==0) m=m+1; else k=k+1; } /* Output */ }
1 2 x 1 2 y x 2 1 y 交换 a 1 2 返回
a a[0] a[1]
1 2 调用前
a a[0] a[1]
调用
地址传递
#include <stdio.h> void swap2(int x[]) { int z; z=x[0]; x[0]=x[1]; x[1]=z; } main() { int a[2]={1,2}; swap2(a); printf("a[0]=%d\na[1]=%d\n",a[0],a[1]); }
值传递
#include <stdio.h> void swap2(int x,int y) { int z; z=x; x=y; y=z; } main() { int a[2]={1,2}; swap2(a[0],a[1]); printf("a[0]=%d\na[1]=%d\n",a[0],a[1]); }
例6、 两个数组大小比较 、
0 1 2 3 4 5 n=0 m=0 k=0 a 12 23 56 10 76 88 n=0 m=0 k=1 i i i i i i n=0 m=1 k=1 b 43 23 21 98 66 1 2 3 4 5 n=1 m=1 k=2 n=2 m=1 k=2 n=3 m=1 k=2
49 38 ] 27 j 49 49 97 [97 76 j 38 ] 65 ] 65 ] 76 ] [97 ]
二趟: 13 三趟: 13 四趟: 13 五趟: 13 六趟: 13
27 27 27 27 27
[65 38 38 38 38
#include <stdio.h> main() { int a[10],i,j,k,x; printf("Input 10 numbers:\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); printf("\n"); for(i=1;i<10;i++) { k=i; for(j=i+1;j<=10;j++) if(a[j]<a[k]) k=j; if(i!=k) { x=a[i]; a[i]=a[k]; a[k]=x;} } printf("The sorted numbers:\n"); for(i=0;i<10;i++) printf("%d ",a[i]); }
a
a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]
个学生,每个学生 门课成绩,求每人的平均成 例5、 有 M 个学生 每个学生 N 门课成绩 求每人的平均成 、 并安平均成绩从大到小排序,按排序结果输出。 绩,并安平均成绩从大到小排序,按排序结果输出。 如原始数据为:
实参用数组名
float average(int stu[10], int n) { int i; float av,total=0; for( i=0; i<n; i++ ) total += stu[i]; av = total/n; return av; }
例8、数组元素与数组名 、 作函数参数比较
形参用数组定义,
int stu[ ]
例7、 求学生的平均成绩 、
#include <stdio.h> float average(int stu[10], int n); void main() { int score[10], i; float av; printf("Input 10 scores:\n"); for( i=0; i<10; i++ ) scanf("%d", &score[i]); av=average(score,10); printf("Average is:%.2f", av); }
一维数组程序举例
个整数存入数组, 例1、 读10个整数存入数组,找出其中最大值和最小值 、 个整数存入数组 步骤: 1. 输入:for循环输入10个整数 2. 处理: (a) 先令max=min=x[0] (b) 依次用x[i]和max,min比较(循环) 若max<x[i],令max=x[i] 若min>x[i],令min=x[i] 3. 输出:max和min
数学 英语 化学 物理
输出数据格式为:
数学 英语 化学 物理
1 2 3
62 75 54 88 91 79
68 98 81
75 45 70
3 2 1
91 54 62
79 81 70 88 98 45 75 68 75
80.25 71.25 70.0
– 数组名作函数参数
• • • • 地址传递 在主调函数与被调函数分别定义数组,且类型应一致 形参数组大小(多维数组第一维)可不指定 形参数组名是地址变量
相关主题