首页 > 其他分享 >【C语言基础】数组

【C语言基础】数组

时间:2024-09-07 15:52:15浏览次数:6  
标签:字符 string 基础 C语言 数组名 数组 printf 字符串

1 一维数组

1.1 定义

类型说明符 数组名[常量表达式];

如:

int a[10];

这里,a是数组变量名,10表示数组a中包含的元素个数,int是数组a中元素的类型。数组a的元素序号为0,1,2,3,4,5,6,7,8,9,各序号对应的元素为a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]。

1.2 初始化

类型说明符 数组名[常量表达式]={数值1, 数值2, ..., 数值n};

  • 在定义数组时可以直接对全部数组元素进行初始化。如:int a[5] = {10, 20, 30, 40, 50};
  • 可以只给一部分元素赋初值。如:int a[5] = {10, 20};
  • 对全部数组元素赋初值时,可以不指定数组长度。如:int a[] = {10, 20, 30, 40, 50, 60, 70};

2 二维数组

1.1 定义

类型说明符 数组名[常量表达式 1][常量表达式 2];

  • 常量表达式 1:第一维下标的长度,即二维数组的行的长度;
  • 常量表达式 2:第二维下标的长度,即二维数组的列的长度;

如:

int a[4][5];

这里,数组名为a,a是一个4行5列的数组,a[1][2]表示的是a中第2行第3列的元素。

1.2 初始化

与一维数组一样,可以在定义的时候进行初始化。

二维数组初始化示例
示        例意        思
int a[2][3] = {10,20,30,40,50,60};

定义数组a,并进行全部赋值,数组a的元素以矩阵表示为:

int a[][3] = {10,20,30,40,50,60};定义数组a,并进行全部赋值。进行全总赋值时,行下标可省略。数组a的元素的矩阵表示同上。
int a[2][3] = {{10,20,30},{40,50,60}};

定义数组a,并进行全部赋值。此处为分行赋值。数组a的元素的矩阵表示同上。

int a[2][3] = {{10,20},{40,50}};

定义数组a,并进行分行部分赋值。数组a的元素以矩阵表示为:

int a[2][3];

a[0][0] = 10;

a[0][1] = 20;

定义了一个2行3列的数组a,对数组a的第1行第1列的元素赋值10,第1行第2列的元素赋值20。

3 字符数组

用来存放字符数据的数组称为字符数组,即char型数组。字符数组中的每个元素可以存放一个字符。

3.1 定义及初始化

字符数组的定义和初始化与其它类型的数组类似。以下为一些例子:

char a[12] = {'H','e','l','l','o',' ','w','o','r','l','d','!'};

char a[] = {'H','e','l','l','o',' ','w','o','r','l','d','!'};        //定义字符数组时进行初始化,可以省略长度

char a[] = {"Hello world!"};        //利用字符串给字符数组赋初值

char a[] = "Hello world!"        //利用字符串给字符数组赋初值

//先定义字符数组,再对数组中的元素赋值

char a[5];

a[0] = 'H';

a[1] = 'e';

a[2] = 'l';

a[3] = 'l';

a[4] = 'o';

C语言中,用字符数组保存字符串。由于字符串是以'\0'结尾的,所以当把一个字符串存入一个数组时,也把结束符'\0'存入了数组,并以此做为字符串结束的标志。系统会自动在字符串末尾为其添加'\0'作为结束符,不需要手动填写。

3.2 字符数组的输入和输出

3.2.1 %c - 字符数组中字符的逐个输入与输出

例:

#include <stdio.h>
main()
{
	int array[] = {'H','e','l','l','o',' ','w','o','r','l','d','!'};
	for (int i = 0; i < 12; i++)
		printf("%c", array[i]);
	printf("\n");

	int j;
	char a[10];
	printf("Please input sting:\n");
	for (j = 0; j < 10; j++)
		scanf("%c", &a[j]);
	printf("The input string is:\n");
	for (j = 0; j < 10; j++)
		printf("%c", a[j]);
	printf("\n");
}

运行结果:

这里在scanf输入数组a的元素值时,输入的字符长度需与数组a的长度一致,回车也为一个输入字符。

3.2.2 %s - 整个字符串依次输入与输出

例:

#include <stdio.h>
main()
{
	char a[10];
	printf("Please input sting:\n");
	scanf("%s", &a);
	printf("The input string is:\n");
	printf("%s\n", a);
}

运行结果:

3.3 字符串处理函数

字符串处理函数在头文件<string.h>中定义。

字符串处理函数
函数名格式功能
putsputs(字符数组名)字符串输出 。将字符数组中的字符串输出到终端。
getsgets(字符数组名)字符串输入。从终端输入一个字符串,并将该字符串赋值给字符数组。
strcatstrcat(字符数组名 1, 字符数组名 2)连接字符串。把字符数组名2的字符串连接到字符数组名1的字符串后面,并删去字符串1后的串结束标志'\0'。此函数返回值是字符数组名1的地址。
strcpystrcpy(字符数组名 1, 字符数组名 2)复制字符串。把字符数组名2的字符串复制到字符数组名1中,串结束标志'\0'也一同复制。
strcmpstrcmp(字符数组名 1, 字符数组名 2)

比较字符串。按照ASCII码顺序比较两个数组中的字符串,并由函数返回比较结果。

字符串 1 = 字符串 2,返回值为0;

字符串 1 > 字符串 2,返回值为一正数;

字符串 1 < 字符串 2,返回值为一负数;

注:

1) 在使用strcmp比较字符串时,字符串1和字符串2可以是字符数组,也可以是字符串常量;

2) 当两个字符串进行比较时,若出现不同的字符,则以第一个不同的字符的比较结果作为整个比较的结果。

strlenstrlen(字符数组名)字符串长度。测字符串的长度,不含字符串的结束标志'\0'。函数的返回值为字符串的实际长度。
strlwrstrlwr(字符串)小写字符串。将字符串转换成小写字母。
struprstrupr(字符串)大写字符串。将字符串转换成大写字母。

例:

#include <stdio.h>
#include <string.h>

main()
{
	char str1[100], str2[100];
	int num;
	printf("Input the first string:\n");
	gets(str1);
	printf("The first string is: ");
	puts(str1);
	num = strlen(str1);
	printf("The first string length is: %d\n", num);
	strlwr(str1);
	printf("Lower first string: %s\n", str1);
	strupr(str1);
	printf("Upper first string: %s\n", str1);

	printf("Input the second string:\n");
	gets(str2);
	printf("The second string is: ");
	puts(str2);
	num = strlen(str2);
	printf("The second string length is: %d\n", num);
	strlwr(str2);
	printf("Lower second string: %s\n", str2);
	strupr(str2);
	printf("Upper second string: %s\n", str2);

	printf("Compare the two strings: %d\n", strcmp(str1, str2));
	printf("Combine second string to first string\n");
	strcat(str1, str2);
	printf("--> first string: %s, second string: %s\n", str1, str2);
	printf("Copy second string to first string:\n");
	strcpy(str1, str2);
	printf("--> first string: %s, second string: %s\n", str1, str2);
}

运行结果:

标签:字符,string,基础,C语言,数组名,数组,printf,字符串
From: https://blog.csdn.net/weixin_46891908/article/details/141994785

相关文章

  • LeetCodeTest算法测试 传递一个数组和一个特定的目标整型数字,返回的两个数组元素相加
    1importjava.util.ArrayList;2importjava.util.List;34publicclassLeetCodeTest{5publicstaticvoidmain(String[]args){67int[]intArr=newint[]{2,7,11,15};8List<CustomerIntIndex>customerIntIndexL......
  • 718. 最长重复子数组(leetcode)
    https://leetcode.cn/problems/maximum-length-of-repeated-subarray/难点是在于状态定义,需要考虑到以第i个数为结尾,以第j个数为结尾的最长重复子数组这样的定义而递推就很简单,只需要发生重复时+1即可,和之前的一维的,即最长子数组一样classSolution{publicintfind......
  • 【零基础 快速学Java】韩顺平 零基础30天学会Java--- 常用类(2024JavaReview)
    包装类包装类的分类(针对八种基本数据类型相应的引用类型—包装类)(有了类的特点,就可以调用类中的方法)(实现了接口Serializable【String可以串行化:可以在网络传输】)(实现了接口Comparable[String对象可以比较大小])包装类和基本数据的转换(jdk5前的手动装箱和拆箱方式,jdk5以后(含j......
  • 【零基础 快速学Java】韩顺平 零基础30天学会Java--- 面向对象编程(中级部分)(2024Jav
    IDEA常用快捷键添加注释和取消注释ctrl+/【第一次是添加注释,第二次是取消注释】导入该行需要的类先配置autoimport,然后使用alt+enter即可快速格式化代码ctrl+alt+L生成构造器等alt+insert[提高开发效率]查看一个类的层级关系ctrl+H[学习继承后,非常有用]......
  • 【Python 千题 —— 基础篇】敏感词处理
    Python千题持续更新中……脑图地址......
  • 【Java 基础】:三大特征之多态
    ✨                         杏花疏影里,吹笛到天明    ......
  • [C#基础3] C#数据类型
    Notion原笔记页面1.数据类型上两图摘自刘铁猛的b站网课视频1.1文本值的定义文本值是一种永不更改的常量值。之前,你在“输出”控制台中显示了文本字符串。换句话说,你希望在“输出”控制台中显示由字母数字字符H、e、l、l和o等组成的字符串。1.2字符文本(char)与字......
  • C语言 ——— #define 定义宏
    目录何为宏宏的声明及其使用方式宏中的括号是否多余何为宏#define机制包括了一个规定,允许把参数替换到文本中,这种实现通常称宏宏的声明及其使用方式声明代码演示:#defineMAX(x,y)((x)>(y)?(x):(y))使用代码演示:inta=3;intb=5;intmax=MAX(a,b);代......
  • [C#基础1/21] C#概述
    Notion原笔记1.C#简介1.1C#定义C#在继承C和C++强大功能的同时去掉了一些它们的复杂特性,使其成为C语言家族中的一种高效强大的编程语言1.2C#用途用于捕获、分析和处理数据的业务应用程序可从Web浏览器访问的动态Web应用程序2D和3D游戏金融和科研应......
  • [C#基础2/21] C#注释与文件结构
    Notion原笔记页面1.注释C#支持两种不同形式的注释。单行注释以 // 开头,并在该代码行末尾结束。多行注释以 /* 开头,以 */ 结尾。下面的代码示例演示了每种注释://Thisisasinglelinecomment./*Thiscouldbeasummaryofallthecodethat'sinthiscl......