数组程序举例Word格式.docx
- 文档编号:14247600
- 上传时间:2022-10-20
- 格式:DOCX
- 页数:11
- 大小:36.93KB
数组程序举例Word格式.docx
《数组程序举例Word格式.docx》由会员分享,可在线阅读,更多相关《数组程序举例Word格式.docx(11页珍藏版)》请在冰豆网上搜索。
%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<
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个数*/
{
if(i%4==0)printf("
\n"
);
/*每输出4个数输出一个换行符*/
printf("
%16ld"
f[i]);
/*要注意长整型数据的输出格式控制符的写法*/
}
例3:
找一批数中的最大值
inti,max,a[10];
input10numbers:
//输入提示信息“请输入10个数”
for(i=0;
10;
i++)
scanf("
%d"
&
a[i]);
//输入10个数到数组中
max=a[0];
for(i=1;
if(a[i]>
max)max=a[i];
//从数组中找最大的数赋值给max
maxmum=%d\n"
max);
//输出max的值
8294563716
maxmum=9
例4:
冒泡法排序(从小到大排序)
思路:
将相邻两个数进行比较,将小的调到前头。
若n个数比较,要比较n-1趟,用j表示趟数,则第j趟要比较n-j次。
inta[11];
inti,j,t;
printf(“input10numbers:
\n”);
11;
scanf(“%d”,&
printf(“\n”);
for(j=1;
j<
j++)
for(i=1;
=10-j;
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)
printf(″%d″,a[i]);
printf(″\n″);
}/*程序结束*/
Input10numbers:
10481265-76100-45123
Thesortednumbers:
-76-4501481281265100123
本程序中,第一个for循环,是表示要循环的趟数,第二个for循环,是表示每一趟里面循环的次数。
例5:
有一个已经排好序的数组,今输入一个整数,要求按原来排序的规律将它插入数组中。
为了把一个数按大小插入已排好序的数组中,应首先确定排序是从大到小还是从小到大进行的。
假设排序是从大到小进行的,则可把欲插入的数与数组中各数逐个比较,当找到第一个比插入数小的元素i时,该元素之前即为插入位置。
然后从数组最后一个元素开始到该元素为止,逐个后移一个单元。
最后把插入数赋予元素i即可。
如果被插入数比所有的元素值都小则插入最后位置。
inti,j,p,q,s,n,a[11]={320,260,258,154,68,57,45,16,8,2};
=10;
%d"
/*先输出原始排好序的数据序列*/
printf("
\nInputanumber:
n);
/*输入一个数插入到序列中*/
if(n<
a[9])
a[10]=n;
else
{for(i=0;
if(n>
a[i])
{for(s=9;
s>
=i;
s--)
a[s+1]=a[s];
break;
a[i]=n;
\nresult:
for(i=0;
i++)/*输出结果*/
本程序首先输入要插入的整数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:
将一个二维数组行和列元素互换,存到另一个二维数组中。
例如:
程序如下:
voidmain()
{
inta[2][3]={{1,2,3},{4,5,6}};
intb[3][2],i,j;
printf(″arraya:
\n″);
=1;
for(j=0;
=2;
printf(″%5d″,a[i][j]);
运行结果如下:
b[j][i]=a[i][j];
printf(″\n″);
printf(″arrayb:
for(i=0;
=2;
for(j=0;
%5d″,b[i][j]);
}/*程序结束*/
例7:
有一个3×
4的矩阵,要求编程序求出其中值最大的那个元素的值,以及所在的行号和列号。
程序:
{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];
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
{
inti,j,a[N][N];
for(i=1;
N;
a[i][1]=1;
a[i][i]=1;
}
for(i=3;
for(j=2;
=i-1;
a[i][j]=a[i-1][j-1]+a[i-1][j];
{
for(j=1;
printf("
%6d"
a[i][j]);
}
printf("
字符数组及其应用
例9:
输出一个字符串
{charx[]={‘I’,‘‘,‘a’,‘m’,‘‘,‘a’,‘‘,‘b’,‘o’,‘y’};
inti;
printf(“%c”c[i]);
printf(“%\n”);
Iamaboy
例10:
输出一个钻石图形
{chardiamond[][5]={{′′,′′,′*′},{′′,′*′,′′,′*′},{′*′,′′,′′,′′,′*′},{′′,′*′,′′,′*′},{′′,′′,′*′}};
运行结果
*
**
**
inti,j;
5;
{for(j=0;
printf(″%c″,diamond[i][j]);
}
例11:
输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。
charstring[81];
/*定义一个字符型数组*/
inti,num=0,word=0;
/*定义几个整型常量,i用来控制循环次数,num表示单词个数,word相当于一个标志*/
charc;
/*定义一个字符型变量*/
gets(string);
/*获取用户输入的一句话,在这句话
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数组 程序 举例