【某华某清就业班笔记吐血整理】:C基础 DAY6 C编程基础

【1】数组

1. 概念:具有一定顺序的若干变量的集合

2. 定义格式:

存储类型 数据类型 数组名[元素个数];

                         int      arr     [5];

数组名:代表数组的首地址,地址常量,不能为左值

访问元素:数组名[下标], 下标从0开始,到n-1;

                                      // 数组越界问题需要注意!!!

3. 特点:

1)数据类型相同

2)内存连续

4. 注意:

1. 数组的类型就是数组元素的数据类型

2. 数组名符合标识符命名规则

3. 同一个函数中,数组名不能和其他变量名相同

4. 【】下标从0开始到n-1结束


一维数组

1.格式:存储类型 数据类型 数组名[元素个数];

int arr[5];

数组名:代表数组的首地址,地址常量,不能为左值

访问元素:数组名[下标], 下标从0开始,到n-1;

数组越界问题需要注意!!!

2.初始化:

1)全部初始化:

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

2)部分初始化:未被赋初值的元素值为0

int a[5]={1,2,3};//1 2 3 0 0

3)未初始化:只能单个赋值,未被赋初值的元素值为随机值

int a[5];

a[0]=1;

a[2]=3;//1 随机 3 随机 随机

定义空数组:

int a[5]={0,0,0,0,0};

int a[5]={0};

int a[5]={};

3.引用

1)先定义向后引用

2)每次只能引用数组的一个元素a[i],如果想要引用所有元素,可以for循环遍历

3)防止数组越界

4)打印数组元素地址,%p

4.内存分配

5. 数组遍历

        for循环,把元素下标作为循环变量,循环范围就是0~n-1

6. 数组的大小

        sizeof(数组名)

        数据类型的大小*元素个数

练习:计算斐波那契数列前15项并逆序输出

1 1 2 3 5 8 13 21 .....

【2】清零函数

1.#include <strings.h>

        void bzero(void *s, size_t n);

        功能:将内存空间置零

        参数:s:要清空内存的首地址

        n:要清空字节数

        返回值:无

        例子:int a[5]={1,2,3,4,5};

        bzero(a,sizeof(a));//以地址a开始,将sizeof(a)个字节清空为0

2. #include <string.h>

        void *memset(void *s, int c, size_t n);

        功能:将内存空间设置为0

        参数:s:要清空内存的首地址

        c:要设置的值,0》》只能为0

        n:要清空字节数

        返回值:要清空内存的首地址

        例子:int a[5]={1,2,3,4,5};

        memset(a,0,sizeof(a));//以地址a开始,将sizeof(a)个字节设置为0

【3】字符数组

1. 存在三种形式

        1) char a[]={'a','b','c'};//sizeof(a)==3,单个字符赋值

        2) char b[]={"abc"};//sizeof(b)==4,字符串赋值

        3) char c[]="abc";//sizeof(c)==4,字符串赋值

        注意:字符串赋值经常容易忽略数组的长度,一定要注意数组越界!!!

2. 输入输出

        输入:char buf[32]={};

        1) scanf("%s",buf);//遇到空格或\n都会认为字符串输入完成,结束

                scanf("%[^\n]",buf);//直到遇到\n才会结束,字符串可以包含空格

        2) gets

                char *gets(char *s);

        功能:从终端获取字符串

        参数:s:目标数组的首地址

        返回值:同参数、

        //gets不会检查数组越界

        练习1:输入一串字符,计算其中空格个数

        输入一个字符串

        遍历字符数组

        判断每一个元素是否等于空格

        如果相等就变量+1

        打印变量的值

        输出:

                1) printf("%s",buf);//打印到\0为止

                2) puts

                int puts(const char *s);

        功能:向终端输出字符串

        参数:s:要输出字符串的首地址

        返回值:输出字符的个数(包括\0)

        例题:

        char s[10]={};

        判断对错:

        1) s[10]="hello";//错误,越界(除定义位置外,其余地方出现均为下标)

        2) s="hello";//错误,地址常量不能被赋值

        练习2:将一串字符串进行倒置,例如:char buf[32]=”hello”;//olleh

#include<stdio.h>
int main(int argc, char const *argv[])
{
    char buf[32]="hello";
    char t;
    int n,i;
    for(n=0;buf[n] != '\0';n++);//n==5,实际个数

    for(i=0;i<n/2;i++)//交换n/2次
    {
        t = buf[i];
        buf[i] = buf[n-1-i];
        buf[n-1-i] = t;
    }
    printf("%s\n",buf);

    return 0;
}

        计算字符串实际长度:

                1. 通过for循环,直到\0为止

                2. #include <string.h>

                size_t strlen(const char *s);

        功能:计算字符串实际长度,不计算\0

        参数:s:要计算的字符串首地址

        返回值:实际长度

        例如:char buf[32]="hello";

        int t = strlen(buf);//t == 5

       区分strlen和sizeof

        1. strlen是函数;sizeof是关键字

        2. strlen是用来计算字符串的实际长度;sizeof计算数据所占空间大小

        3. strlen不计算\0,sizeof计算\0,字符数组省略元素个数时,sizeof比strlen大1

        char a[]="hello";

        sizeof(a)=6

        strlen(a)=5

        char a[32]="hello";

        sizeof(a)=32

        strlen(a)=5

作业:

1. 在终端输入大写字母、小写字母、空格、数字,分别在终端输出他们的个数

2. 编写一个程序,找出1000以内所有的完数,所谓完数就是一个数恰好等于它的因子之和,

例如6=1+2+3,6就是一个完数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值