C语言入门_数组知识点详解

举报
DS小龙哥 发表于 2024/01/31 14:25:00 2024/01/31
【摘要】 从最基础的数组定义规则说起,一步步带你弄明白怎么给数组分配空间,什么类型的数据能塞进这个“仓库”,以及仓库里每个“格子”——也就是数组下标的使用规则。聊聊数组里那些五花八门的数据类型,甭管你是喜欢整数、小数还是字符,数组都能给你安排得明明白白。而对这些数据进行替换、插入操作时的小心机和小技巧,保证你学了就能用上。

大家好,欢迎来到我的博客!又到一起捣鼓C语言那点儿“接地气”的小秘密了!这次咱要围炉夜话的主题是C语言中的数组,那个承载着大量数据、结构清晰的小天地。今天的文章就是要帮你把数组这块儿的“地基”打扎实喽!

从最基础的数组定义规则说起,一步步带你弄明白怎么给数组分配空间,什么类型的数据能塞进这个“仓库”,以及仓库里每个“格子”——也就是数组下标的使用规则。聊聊数组里那些五花八门的数据类型,甭管你是喜欢整数、小数还是字符,数组都能给你安排得明明白白。而对这些数据进行替换、插入操作时的小心机和小技巧,保证你学了就能用上。

再来说说输入输出,如何将一串数字或者字符串装填进数组,又怎样从数组中把它们原封不动或者按照特定格式导出,这都是编程日常中的必备技能。

当然少不了的是字符串在数组中的各种表现形式,从输入字符串到计算其长度,再到输出显示,这一系列操作可是绕不过去的坎儿。


当前文章复盘C语言的数组: 数组定义规则、数组空间类型、数组下标使用、数组存放的数据类型、数组数据替换、插入、输入、输出、字符串输入、输出、长度计算等等。

一、数组概念

数组是一个相同类型元素的集合。

定义数组语法:  <数据类型><数组名称>[数组的大小];
                 int          data   [100];

解释:

定义一个int类型数组名称是data,可以存放100int类型的数据,总大小字节: 100*4。

<数据类型> 可以填充那些参数?

基本数据类型(char 。。float、int。。。。。)、结构体数据类型、指针类型等。

数组概念说明

(1)[]称为下标符号,用来操作数组。比如: b=a[10]; //将a数组里第10个元素取出来赋值给b变量。

(2).访问数组时,下标的范围是从0开始。比如: int a[10]; 下标范围: 0~9

(3).数组在定义时,[]下标里填充的大小必须是常量。(C89标准) 比如: int a[b]; //错误 int a[10];

(4).数组只有在定义的时候,才可以整体赋值。比如: int a[10]={12,34,56,78,90};

(5).数组在定义的时候,如果赋了值,[]下标里可以不用指定大小。 比如: int a[]={12,34,56};

(6).数组在定义的时候,至少给一个下标赋了初始值,其他下标默认置为0。比如: int a[10]={0};

​
#include <stdio.h>
​
int main(void)
{
    int buff_i[10]={10,20,30}; //定义整数类型数组
    float buff_f[10]={10.123,20.123,30.123}; //定义浮点数类型数组
    char buff_c[10]="123456";//定义字符串类型数组,结尾多了一个结束符"\0"
    //说明: 在C语言里面没有专用字符串类型,字符串本身还是使用char类型定义。Qstring  Sting
    char buff[10]={'1','2','3','4'}; //定义字符类型数组
    
    int i;
    //打印整型
    for(i=0;i<10;i++)
    {
        printf("%d ",buff_i[i]);
    }
    printf("\n");
    
    //打印浮点类型
    for(i=0;i<10;i++)
    {
        printf("%f ",buff_f[i]);
    }
    printf("\n");
    
    //打印字符串
    printf("%s\n",buff_c);
    
    //打印字符类型
    for(i=0;i<10;i++)
    {
        printf("%c ",buff[i]);
    }
    printf("\n");
    
    return 0;
}

二、数组输入输出

#include <stdio.h>
​
//从键盘上录入一串数据,倒序输出
int main(void)
{
    int i;
    int buff[5];
    printf("请输入5个数据:");
    for(i=0;i<5;i++)
    {
        scanf("%d",&buff[i]); //从键盘上录入数据
    }
    
    for(i=5-1;i>=0;i--)
    {
        printf("%d ",buff[i]); //将数据打印到控制台终端
    }
    printf("\n");
    return 0;
}

三、数组的练习题目

(1). 从键盘上录入一串数据(整数),将数组里的10替换成66,并统计替换的数量。

​
#include <stdio.h>
int main(void)
{
    //将数组里的10替换成66,并统计替换的数量。
    int buff[10]={10,34,10,347,23,10,123,56,78,10};
    int i,cnt=0;
    for(i=0;i<10;i++)
    {
        if(buff[i]==10)
        {
            cnt++; //记录数量
            buff[i]=66;
        }
    }
    
    printf("替换的数量%d\n",cnt);
    for(i=0;i<10;i++)
    {
        printf("%d ",buff[i]);
    }
    printf("\n");
    return 0;
}

(2) 计算数组的大小

int main(void)
{
    int buff[]={10,34,10,347,23,10,123,56,78,10,45,10,10};
    //34,347,23,123,56,78
    int len=10;
    
    printf("buff数组的总大小=%d\n",sizeof(buff));
    printf("buff数组有%d个成员\n",sizeof(buff)/sizeof(buff[0]));
    return 0;
}

(3)从键盘上输入一串数据(整数),将数组里大于10的数据删除掉。

//比如: char buff[]={12,34,8,4,7,100};
//最终的结果:{8,4,7,0,0,0}
#include <stdio.h>
​
/*
从键盘上输入一串数据(整数),将数组里大于10的数据删除掉。
*/
int main(void)
{
    int buff[13]={1,34,2,347,23,3,123,56,78,4,45,5,6};
    int len=13;
    int i,j;
    for(i=0;i<len;i++)
    {
        if(buff[i]>10) //当if条件成立的时候,i就是当前需要覆盖数据下标
        {
            //将后面的所有数据向前移动一位
            for(j=i;j<len-1;j++)
            {
                buff[j]=buff[j+1];
            }
            i--; //继续判断上一次的位置,是否需要删除
            len--; //总长度--
        }
    }
    
    printf("删除之后的数据:");
    for(i=0;i<len;i++)
    {
        printf("%d ",buff[i]);
    }
    printf("\n");
    return 0;
}

四、字符串

(1)字符串大小计算示例

    char str1[]={'A','B','c'}; //3
    char str2[]="ABC"; //4
    printf("str1=%d\n",sizeof(str1)); //3
    printf("str2=%d\n",sizeof(str2)); //4
    //为什么是4 ?因为字符串结尾自带一个'\0'
     // '\0'表示是字符串的结束符号

(2)字符串的长度计算

#include <stdio.h>
int main(void)
{
    char str[100];
    //字符串如何从键盘上录入?
    scanf("%s",str); //从键盘上录入一个字符串
               //str为什么不加&符号? 因为数组的名称就是地址(表示是数组首地址)。
    
    //字符串如何输出?
    printf("str=%s\n",str);
    
    //如何知道从键盘上输入了多少个字符?
    //首先得知道一点:  字符串结尾符'\0' 字符
    int i=0;
    while(str[i]!='\0') //判断字符串的结束符
    {
        i++;
    }
    
    printf("字符串的长度=%d\n",i);
    return 0;
}

(3)字符串的衔接符号

#include <stdio.h>
int main(void)
{
	char str[100]="3847tr45gt\  //  \表示字符串的衔接符号
				  rhonrbngfbn\
				  gf";
	return 0;
}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。