数组程序举例.docx

上传人:b****2 文档编号:1330359 上传时间:2022-10-20 格式:DOCX 页数:11 大小:36.93KB
下载 相关 举报
数组程序举例.docx_第1页
第1页 / 共11页
数组程序举例.docx_第2页
第2页 / 共11页
数组程序举例.docx_第3页
第3页 / 共11页
数组程序举例.docx_第4页
第4页 / 共11页
数组程序举例.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

数组程序举例.docx

《数组程序举例.docx》由会员分享,可在线阅读,更多相关《数组程序举例.docx(11页珍藏版)》请在冰豆网上搜索。

数组程序举例.docx

数组程序举例

•一个班学生的学习成绩

•一行文字

•一个矩阵

这些数据的特点是:

1.具有相同的数据类型

2.使用过程中需要保留原始数据

C语言为这些数据,提供了一种构造数据类型:

数组。

所谓数组就是一组具有相同数据类型的数据的有序集合。

一维数组及其应用

例1:

一维数组元素赋值及输出练习.

main()

{

inti,a[10];/*定义数组整型数组a,它含有十个元素。

*/

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

a[i]=i;/*通过for循环依次为数组a中的每个元素赋值。

*/

for(i=9;i>=0;i--)/*通过for循环依次输出数组a中的每个元素的值。

*/

printf("%3d",a[i]);/*请注意输出元素的顺序*/

}

运行结果:

9876543210

总结:

程序使a[0]到a[9]的值为0~9,然后按逆序输出。

例2:

用数组来处理求Fibonacci(菲波那契)数列问题,求出前40个数并以每行4个数输出。

Fibonacci数列:

F1=1n=1

F2=1n=2

Fn=Fn-1+Fn-2n≥3

即:

11235813。

#include

main()

{inti;

longf[40]={1,1};/*定义长整型数组f存放40个Fibonacci数,对第一个和第二个元素先赋初值1*/

for(i=2;i<40;i++)/*从第三个元素起分别利用前两个元素求和得到其值*/

f[i]=f[i-2]+f[i-1];

for(i=0;i<40;i++)/*利用循环依次输出40个数*/

{

if(i%4==0)printf("\n");/*每输出4个数输出一个换行符*/

printf("%16ld",f[i]);/*要注意长整型数据的输出格式控制符的写法*/

}

}

运行结果:

例3:

找一批数中的最大值

main()

{

inti,max,a[10];

printf("input10numbers:

\n");//输入提示信息“请输入10个数”

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

scanf("%d",&a[i]);//输入10个数到数组中

max=a[0];

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

if(a[i]>max)max=a[i];//从数组中找最大的数赋值给max

printf("maxmum=%d\n",max);//输出max的值

}

运行结果:

input10numbers:

8294563716

maxmum=9

例4:

冒泡法排序(从小到大排序)

思路:

将相邻两个数进行比较,将小的调到前头。

若n个数比较,要比较n-1趟,用j表示趟数,则第j趟要比较n-j次。

main()

{

inta[11];

inti,j,t;

printf(“input10numbers:

\n”);

for(i=1;i<11;i++)

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

printf(“\n”);

for(j=1;j<=9;j++)

for(i=1;i<=10-j;i++)

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

{t=a[i];a[i]=a[i+1];a[i+1]=t;}

Printf(“thesortednumbers:

\n”);

for(i=1;i<11;i)

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

printf(″\n″);

}/*程序结束*/

 

运行结果:

Input10numbers:

10481265-76100-45123

Thesortednumbers:

-76-4501481281265100123

本程序中,第一个for循环,是表示要循环的趟数,第二个for循环,是表示每一趟里面循环的次数。

例5:

有一个已经排好序的数组,今输入一个整数,要求按原来排序的规律将它插入数组中。

为了把一个数按大小插入已排好序的数组中,应首先确定排序是从大到小还是从小到大进行的。

假设排序是从大到小进行的,则可把欲插入的数与数组中各数逐个比较,当找到第一个比插入数小的元素i时,该元素之前即为插入位置。

然后从数组最后一个元素开始到该元素为止,逐个后移一个单元。

最后把插入数赋予元素i即可。

如果被插入数比所有的元素值都小则插入最后位置。

main()

{

inti,j,p,q,s,n,a[11]={320,260,258,154,68,57,45,16,8,2};

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

printf("%d",a[i]);/*先输出原始排好序的数据序列*/

printf("\nInputanumber:

\n");

scanf("%d",&n);/*输入一个数插入到序列中*/

if(n

a[10]=n;

else

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

if(n>a[i])

{for(s=9;s>=i;s--)

a[s+1]=a[s];

break;

}

a[i]=n;

}

printf("\nresult:

\n");

for(i=0;i<=10;i++)/*输出结果*/

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

printf("\n");

}

运行结果:

本程序首先输入要插入的整数n。

再用一个for语句把n和数组元素逐个比较,如果发现有n>a[i]时,则由一个内循环把i以后各元素值顺次后移一个单元。

后移应按照从后向前依次进行(从a[9]开始到a[i]为止)。

后移结束跳出外循环。

插入点为i,把n赋予a[i]即可。

如所有的元素均大于被插入数,则并未进行过后移工作。

此时i=10,结果是把n赋于a[10]。

最后一个循环输出插入数据后的数组各元素值。

二维数组及其应用

arraya:

123

456

arrayb:

14

25

   3 6

例6:

将一个二维数组行和列元素互换,存到另一个二维数组中。

例如:

 

程序如下:

#include

voidmain()

{

inta[2][3]={{1,2,3},{4,5,6}};

intb[3][2],i,j;

printf(″arraya:

\n″);

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

{

for(j=0;j<=2;j++)

{

printf(″%5d″,a[i][j]);

运行结果如下:

arraya:

123

456

arrayb:

14

25

   3 6

b[j][i]=a[i][j];

}

printf(″\n″);

}

printf(″arrayb:

\n″);

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

{

for(j=0;j<=1;j++)

printf("%5d″,b[i][j]);

printf(″\n″);

}

}/*程序结束*/

例7:

有一个3×4的矩阵,要求编程序求出其中值最大的那个元素的值,以及所在的行号和列号。

程序:

main()

{inti,j,row=0,colum=0,max;

 staticinta[3][4]={{1,2,3,4},{9,8,7,6},{–10,10,–5,2}}

 max=a[0][0];

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

 for(j=0;j<=3;j++)

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

    {max=a[i][j];

      row=i;

      colum=j;

     }

 printf("max=%d,row=%d,colum=%d\n",max,row,colum);

}

输出结果为:

max=10,row=2,colum=1

例8:

打印出以下的杨辉三角形(要求打印出10行)

1

11

121

1331

14641

1510101

 杨辉三角是(a+b)的n次幂的展开式系数,如:

(a+b)0展开后的系数是1

  (a+b)1展开后的系统数是11

  (a+b)2展开后的系数是121

  (a+b)3展开后的系数是1331

  从而我们得到杨辉三解的系数规律(指数为n):

  1、各行第一个数都是1

  2、各行最后一个数都是1

  3、若用二维数组存放系数,每行存放一组,则从第二行开始除最后一个数与第一个数外,每个数都是其所在行的上一行同一列与前一列之和。

可以这样表示:

 

#defineN11

main()

  {

  inti,j,a[N][N];

  for(i=1;i

  {

  a[i][1]=1;

  a[i][i]=1;

  }

  for(i=3;i

  for(j=2;j<=i-1;j++)

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

  for(i=1;i

  {

  for(j=1;j<=i;j++)

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

  printf("\n");

  }

 printf("\n");

}

字符数组及其应用

例9:

输出一个字符串

main()

{charx[]={‘I’,‘‘,‘a’,‘m’,‘‘,‘a’,‘‘,‘b’,‘o’,‘y’};

inti;

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

printf(“%c”c[i]);

printf(“%\n”);

}

运行结果:

Iamaboy

例10:

输出一个钻石图形

#include

voidmain()

{chardiamond[][5]={{′′,′′,′*′},{′′,′*′,′′,′*′},{′*′,′′,′′,′′,′*′},{′′,′*′,′′,′*′},{′′,′′,′*′}};

运行结果

*

**

**

**

*

inti,j;

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

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

printf(″%c″,diamond[i][j]);

printf(″\n″);}

}

例11:

输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。

程序如下:

#include

voidmain()

{

charstring[81];/*定义一个字符型数组*/

inti,num=0,word=0;/*定义几个整型常量,i用来控制循环次数,num表示单词个数,word相当于一个标志*/

charc;/*定义一个字符型变量*/

gets(string);/*获取用户输入的一句话,在这句话

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

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

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

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