您的位置:首页 > 其它

013day(学习有关一维数组的部分知识)

2017-10-23 20:46 218 查看
172210704111-陈国佳总结《2017年10月23日》【连续013天】

标题:学习有关一维数组的部分知识

内容:A.观看MOOC5.1,5.2,5.3,5.4;

           B.(a).通过观看5.1,学习了数组的定义,数组是可以用来表达类型相同的元素的集合,集合名就是数组名。数组里元素的编号叫下标,

定义方法 类型名 数组名[元素个数];(元素个数(数组的长度)必须是常量或常量表达式且为正整数);T a[ N ],(T为类型名)a数组占用大小为N*sizeof(T)。

数组下标一般是0~N-1,若数组a的地址为p,则变量a[i]的地址就是p+i*sizeof(T);

输入10个整数,输出它们的倒序(运用数组);

using namespace std;

#define NUM 10 //使用常量符号便于修改

int a[NUM];//数组一般不要定义在main中,尤其是大数组;

int main ()

{

    for(int i=0;i<NUM;++i)
 cin>>a[i];
for(int i=NUM-1;i>=0;--i)
 cout<<a[i]<<" ";
return 0;

}输入1 2 3 4 5 6 7 8 9 8,输出8 9 8 7 6 5 4 3 2 1;

        (b).观看5.2,学习了筛法求n以内素数;

 #define MAX_NUM 20

char isPrime[MAX_NUM + 10];//+10可以防止数组越界;最终如果isPrime[i]为1,则i为素数; 

int main ()

{

    for(int i=2;i<=MAX_NUM;++i)
 isPrime[i] =1;
for(int i=2;i<=MAX_NUM;++i){ 

      if(isPrime[i])
    for(int j=2*i;j<=MAX_NUM; j+=i)
     isPrime[j] = 0;//将i的倍数标记为非素数;
}
for(int i=2;i<=MAX_NUM;++i)
   if(isPrime[i])
   cout<< i <<endl;  
return 0;

}输入20,输出2 3 5 7 11 13 17 19;

      (c).观看5.3,5.4;学习了数组初始化和数组越界;

数组初始化 类型名 数组名[常量表达式]={值,值………………};{ }中的数据技即是各元素的初值;

({ }中的值的数量可少于元素个数,未被赋值的元素自动赋0值;当给全部元素赋值时,[ ]中可不填)

通过部分程序了解了如何用数组取代复杂分支结构;

其一:输入1~7,输出"Monday"~"Sunday",其他情况输出“Illegal"

#include<iostream>

#include<string>//使用string必备的“头文件” 

using namespace std;

string weekdays[]={  //string是字符串类型

"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};

int main() 

{
int n;
cin>>n;
if(n>7 || n<1)
    cout<<"Illegal";

    else 

         cout<<weekdays[n-1];

    return 0;

}

数组越界即元素下标超出范围,但编译器不会报错,是经常出现的大BUG,可能会导致运行出错,元素下标可以是任何整数,导致了越界,

如:int a[10]; a[-2]=10;a[10]=100;可能会写入别的变量的内存空间,或者写入指令的内存空间;

明日计划:学习二维数组;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐