数组程序举例Word下载.docx

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

数组程序举例Word下载.docx

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

数组程序举例Word下载.docx

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

Fibonacci数列:

 F1= 1ﻩn=1

ﻩ       F2 =1ﻩ n =2

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

即:

11ﻩﻩ2ﻩ3ﻩﻩ5ﻩ8ﻩ13ﻩ。

#include〈stdio、h>

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(”input 10 numbers:

\n");

//输入提示信息“请输入10个数”

 for(i=0;

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得值

运行结果:

input10 numbers:

829 456371 6 

maxmum=9

例4:

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

思路:

将相邻两个数进行比较,将小得调到前头.若n个数比较,要比较n-1趟,用j表示趟数,则第j趟要比较n—j次。

inta[11];

 inti,j,t;

 printf(“input10 numbers:

\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:

104812 65 —76100—45123

Thesortednumbers:

-76-4501 4812 812 65100123

本程序中,第一个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(”\nInput a number:

\n”);

 scanf(”%d”,&

n);

  /*输入一个数插入到序列中*/

if(n〈a[9])

a[10]=n;

else

{for(i=0;

i〈10;

  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

 

 

6

例6:

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

例如:

程序如下:

#include<stdio、h〉

voidmain()

{

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

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

  printf(″arraya:

\n″);

 for (i=0;

i〈=1;

 {

   for(j=0;

=2;

j++)

    {       

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

运行结果如下:

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

 }

 printf(″\n″);

 }

printf(″arrayb:

\n″);

for(i=0;

=2;

i++)

 for(j=0;

j〈=1;

j++)

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

printf(″\n″);

}

}/*程序结束*/

例7:

有一个3×

4得矩阵,要求编程序求出其中值最大得那个元素得值,以及所在得行号与列号。

程序:

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

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

max=a[0][0];

 for(i=0;

=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

1 1

1  2 1

1331

146 41

1510101

.。

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

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

 (a+b)1展开后得系统数就是1 1ﻫ (a+b)2展开后得系数就是 121ﻫ  (a+b)3展开后得系数就是 1331

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

ﻫ 1、各行第一个数都就是1

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

 3、若用二维数组存放系数,每行存放一组,则从第二行开始除最后一个数与第一个数外,每个数都就是其所在行得上一行同一列与前一列之与.可以这样表示:

#defineN11

main()

 {

  int i,j,a[N][N];

for(i=1;

N;

 {

  a[i][1]=1;

  a[i][i]=1;

 for(i=3;

i〈N;

   for(j=2;

j<=i—1;

j++)

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

 for(i=1;

 {

  for(j=1;

j〈=i;

j++)

 printf(”%6d"

,a[i][j]);

  printf("

\n"

);

 printf(”\n"

字符数组及其应用

例9:

输出一个字符串

{charx[]={‘I'

‘‘,‘a’,‘m’, ‘‘,‘a’,‘‘, ‘b’,‘o'

‘y’};

inti;

for(i=0;

i〈10;

printf(“%c"

c[i]);

printf(“%\n”);

I ama boy

例10:

输出一个钻石图形

#include<

stdio、h>

void main()

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

运行结果

*

**

**

 int i,j;

  for (i=0;

i〈5;

 {for(j=0;

j〈5;

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

   printf(″\n″);

}

例11:

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

#include<

stdio、h〉

voidmain()

char string[81];

/*定义一个字符型数组*/

inti,num=0,word=0;

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

charc;

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

gets(string);

  /*获取用户输入得一句话,在这句话得末尾系统会自动添加一个结束标志’\0’*/

for (i=0;

(c=string[i])!

=′\0′;

i++)/*从string[0]开始判断,只要它不就是结束标志,就执行下面得语句*/

if(c==′ ′)word=0;

 /*判断当前字符就是不就是空格,比如I amaboy,第一个I不就是空格,所以就不执行word=0,而执行下一句*/

 else if(word==0)   /*判断word就是不就是等于0(word=0表示把0赋给word,word==0表示判断word等不等于0),显然就是得,因为开始时赋给word得值就是0*/

{ word=1;

 /*所以执行语句:

“把1赋给word;

num++"

此时num为1。

*/

 num++;

printf(″Thereare%dwordsinthe

  line、\n″,num);

   }

运行情况如下:

I amaboy、↙

Thereare4 wordsintheline、

总结:

可以瞧出word得目得就就是防止num重复相加。

例12:

有3个字符串,要求找出其中最大者、

#include〈stdio、h>

#include〈string、h>

voidmain ()

charstring[20];

charstr[3][20];

  inti;

for (i=0;

i〈3;

gets(str[i]);

if(strcmp(str[0],str[1])>0)

   strcpy(string,str[0])

  elsestrcpy(string,str[1]);

if(strcmp(str[2],string)>0)

 strcpy(string,str[2]);

printf(″\nthelargeststringis∶

 \n%s\n″,string);

运行结果如下:

CHINA↙

HOLLAND↙

AMERICA↙

thelargeststringis∶

HOLLAND

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

当前位置:首页 > PPT模板 > 中国风

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

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