第五单元单元总结与心得体会

一.知识点

1.数组:数组就是一组相同类型的变量,它们往往都是为了表示同一批对象的统一属性。
2. 一维数组:(1) 格式类型标识符 数组名【常量表达式】
(2)定义:一维数组的的三种定义方式:
1. 数据类型 数组名[数组长度]
2. 数据类型 数组名[数组长度] = {值1, 值2, 值3}
3. 数组类型 数组名[] = {值1, 值2, 值3…}
(3)元素引用:引用格式为“数组名【下标】”不能一次引用整个数组,只能逐个引用数组的单个元素。
(4)存储结构:整个数组所占的内存大小等于数组元素类型的大小乘以数组元素的个数
提供sizeof函数,可以直接求出一个数组所占的内存空间
(5)输入和输出:批量数据一次性输入到一维数组中的方法
键盘读入

`int h[100]                                                              
for(i=0;i<100;i++)cin>>h[i]

直接赋值

int h[100],a[20];
for(i=0;i<100;i++)h[i]=0
for(i=0;i<20;i++)a[i]=1*2+1

还可以使用memset函数和fill函数对整体赋值
(6)插入删除:找到插入的位置(假设下标为X),将这个元素及其之后的所有元素依次往后移一位,再将 给定的元素插入到x处
(7)排序:选择排序.冒泡排序.插入排序
3.二维数组
(1)定义格式:类型标识符 数组名 [常量表达式1][常量表达式2]
(2)存储及元素引用:数组名[下标1][下标2]

cin>>h[3][1];h[3][1]=h[3][1]*2;cout<<h[3][1];

(3)数字方阵:就是一个行列数相等的二维数组,其中每个元素都是数字。解决方法是解析法和模拟法

二.重点及易错点


一维数组注意
. ①数组定义时i,方括号中的数或者表达式代表数组元素的个数,
如:int a[10]; 表示数组有10个元素,这10个元素的下标是0到9,引用的时候最大到9,但是定义时候一定要写为10
②方括号中的常量表达式可以是常量、常变量和符号常量,不能是变量。不能根据输出的大小定义数组,数组在定义时,大小必须被指定
二维数组注意
int a[3][4] 表示三行四列的数组,定义和引用同一维数组。
需要注意的是,元素存放方式是先存放行再存放列
数组常见问题举例
1.只有在定义数组是才能使用初始化,此后就不能使用了,也不能将一个数组赋给另一个数组

int cards[4] = { 3 , 6 , 8 , 10}; 正确  
int hands[4] ;                   正确   
hand[4] = {5 , 6 , 7 ,9};        错误   
hand = cards;                     错误  

2.sizeof运算符返回类型或数据对象的长度(单位为字节)。注意,如果将sizeof运算符用于数组名,得到的僵尸整个数组中的字节数。但如果将sizeof用于数组元素,则得到的将是元素的长度(单位为字节)。
3.经典例题:抽奖p146

#include<cstdio>
using namespace std;
int main(){
        int n,i,num,f,g[101];
        scanf("%d",&n);
        for(i=1;i<=n;i++)scanf("%d",&g[i]);
        scanf("%d,&num);
        f=0;
        for(i=0;i<=n;i++)
            if(g[i]==num){f=i;break;}
        printf("%d\n,f);
        return 0;
}

4.在数组中使用字符串:sizeof运算符指出整个数组的长度,但strlen()函数返回的是存储在数组中的字符串长度,而不是数组本身的长度。另外,strlen()只计算可见的字符,而不把空字符计算在内。
5.字符数组:gets函数用来输入一行字符串,仅以回车结束输入,gets没有限制读取的字符串长度,如果输入的字符串太长可能会导致溢出;scnaf读取时不能出现空格

#include<cstdio>
using namespace std;
int main(){
       char s1[20],s2[20];
       scanf("%s",s1);
       scanf("%s",s2);
       printf("%s\n",s1);
       printf("%s\n",s2);
       return 0;
}

6.数组初始化:
初始化数组时可省略等号;

int cards[4] { 3 , 6 , 8 , 10};   //ok

可不在大括号内包含任何东西,这将把所有的元素都设置为0;

int cards[4]={};    //所有元素都设置为0
double hands[] {};  //所有元素都设置为0

可以分行或者不分行初始化

int a[2][3] ={{1,2,3},{4,5,6}};    //分行初始化
int a[2][3]={1,2,3,4,5,6};         //不分行初始化

可以给数组中的部分元素初始化

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

三:心得体会

:数组这次专题组真是r让我明白了自己的不足和知识点的不会运用,虽然有时候上课也能听的明白老师的分析和解释,感觉对c++代码有较好的兴趣,同时会因为能够听懂感到很开心。但是一到自己写程序的时候就感到束手无策,不知道从哪儿分析,从哪儿下手,感觉思绪从各处而来,但是理不清的感觉。尽管自己在慢慢的去理解去学会怎么转换成计算机语言,怎么尝试从题目中找到切入点,怎样编出合理的程序。但是这经常换来的还是wrong answer,有时候,兴致来的时候可能编程到三点,真是越编程越兴奋,盼着ac的出现。希望自己在跟随老师好好的学习下,课下积极地练习下,通过自己的努力体会accept的喜悦感。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值