C语言——一维数组与字符数组

数组

定义:由一个或多个相同类型数据组成的集合

特点:内存连续,相同数据类型

1.一维数组

(1)格式

存储类型

数据类型

数组名【元素个数】

int

arr[5]

(2)数据类型为char时

若直接输入数据为字符,输出%c为字符,若输入数据为字符的ASCII码值,输出%c为字符,输出%d为十进制码值

(3)注意

  • arr[0] arr[1]...只有定义数组时,[]里面表示的是元素个数,其他时候都是表示索引
  • 数组名也是数组首地址,是地址常量,不能被重新修改,也就是不能在等号左边

(4)数组大小

一个int整型占四个字节

可以使用sizeof(arr)查看数组大小

(5)初始化

1)全部初始化

int arr[5]={97,98,99,100,101};

2)部分初始化(用的比较多,可利用for循环赋值)

未赋值的值为0

①int arr[30]={97,98};

②int arr[30]={};

3)未初始化

未初始化的值为随机值

int arr[30];

arr[0]=5;

arr[1]=6;//循环遍历

补充:对于一位数组a正确的声明包括

#define SIZE 10

int a[SIZE];

部分初始化例程

#include <stdio.h>
int main(int argc, char const *argv[])
{
    int arr[5] = {};
    for (int i = 0; i < 5; i++)
    {
        scanf("%d", &arr[i]);
    }
    for (int i = 0; i < 5; i++)
    {
        printf("%d\n", arr[i]);
    }
    return 0;
}
#include <stdio.h>
int main(int argc, char const *argv[])
{
    int a[15] = {1, 1};
    for (int i = 2; i < 15; i++)
    {
        a[i] = a[i - 1] + a[i - 2];
    }
    for (int i = 0; i < 15; i++)
    {
        printf("%d\n", a[i]);
    }
    return 0;
}
#include <stdio.h>
int main(int argc, char const *argv[])
{
    int a[8] = {};
    for (int i = 0; i < 8; i++)
    {
        scanf("%d", &a[i]);
    }
    int min = a[1];
    int max = a[7];
    for (int i = 0; i < 8; i++)
    {
        if (max < a[i])
        {
            max = a[i];
        }
        if (min > a[i])
        {
            min = a[i];
        }
    }
    int sum = 0;
    for (int i = 0; i < 8; i++)
    {
        sum += a[i];
    }
    sum -= (min + max);
    printf("最大值,最小值,平均分为%d %d %d\n", max, min, sum / 6);
    return 0;
}

(6)清零函数

bzero

头文件:#include <strings.h>

void bzero(void *s, size_t n);

功能:清空数组

参数:s:数组首地址;n:空间大小sizeof(arr)

返回值:无

memset

头文件:#include <string.h>

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

功能:把内存空间设置为0,清零

参数:s:数组首地址;c:要设置的值;n:空间大小sizeof(arr)

返回值:数组首地址

除了零以外的数,不好用,一个int占4个字节,memset赋值一个字节一个字节进行赋值,若想置一其实是四个0000 0001,因此不好用。

2.字符数组

用来存放字符串

(1)三种定义方式

  • char a[6] = {"hello"} 有多少用多少,提前想好
  • char b[] = "hello" 需要多少开辟多少
  • char c[33] = "hello" 直接开辟一大块来用

(2)输入输出 char str1[33]={};

输入:三种方式

1)for循环,里面的scanf为%d,有取地址符;

2)直接用scanf,里面为%s,无取地址符

scanf遇到空格或回车默认输入结束,如果需要支持空格,scanf("%[^\n]",str1);

3)gets

输出:三种方式

1)for

2)printf 里面为%s

3)puts

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值