return0;
}
第八课:
数组的使用方法
1.一维数组的声明与使用
什么是数组?
数目固定、类型相同的若干个变量的有序的集合。
为什么引入数组?
通过数组,可以方便地存储和处理许多同类型数据。
格式:
数据类型数组名[常量表达式];
例:
intscore[100];floatsalary[3];charname[4];
数组的存储特点:
在内存中占据一组连续的存储单元。
下标的取值范围:
0~数组元素个数-1
例:
intA[10]A的元素下标是从A[0]到A[9]
一维数组的初始化
例:
intarr[5]={9,8,7,6,5};
样例代码1.8.1:
一维数组的使用
用一维数组存放前20个斐波那契(Fibonacci)数并输出。
斐波那契数的第一和第二个数分别为0和1,从第三个开始,每个斐波那契数是前两个斐波那契数的和。
#include
usingnamespacestd;
intmain()
{
intfib[20]={0,1};//定义数组,并初始化
for(inti=2;i<20;i++)//通过循环依次访问数组元素
fib[i]=fib[i-1]+fib[i-2];//置当前元素为前两元素之和
for(inti=0;i<20;i++)//输出前20个斐波那契数
cout<return0;
}
样例代码1.8.2:
一维数组的使用
某学校有若干名学生参加了100米短跑测试,成绩分别为13.6、14.8、12.0、12.7、15.6、13.4、14.9、12.6秒,求出其中最快和最慢的成绩。
#include
usingnamespacestd;
intmain()
{
doublescore[]={13.6,14.8,12.0,//100米短跑成绩
12.7,15.6,13.4,14.9,12.6},
max=score[0],//记录当前最慢成绩
min=score[0];//记录当前最快成绩
intlen=sizeof(score)/sizeof(double);//计算数组大小
for(inti=1;iif(score[i]>max)max=score[i];
elseif(score[i]cout<<"最快成绩:
"<"<return0;
}
2.二维数组的声明与使用须知
二维数组的定义:
数据类型数组名[常量表达式1][常量表达式2]
例:
inta[3][4];floatdata[4][4];
理解二维数组:
二维数组可以看作一种特殊的一维数组,它的每个元素又是一个一维数组。
二维数组在内存中的存储:
按行存放。
二维数组使用
引用数组元素的一般形式:
数组名[行标][列标]
访问二维数组的每个元素,一般通过二重循环。
例如:
intx[2][3];
for(inti=0;i<2;i++)
for(intj=0;j<3;j++)
x[i][j]=i*3+j+1;
二维数组的初始化
分行给二维数组赋值。
inta[2][3]={{1,2,3},{4,5,6}};
去掉行的界限赋初值。
inta[2][3]={1,2,3,4,5,6};
如果对数组的全部元素都赋初值可以省略第一维的大小。
inta[][3]={1,2,3,4,5,6};
也可只对部分元素赋初值而省略第一维大小,但应分行赋初值。
intb[][4]={{3,3,3},{},{1,3}};
样例代码1.8.3:
二维数组的使用
某超市有4个连锁店,定义二维数组存放各店2006年各个季度的销售额,计算各店一年的销售总额。
#include
voidmain()
{
doublesales[4][5]={0};
for(inti=0;i<4;i++)
{
cout<<"输入第"<
";
for(intj=0;j<4;j++)
{
cin>>sales[i][j];
sales[i][4]+=sales[i][j];
}
}
cout<<"一季度\t二季度\t三季度\t四季度\t总额\n";
for(i=0;i<4;i++,cout<for(intj=0;j<5;j++)
cout<return0;
}
9)筛选法求素数
样例代码1.8.4:
筛选法求素数
算法思路:
所谓“筛选法”指的是“埃拉托色尼(Eratosthenes)筛法”。
他是古希腊的著名数学家。
他采取的方法是,在一张纸上写上1到100全部整数,然后逐个判断它们是否是素数,找出一个非素数,就把它挖掉,最后剩下的就是素数。
具体做法如下:
<1>先将1挖掉(因为1不是素数)。
<2>用2去除它后面的各个数,把能被2整除的数挖掉,即把2的倍数挖掉。
<3>用3去除它后面的各数,把3的倍数挖掉。
<4>分别用4、5…各数作为除数去除这些数以后的各数。
这个过程一直进行到在除数后面的数已全被挖掉为止。
例如找1~50的素数,要一直进行到除数为47为止(事实上,可以简化,如果需要找1~n范围内素数表,只需进行到除数为n^2(根号n),取其整数即可。
例如对1~50,只需进行到将50^2作为除数即可。
)
#include
#include
#include
usingnamespacestd;
intmain(){
intnum=100;
inta[101];
for(inti=0;i<=101;i++){
a[i]=i;
}
a[1]=0;
for(inti=2;ifor