c语言编程有关数组的几道例题
- 格式:doc
- 大小:31.50 KB
- 文档页数:10
实验四一维数组、二维数组
一、实验目的与要求
1、熟练掌握一维数组、二维数组的定义、赋值和输入输出的方法。
2、掌握与数组有关的算法。
二、实验内容
1、(1)输入N个整数,使用冒泡排序,将数据由大到小输出。
#include ""
#include<>
void swap2(int*,int*);
void bubble(int a[],int n);
int main(void)
{
int n,a[8];
int i;
printf("Enter n(n<=8):");
scanf("%d",&n);
printf("Enter a[%d]:", n);
for(i=0;i scanf("%d", &a[i]); bubble(a,n); printf("After sorted,a[%d]=", n); for(i=0;i printf("%3d",a[i]); return 0; } void bubble(int a[],int n) /*n是数组a中待排序元素的数量*/ { int i,j; for(i=1;i swap2(&a[j],&a[j+1]); /*交换*/ } void swap2(int *px,int *py) { int t; t=*px; *px=*py; *py=t; } 单向冒泡排序法: //输入10个整数,按从大到小输出// #include<> void main() { int i,j,t,a[10]; printf("请输入10个整数\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); for(j=1;j<10;j++) //10个数要来回做(10-1)趟次// for(i=1;i<11-j;i++) //第j趟要做(10-j)次比较// if(a[i]>a[i-1]) //每做完一趟,就会将数组中较小的一个数沉淀下来,较大的数不断往上冒// {t=a[i];a[i]=a[i-1];a[i-1]=t;} printf("按从大到小排序输出结果是:\n"); for(i=0;i<10;i++) printf("%-3d",a[i]); printf("\n"); } 双向冒泡排序法: //输入10个整数,按从大到小输出// #include<> void main() { int i,j,t,k,a[10]; printf("请输入10个整数\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); for(j=1;j<10;j++) //10个数要来回做(10-1)趟次// {for(i=1;i<11-j;i++) //第j趟要做(10-j)次比较,双向冒泡法,是先从上至下两两比较一次// if(a[i]>a[i-1]) //每做完一趟,就会将数组中较小的一个数沉淀下来,较大的数不断往上冒// {t=a[i];a[i]=a[i-1];a[i-1]=t;} for(k=i-1;k>0;k--) //与单向冒泡不同的是,这是双向冒泡的关键,每一次从顶至下比较完一次后,同时再从下// if(a[k]>a[k-1]) //至上比较一次,也就是说每一趟数组中的元素两两比较了两次,这就是双向冒泡排序了// {t=a[k];a[k]=a[k-1];a[k-1]=t;} } printf("按从大到小排序输出结果是:\n"); for(i=0;i<10;i++) printf("%-3d",a[i]); printf("\n"); } $(2)输入N个整数,使用改进的冒泡排序,将数据由大到小输出。 #include "" #include<> void swap2(int*,int*); void bubble(int a[],int n); int main(void) { int n,a[8]; int i; printf("Enter n(n<=8):"); scanf("%d",&n); printf("Enter a[%d]:", n); for(i=0;i scanf("%d", &a[i]); bubble(a,n); printf("After sorted,a[%d]=", n); for(i=0;i printf("%3d",a[i]); return 0; } void bubble(int a[],int n) /*n是数组a中待排序元素的数量*/ { int i,j; for(i=1;i for(j=0;j if(a[j]>a[j+1]) swap2(&a[j],&a[j+1]); /*交换*/ } void swap2(int *px,int *py) { int t; t=*px; *px=*py; *py=t; } 2、*******输入N-1个整数组成一数列,再输入某数x,先将数列排序,根据x的值插入到有序数列中。 #include<> main () { void Rank(int N,int n[]); int i,j,k; int n[11]; printf("请输入10个整数:"); for(i=0;i<10;i++) scanf("%d",&n[i]); Rank(10,n); //调用函数对输入的数组排序 printf("\n请输入需要插入的整数:"); scanf("%d",&k); if(k>n[9]) n[10]=k; else {