一维数组

认识一维数组

  • 多个普通变量的集合,并且这些变量的名字是有规律,内存是连续的
  • 不存在数组下标 = 数组长度
  • 数组计数从0开始
  • 数组最大下标是数组长度减1
  • 数组名的含义:整个数组的首地址

数组的创建与自动初始化

//数组的创建
//类型 数组名 [数组长度]
int iArr[5];
float fArr[8];
char cArr[3];
//数组初始化
//全部初始化
int iArr[5] = {1,3,4,5,6};
//部分初始化
int iArr[5] = {1,3,6}; //没有初始化的部分默认为0
//缺省数组长度,数组根据数组元素自动推断
int iArr[] = {1,3,6,5,2,8,9};
//别致的写法
int array['B'];   //等效    int array[66]
//错误写法一
int iArr[5];
iArr[5] = {1,3,4,5,6};
//错误写法二
int iArr[] = {};
//错误写法三
iArr[5] = {1,3,4,5,6,4,6};  //数组元素不能大于数组长度

数组的创建与手动初始化

int iArr[3]={0};
for(int i=0;i<3;i++)
{scanf("%d",&iArr[i]);    //i=0  scanf("%d",&iArr[0]) //i=1  scanf("%d",&iArr[1]) //i=2  scanf("%d",&iArr[2])
}
//错误写法
int  size=0;
scanf("%d",&size);
int array[size];         //数组长度必须是常量

数组的遍历(打印数组)

int iArr[3]={1,2,3};
for(int i=0;i<3;i++)
{printf("%d\t",iArr[i]);
}

字符数组

字符数组创建与初始化

  • 普通字符数组与数字类数组没啥区别

    char cArr[3]={'A','B','C','D'};   //只有在创建数组的时候初始化
    //错误写法
    cArr[3]={'A','B','C'};
    //输入
    for(int i=0;i<3;i++)
    {//scanf_s("%c",&cArr[i])scanf_s("%c",&cArr[i],1);
    }
    //输出
    for(int i=0;i<3;i++)
    {putchar(cArr[i]);//printf("%c",cArr[i]);
    }
    

字符串数组

  • 字符串结束标记 :‘\0’
  • 字符串的专有格式空字符: %s
  • %s工作机制: 从一个地址开始 访问到\0 结束 %s对应的是一个地址
char cArr[3]={'A','B','\0'};      //字符串
char cArr[3]="AB";                   //等效 char cArr[3]={"AB"};

字符串注意事项

  • %s 的方式只能打印字符串,不能打印字符数组,如果缺少’\0’ 将会打印乱码

  • 为了有效避免忘记加’\0’ 养成用空的字符串初始化一个字符数组,如

    char str[20]="";
    // char str[]=""; 错误写法
    
  • 字符串输入 scanf 遇到空格时候会截取当前字符,结束输入,

  • 也就是 带有空格的字符串输入要采用字符串处理函数: gets做输入,在其他编译中直接gets ,在vs中用的是:get_s(地址,长度); 与之对应的打印函数是:put_s(要打印的数组名);

  • 字符和字符串输入前,需要清空缓冲区

数组的常规操作

数字类型的数组

  • 数据处理

  • 充当计数器

     //统计数组元素出现的次数int num[] = { 1,2,3,4,2,3,1,2,4,5,6,5,4,5,7,6,7,8,8,9,7,9 };int nCount[10] = { 0 };for (int i = 0; i < 22; i++){nCount[num[i]]++;}for (int i = 0; i < 10; i++){if (nCount[i] != 0) {printf("%d 出现了 %d\n", i, nCount[i]);}}
    
    • 数组求和
    int iArr[3] = { 1, 2, 3 };int sum = 0;for (int i = 0; i < 3; i++) {sum += iArr[i];}printf("sum = %d\n", sum);
    
    • 数组有序插入

      printf("请输入:");scanf_s("%d", &temp);data[curSize++] = temp;for (int i = curSize - 1; i > 0; i--) {if (data[i] < data[i - 1]) {int temp = data[i];data[i] = data[i - 1];data[i - 1] = temp;}}
      
    • 数组元素删除

      printf("输入要删除的数据:");scanf_s("%d", &temp);for (int i = 0; i < curSize; i++) {if (temp == data[i]) {//printf("%d\t", i);pos = i;break;}}//所有数组的删除都是伪删除,数组内存是栈区内存for (int i = pos; i < curSize; i++) {//移位操作data[i] = data[i + 1];}break;
      
    • 数组 元素查找

      //查找printf("输入要查找找的数据:");scanf_s("%d", &temp);for (int i = 0; i < curSize; i++) {if (temp == data[i]) {printf("%d\t", i);}}printf("\n");
      
    • 数组元素更改

      //修改printf("输入要修改的数据:");scanf_s("%d", &temp);for (int i = 0; i < curSize; i++) {if (temp == data[i]) {//printf("%d\t", i);pos = i;break;}}//修改匹配到的数据printf("请输入新的数据:");scanf_s("%d",&temp);data[pos] = temp;printf("修改成功!\n");
      
    • 打印所有数组元素

      for (int i = 0; i < curSize; i++) {printf("%d\t", data[i]);}printf("\n");
      
  • 一维数组冒泡排序

    //冒泡排序int iArr[] = { 12,23,45,14,67,87,38,57,83,10 };int size = 10;for (int i = 0; i < size - 1; i++) //控制元素从第几个开始冒泡{for (int j = 0; j < size - 1 - i; j++)   //描述比较{//小----->大if (iArr[j] > iArr[j+1]){int temp = iArr[j];iArr[j] = iArr[j + 1];iArr[j + 1] = temp;}}}//打印数组for (int i = 0; i < size; i++){printf("%d\t", iArr[i]);}printf("\n");
    

字符类型的数组

  • 处理字符
  • 字符串处理
//数组计数功能功能char cStr[100] = "";gets_s(cStr, 100);//求输入的字符串的长度  可见长度int i = 0;while (cStr[i] != '\0')i++;printf("数组的长度是:%d", i);//统计输入的字符串中的字母,数字,其他符号的个数i = 0;int count[3] = {0};while (cStr[i] != '\0'){if (cStr[i] >= 'A' && cStr[i] <= 'Z') count[0]++;else if (cStr[i] >= 'a' && cStr[i] <= 'z')count[0]++;else if (cStr[i] >= '0' && cStr[i] <= '9')count[1]++;else count[2]++;i++;}printf("字母:%d,数字:%d,其他字符:%d\n", count[0], count[1], count[2]);

C语言基础知识之一维数组相关推荐

  1. java 数组 字符串 编程_Java语言基础知识之字符串数组

    Java语言基础知识之字符串数组 java语言中,数组是一种最简单的复合数据类型.数组是有序数据的集合,数组中的每个元素具有相同的数据类型,可以用一个统一的数组名和下标来唯一地确定数组中的元素.数组有 ...

  2. MATLAB 语言基础知识 矩阵和数组 创建、串联和扩展矩阵

    最基本的MATLAB数据结构体是矩阵.矩阵是按行和列排列的数据元素的二维矩形数组.元素可以是数字.逻辑值(true 或 false).日期和时间.字符串或者其他MATLAB数据类型. 即使一个数字也能 ...

  3. C语言基础知识-数组和字符串

    C语言基础知识-数组和字符串 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数组概述 在程序设计中,为了方便处理数据把具有相同类型的若干变量按有序形式组织起来的方式我们称为数组 ...

  4. C语言基础知识入门和C语言入门基础知识大全

    一.C语言基础知识入门 C语言一出现,就以其丰富的功能.强大的表达能力.灵活性.方便性和广泛的应用,在世界范围内迅速普及和普及.C语言不仅高效而且可移植.它可以用来开发应用软件.驱动程序.操作系统等. ...

  5. C语言输入Aa1Bb2Cc3,《C语言基础知识》PPT课件.ppt

    <C语言基础知识>PPT课件.ppt 1,数据结构与算法C语言的基础知识,2,主要内容,C语言简介数据类型与声明运算符与表达式数组指针结构体,3,简单的C语言源程序,#includestd ...

  6. C语言基础知识总结大全(建议收藏)

    前言:C语言是当代人学习及生活中的必备基础知识,应用十分广泛,下面为大家带来C语言基础知识梳理总结,C语言零基础入门绝对不是天方夜谭! 1 算法结构 一.顺序结构.选择结构.循环结构:二.循环结构又分 ...

  7. 2023年C语言基础知识入门(大全)

    一.C语言基础知识入门 C语言一经出现就以其功能丰富.表达能力强.灵活方便.应用面广等特点迅速在全世界普及和推广.C语言不但执行效率高而且可移植性好,可以用来开发应用软件.驱动.操作系统等.C语言也是 ...

  8. C语言基础知识入门(大全详解)

    一.C语言基础知识入门 C语言一经出现就以其功能丰富.表达能力强.灵活方便.应用面广等特点迅速在全世界普及和推广.C语言不但执行效率高而且可移植性好,可以用来开发应用软件.驱动.操作系统等.C语言也是 ...

  9. C语言基础知识入门【2022】

    一.C语言基础知识入门前言 C语言一经出现就以其特点迅速在全世界普及和推广.C语言不但执行效率高而且可移植性好,可以用来开发应用软件.驱动.操作系统等,也是其它众多高级编程语言的鼻祖语言,所以说学习C ...

最新文章

  1. IBM推出127量子比特处理器,超越谷歌和中科大
  2. 聊一聊:请假不想说真实原因,你都怎么跟领导讲?
  3. VC中的#pragma指令的用法
  4. c++ primer随笔
  5. A/B Problem
  6. sql 中WHERE字句中使用case when then
  7. C#程序实现鼠标移动
  8. 做好ToB运营:避开4个误区和掌握3个获客方式
  9. ios、iphone越狱获取系统文件权限
  10. html 设置div背景颜色,CSS设置网页背景颜色技术教程篇
  11. UESTC 1633 去年春恨却来时,落花人独立,微雨燕双飞 Dijkstra+构造
  12. 攀升笔记本电脑P1X Deepin20.3安装 RTL8821CE RTL8152无线网卡驱动
  13. Firefly+AS3回合RPG网页游戏源码《烽烟OL》v1.6正式推出
  14. 微信如何将聊天记录输出html或pdf
  15. 数字信号处理中,系统函数零极点图的绘制
  16. 使用Windows10搭建服务器 ——一次虚拟机实验记录
  17. 用C语言写一个简单的俄罗斯方块(基于Windows窗口编程)
  18. Java_Java多线程_Java线程池核心参数 与 手动创建线程池
  19. visual stdio 2015社区版、专业版的下载
  20. NASA12.5米高程DEM下载与5米等高线的提取方法

热门文章

  1. python基础教学(超详细)
  2. 计算机网络功能中的提高系统的可靠性指的是,计算机网络知识:计算机网络的功能...
  3. vue从搭建到打包发布 | 第一篇:前言及环境准备
  4. Python手工实现朴素贝叶斯分类及预测
  5. linux上备份sybase,Linux平台下Sybase数据库备份的方法分析
  6. 又是一年毕业季,分享自己在大学里的小打小闹经历
  7. 【致远FAQ】AWE进程占用内存较大
  8. 电商业务梳理2-导购
  9. 我去!CSDN还有这宝贝——CSDN浏览器插件深度评测
  10. 与豆瓣网杨勃聊天(续)