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

本文介绍了数组的基础概念,包括数组的定义与初始化方法,并通过实例展示了数组的应用,如倒序输出整数序列、筛法求素数及用数组实现星期查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

《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;可能会写入别的变量的内存空间,或者写入指令的内存空间;

明日计划:学习二维数组;

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值