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

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

一、实验目的与要求

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

prin tf("%3d",a[i]);

return 0;

}

是数组a中待排序元素的数量

是数组a中待排序元素的数量*/

外部循环---请问这个嵌套循环怎么理解*/

内部循环---请问这个嵌套循环怎么理解*/

{

int i,j;

for(i=1;i< n; i++)/*

for(j=0;j

if(a[j]>a[j+1])

swap2(&a[j],&a[j+1]); /*交换 */

void swap2(i nt *px,i nt *py)

{ int t;

t=*px;

*px=*py;

*py=t;

}

单向冒泡排序法:

//输入10个整数,按从大到小输出//

#in clude<>

void mai n()

int i,j,t,a[10];

printf("请输入10个整数\n");

for(i=0;i<10;i++)

sca nf("%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;}

prin tf("按从大到小排序输出结果是:\n");

for(i=0;i<10;i++)

prin tf("%-3d",a[i]);

prin tf("\n");

}

双向冒泡排序法:

//输入10个整数,按从大到小输出//

#in clude<>

void mai n()

{

int i,j,t,k,a[10];

printf("请输入10个整数\n");

for(i=0;i<10;i++) sea nf("%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;}

}

prin tf("按从大到小排序输出结果是:\n");

for(i=0;i<10;i++)

prin tf("%-3d",a[i]);

prin tf("\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 中待排

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值