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

上传人:b****6 文档编号:2978802 上传时间:2022-11-16 格式:DOCX 页数:9 大小:16.62KB
下载 相关 举报
c语言编程有关数组的几道例题.docx_第1页
第1页 / 共9页
c语言编程有关数组的几道例题.docx_第2页
第2页 / 共9页
c语言编程有关数组的几道例题.docx_第3页
第3页 / 共9页
c语言编程有关数组的几道例题.docx_第4页
第4页 / 共9页
c语言编程有关数组的几道例题.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

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

《c语言编程有关数组的几道例题.docx》由会员分享,可在线阅读,更多相关《c语言编程有关数组的几道例题.docx(9页珍藏版)》请在冰豆网上搜索。

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

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

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

一、实验目的与要求

1、熟练掌握一维数组、二维数组的定义、赋值和输入输出的方法。

2、掌握与数组有关的算法。

二、实验内容

1、

(1)输入N个整数,使用冒泡排序,将数据由大到小输出。

#include""

#include<>

voidswap2(int*,int*);

voidbubble(inta[],intn);

intmain(void)

{

intn,a[8];

inti;

printf("Entern(n<=8):

");

scanf("%d",&n);

printf("Entera[%d]:

",n);

for(i=0;i

scanf("%d",&a[i]);

bubble(a,n);

printf("Aftersorted,a[%d]=",n);

for(i=0;i

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

return0;

}

voidbubble(inta[],intn)/*n是数组a中待排序元素的数量*/

{

inti,j;

for(i=1;i

for(j=0;j

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

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

}

voidswap2(int*px,int*py)

{

intt;

t=*px;

*px=*py;

*py=t;

}

单向冒泡排序法:

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

#include<>

voidmain()

{

inti,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<>

voidmain()

{

inti,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<>

voidswap2(int*,int*);

voidbubble(inta[],intn);

intmain(void)

{

intn,a[8];

inti;

printf("Entern(n<=8):

");

scanf("%d",&n);

printf("Entera[%d]:

",n);

for(i=0;i

scanf("%d",&a[i]);

bubble(a,n);

printf("Aftersorted,a[%d]=",n);

for(i=0;i

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

return0;

}

voidbubble(inta[],intn)/*n是数组a中待排序元素的数量*/

{

inti,j;

for(i=1;i

for(j=0;j

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

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

}

voidswap2(int*px,int*py)

{

intt;

t=*px;

*px=*py;

*py=t;

}

2、*******输入N-1个整数组成一数列,再输入某数x,先将数列排序,根据x的值插入到有序数列中。

#include<>

main()

{

voidRank(intN,intn[]);

inti,j,k;

intn[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

{

for(i=0;n[i]<=k;i++);

for(j=9;j>=i;j--)

n[j+1]=n[j];//腾出位置,用以插入所输入的数

n[i]=k;

}

printf("\n排序后此数列按升序排列为:

");

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

printf("%-4d",n[i]);

}

voidRank(intN,intn[])

{

inti,k,iTemp;

for(k=1;k<=N-1;k++)

for(i=N-1;i>=k;i--)

if(n[i-1]>n[i])

{

iTemp=n[i];

n[i]=n[i-1];

n[i-1]=iTemp;

}

printf("排序后此数列按升序排列为:

");

for(i=0;i<=N-1;i++)

printf("%-4d",n[i]);

printf("\n");

}

3、输入行数n,打印出杨辉三角。

#include<>intmain(){intyh[101][101]={{},{0,1}},i,n,m;scanf("%d",&m);/*输入要打印的行数,,,不能太大。

我水平不高。

*/for(i=2;i<=m;i++){yh[i][1]=yh[i][i]=1;for(n=2;n

#include<>

#include<>

main()

{inta[8][8],i,j;

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

{for(j=0;j<8;j++)

if(j==0)

a[i][j]=1;

elseif(i==j)

a[i][j]=1;

elseif(i>j&&j>=1)

a[i][j]=a[i-1][j]+a[i-1][j-1];

else

a[i][j]=0;

}

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

{for(j=0;j<=i;j++)

printf("%3d",a[i][j]);

printf("\n");

}

}

4、青年歌手参加歌曲大奖赛计分系统

(1)有N个评委进行打分,求这位选手的平均得分(去掉一个最高分和一个最低分)。

#include<>

#include<>

#include<>

voidbubble_sort(inta[],intn)

{

inti,j,itmp;

for(i=0;i

{

for(j=i+1;j

{

if(a[i]>=a[j])

{

itmp=a[j];

a[j]=a[i];

a[i]=itmp;

}

}

}

}

intmain(intargc,char**argv)

{

intiguide[10]={0};

srand((unsigned)time(NULL));

for(inti=0;i<8;i++)

{

intisum=0;

for(intj=0;j<10;j++)

{

iguide[j]=rand()%10+1;

}

bubble_sort(iguide,10);

for(intl=1;l<=8;l++)

{

isum+=iguide[l];

}

printf("Theavgscorethe%dsingergetis%d\n",i+1,isum/8);

}

return0;

}

$

(2)有N个评委进行打分,求M个选手每个人的平均得分(去掉一个最高分和一个最低分),并按平均得分由高到低排序输出。

#5、输入N个整数,使用选择排序,将数据由大到小输出。

#include<>.5f出大于m并且紧随m的n个素数,并存入数组中,输出,m和n从键盘输入。

4.将一个数组中的值按逆序重新存放。

#include<>

main()

{

inta[5],i,temp;/*定义数组及变量为基本整型*/

printf("pleaseinputarraya:

\n");

for(i=0;i<5;i++)/*逐个输入数组元素*/

scanf("%d",&a[i]);

printf("arraya:

\n");

for(i=0;i<5;i++)/*将数组中的元素逐个输出*/

printf("%d",a[i]);

printf("\n");

for(i=0;i<2;i++)/*将数组中元素的前后位置互换*/

{

temp=a[i];/*元素位置互换的过程借助中间变量temp*/

a[i]=a[4-i];

a[4-i]=temp;

}

printf("Nowarraya:

\n");

for(i=0;i

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1