[C语言]菜鸟的一些理解-数组1

数组的概念:数组的同一数据类型的许多数据元素按某种顺序排列在一起的集合,简单的来说  就是同一数据类型的集合。

为何需要数组:

假如我们要定义10个int型   int i,j,k,x,y,z,....  这样不是很麻烦,也不好管理。

一维数组:

一维数组是C语言中用来储存和处理一维序列数据的数据类型。组合使用数组名 和 数组下标[] 可以方便的访问数组的任意元素。

数组的定义:  数据类型  数组名[数组容量];
例1:
int array[5];//定义一个可以储存5个int型数据类型的数组

char c[2];//定义一个可以储存2个char型数据类型的数组

定义数值的需注意:数组容量必须是常量,这样编译器才可以成功为其分配内存。

数组的赋值:

1.int array[5] = {1,2,3,4,5};//其值要用逗号分开。

2.int array[5];//单独为其赋值。
array[0] = 1;
array[1] = 2;
.............
array[4] = 5;

3.int array[] = {1,2,3};//不为其定义数组容量,但是编译器会根据其元素的个数作为数组容量,当前有3个元素,那么该数组的容量是3。

4.int array[5] = {1,2,3};//只为数组的一部分赋值,剩余的编译器会初始化为零。

数组的访问:
通过下标访问数组中任意元素。
C/C++ code
?
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
 
int main(void)
{
    int array[5] = {1,2,3,4,5};
    int i = 0;
    for(i = 0;i < 5;++i)
        printf("%d\t",array[i]);
    printf("\n");
    return 0;
}

注意:数组的下标是从0开始计算。
课后题:

1.将10个数:1,2,5,6,7,34,67,22,56,76存于数组中,求出这10个数的平均数。

C/C++ code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
#include<stdio.h>
 
int main(void)
{
    int array[10] = {1,3,5,6,7,34,67,22,56,76};
    int i = 0;
    double m = 0;;
    for(i = 0;i < 10;++i)
        m = m + array[i];
    m = m / 10.0;
    printf("m = %lf\n",m);
    return 0;
}

2.用数组实现输出fibonacci数列的前20项,fibonacci数列 1,1,2,3,5,8.......
C/C++ code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
 
int main(void)
{
    int array[20] = {1,1};
    int i = 0,f = 0;
    for(i = 2;i < 20;++i)
        array[i] = array[i-1] + array[i-2];
    for(i = 0;i < 20;++i)
        printf("%d\t",array[i]);
    printf("\n");
    return 0;
}


3.在数组中查找一个数 
C/C++ code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
 
int main(void)
{
    int x = 0,i = 0;
    int array[10] = {2,5,1,7,0,10,6,8,90,30};
    for(i = 0;i < 10;++i)
        printf("%d\t",array[i]);
    printf("\n请输入你要查找的数:");
    scanf("%d",&x);
    for(i = 0;i < 10;++i)
    {
        if(x == array[i])
            break;
    }
    if(i == 10)
        printf("没有该数!!\n");
    else
        printf("查找成功!该数在第%d位!\n",i+1);
    return 0;
}


4.从键盘输入10个数,将这10个数从小到到排列输出至屏幕。 
C/C++ code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <stdio.h>
 
int main(void)
{
    int i = 0,j = 0,t = 0;
    int array[10] = {0};
    for(i = 0;i < 10;++i)
    {
        printf("请输入[%d]:",i);
        scanf("%d",&array[i]);
    }
    for(i = 0;i < 10;++i)
    {
        for(j = i + 1;j < 10;++j)
            if(array[i] > array[j])
            {
                t = array[i];
                array[i] = array[j];
                array[j] = t;
            }
    }
    for(i = 0;i < 10;++i)
        printf("%d\t",array[i]);
    printf("\n");
    return 0;
}


注意:访问越界数组的危险
C/C++ code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
 
int main(void)
{
    int i = 0;
    int array[5] = {1,2,3,4,5};
    for(i = 0;i < 5;++i)
        printf("%d\t",array[i]);
    printf("\n");
    /****************************
            越界访问 
     ****************************/
     for(i = 0;i < 7;++i)
        printf("%d\t",array[i]);//会输出两个垃圾数字, 
    printf("\n");
    return 0;
}

为什么会有两的垃圾数字,而不是没有。
我的理解是:
电脑上的内存给别的程序用过,当该结束时候留下的垃圾。(简单来说就是以前有人住过,他搬家了没把垃圾带走,房东(系统)也不打扫。)

如果我没有理解到或理解错误的,请指出,在此万分感谢!!
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值