part 1:数组数据结构
#include <stdio.h> const int N=5; int main() { double a[5] = {1.0, 2.0, 3.0, 4.0, 5.0}; int i; for(i=0; i<N; i++) printf("%d: %.2f\n", &a[i], a[i]); return 0; }
数据元素顺序存放,每个存储结点只含一个元素。
part 2:一维数组的定义、初始化以及数组元素的引用方法
定义方式:类型说明符 数组名[元素个数]
初始化:声明简单变量时可初始化,定义数组时直接初始化。初始化元素个数小于数组长度,其余元素初始化为0,初始化值超过数组元素个数会产生数组定义的错误。
引用:将数组元素作为函数的参数使用,或数组参数。
#include <stdio.h> int main() { int a[] = {1, 9, 8, 6, 0}; int i,n; n = sizeof(a) / sizeof(a[0]); for(i=0; i<n; i++) printf("a[%d] = %d\n", i, a[i]); return 0; }
part 3 : 数组作为函数参数
#include <stdio.h> const int N=5; int main() { int score[N] = {99, 82, 88, 97, 85};// 定义数组score,包含5个int元素,并初始化 int i; // 输出数组元素 for(i=0; i<N; i++) printf("%d ",score[i]); // 数组元素score[i]作为实参 return 0; }
第二个程序中printf()函数是自定义,可用于输出整形数据。
Part4: 用冒泡法对一组数据由小到大排序
冒泡法:比较相邻的元素。如果第一个比第二个大,就交换这两个元素。重复比较元素列,直到没有一对元素需要比较为止。
中心思想是比较和交换。冒泡排序最多执行n-1趟,n为待排序元素个数。一般可以用两层循环来实现,一个有序的序列直到边界条件,检测比较有有无交换,若无,则退出循环。
Part5: 编程练习
#include <stdio.h> int findMax(int a[], int n); // 函数声明 const int N=5; int main() { int a[N]; int max, i; printf("输入%d个整数: \n", N); for(i=0;i<=N-1;i++)// 利用循环输入N个整数给数组a scanf("%d",&a[i]); // 补足程序1 // 。。。 findMax(a,N);// 调用子函数max求数组a的最大元素值,并赋值给max max=a[0];// 补足程序2 // 。。。 // 输出最大值 printf("数组a中最大元素值为: %d\n\n", max); return 0; } int findMax(int a[],int n){ int h,j,k; for(h=0;h<N-1;h++){ for(j=0;j<N-h-1;j++){ if(a[j]<a[j+1]){ k=a[j+1]; a[j+1]=a[j]; a[j]=k; } } } } // 函数定义 // 功能描述:找出整型数组a中元素的最大值,并返回次此最大值 // 补足函数findMax()的实现部分3 // 。。。
#include <stdio.h> const int N=4; void output(char x[], int n); void bubbleSort(char x[], int n); int main() { char string[N] = {‘2‘,‘0‘,‘1‘,‘9‘}; int i; printf("排序前: \n"); output(string, N); bubbleSort(string,N); printf("\n排序后: \n"); output(string, N); printf("\n"); return 0; } void output(char x[], int n) { int i; for(i=0; i<N; i++) printf("%c", x[i]); } void bubbleSort(char x[], int n){ int i,j; char t; for(i=0;i<n-1;i++){ for(j=0;j<n-i-1;j++){ if(x[j]<x[j+1]){ t=x[j]; x[j]=x[j+1]; x[j+1]=t; } } } }
原文:https://www.cnblogs.com/lxx13/p/10771008.html