c语言编程有关数组的几道例题

  • 格式:doc
  • 大小:31.50 KB
  • 文档页数:10

下载文档原格式

  / 20
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验四一维数组、二维数组

一、实验目的与要求

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;ia[j+1])

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

{