写点什么

C 语言总结 _ 数组知识

作者:DS小龙哥
  • 2022 年 4 月 27 日
  • 本文字数:2172 字

    阅读完需:约 7 分钟

当前文章复盘 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;}
复制代码


发布于: 刚刚阅读数: 2
用户头像

DS小龙哥

关注

之所以觉得累,是因为说的比做的多。 2022.01.06 加入

熟悉C/C++、51单片机、STM32、Linux应用开发、Linux驱动开发、音视频开发、QT开发. 目前已经完成的项目涉及音视频、物联网、智能家居、工业控制领域

评论

发布
暂无评论
C语言总结_数组知识_4月月更_DS小龙哥_InfoQ写作社区