c语言字符串hash数组索引,C05 C语言字符串和数组

目录

数组

字符串

数组

概念

数组是有序数据的集合。

数组中的每个元素属于同一个数据类型。

经过数组名和下标惟一肯定数组中的元素。

一维数组的定义

语法格式数组

数据类型   数组名[常量表达式]函数

例如:int  arr[10]spa

表示定义了一个整型数组,数组名为a,数组中有10个元素。设计

数组的下标从0开始。3d

数组元素的引用code

C语言规定只能逐个引用数组元素二不能一次引用整个数组。orm

数组元素的的表示形式为: 数组名[下标]blog

示例:ci

6e833c2418e42ddde2f8e55c26d86719.png

输出结果:字符串

461e522917a4fcc12accfc8e7b625295.png

数组初始化

1.在定义数组时初始化

bd3d80ea9c85a578627af0c08b1c4db4.png

2.初始化部分元素值

42df0a82a51fa99c7af0568c93ac0e78.png

输出

767b72458dc62ecfaa36dc2e3aadbb72.png

3.初始化所有元素值

初始化所有元素时候,能够不指定数组长度

3b6f3cf9c1b24e7a2b817c7c7e18e35e.png

4.全部元素初始化为0

5721342d58ef3780abcbb50db1c6675a.png

输出

a848d58e57d6c6f908344819ff862666.png

注意:只能限于初始化元素为0值。不然的话只是对第一个元素初始化。

示例

使用数组解决Fibonacci数列。

Fibonacci数列定义:数列由 0 和 1 开始,以后的系数由以前的两数相加。首几个斐波那契系数是:

0,1,1,2,3,5,8,13,21

36315ab66c3ee1d6579413b0a87c4bce.png

输出结果:

00d617f1506b2311b0ea115ec1031caf.png

二维数组的定义

语法格式

数组名[下标][下标]

二维数组的引用

同一维数组,经过数组名和下标肯定惟一的二维数组元素。

二维数组的初始化

1.分行初始化

99db31261040753d57db7c9a6ad9f4fd.png

输出:

679f1819cb5630444ec8e9025d747cda.png

2.所有初始化

8cf1aba7b665c6731133fa19bc3d40f4.png

3.部分元素初始化

6f1b3d10f2d476d64b3673505cabb671.png

输出:

d86bb4353874bf9bb8a69abf7d542a2b.png

4.初始化所有数据时候能够不指定第一维长度

31ef2fde4049cc45e6e1ecc7aa1aabc4.png

示例

将一个二维数组行和列的元素互换,保持到另外一个二维数组中。

a68946518dd0316a52d0a4fd0d2b7290.png

源码:

5cee23c81651f64c71cf307bd5491d3c.png

字符串

定义

C语言中没有定义字符串类型的数据,因此字符串是做为字符数组来处理的。字符数组的定义和使用同其余基本数据类型数组。

注意:字符数组中,C语言使用’\0’来结束一个字符串。若是一个数组包含1个以上的’\0’,则遇到第一个’\0’的时候输出结束。

使用字符串初始化字符数组

3c473f7a13447c1c96658e1f51af70be.png

输出:

d09bee356d3bae5b57563049639f3f59.png

或者:

ff3f6a7b3721f1652d22b919607480fd.png

使用scanf函数接收信息初始化字符数组

b577aaf6c7a718aeb44af8868234fdc0.png

注意,sacnf中,数组做为地址参数不须要添加”&”。

字符串处理函数

注意,字符串处理函数须要包含string.h文件。

例如:

#include

#include

puts()和gets()

语法格式:

puts(字符数组) :向终端输出字符串

gets(字符数组) :从中断获取字符串

示例:

e50861e6c5ebc30e0645ab2f44876c10.png

strcat()

语法格式:

strcat(字符数组1,字符数组2)

做用:

把字符数组2链接到字符数组1后面,结果放在字符数组1中。

示例:

220ec6b0dd8d35b0c14f6ab8cd54e809.png

输出:

786acd8774d4923a8c6a69a3d36907df.png

strcpy()和strncpy()

语法格式:

Strcpy(字符数组1,字符串2)

做用:

将字符串2复制到字符数组1中。

示例:

ef74aba11106f565f5e48ef1d4d80fbf.png

输出:

7aad4389687846373ce1d92aaf52c715.png

注意:

1.字符数组1必须写出数组名形式;字符串2能够是字符数组名,也能够是一个字符串常量。

2.C语言中,不能使用赋值语句将一个字符串常量或者字符数组直接赋值给一个字符数组,例如如下是错误的:

dc40eb6b7d0c7f3e6deee90cca6de1bd.png

3.strncpy(字符数组1,字符串2,复制长度)能够指定字符串2中的前n个字符复制到字符数组1中。

strcmp()

语法格式

strcmp(字符串1,字符串2)

做用

比较字符串1和字符串2

比较规则:

两个字符串从左向右逐个字符比较(按照ASCII码值比较),直到出现’\0’为止。若是所有字符相同,则两个字符串相等;若出现不一样的字符,则以第一个不相同的字符的比较结果为准。

示例:

092175ef2178724a2e53e43531826ce6.png

strlen()

语法格式

strlen(字符数组)

做用

测量字符数组的长度,不包括’\0’。

strlwr()和strupr()

语法格式

strlwr(字符串)和strupr(字符串)

做用

把字符串转换成小写(或者大写)。

strcspn()

语法格式

strcspn(字符串1,字符串2)

做用

查找字符串2在字符串1中的位置

示例

aaab46c0cb6026ef91dc8f1c6fcfe2c1.png

数据类型转换

头文件:#include

sprintf()函数用于将格式化的数据写入字符串,其原型为:

int sprintf(char *str, char * format [, argument, ...]);

示例代码:

sprintf(s, "%d", 123); //把整数123打印成一个字符串保存在s中

sprintf(s, "%8x", 4567); //小写16进制,宽度占8个位置,右对齐

上机练习

需求描述:设计一个字符二维数组,用来存储学生信息,学生信息包括:学号,姓名、性别(男或者女)、年龄、电话、地址。

提示:二维数组定义 students[10][300],从控制台接收学生信息保持到二维数组,从数组读取学生信息,显示到控制台。

提示代码:

#include

#include

int main()

{

int i;//循环变量

char i_temp[30];//整数转换字符数组临时变量

char stu_temp[300];//学生信息临时数组

char list[10][300];//学生信息数组

char tag[]="$";

//初始化两个学生

strcpy(list[0],"1001$张三$男$23$13122224444$厦门");

strcpy(list[1],"1002$李四$女$21$13322224444$福州");

//从控制台输入学生信息

int id;

char name[50];

char gender[3];

int age;

char tel[14];

char address[50];

printf("请输入学号:");

scanf("%d",&id);

sprintf(i_temp,"%d",id);//学号转成字符数组

strcpy(stu_temp,i_temp);

strcat(stu_temp,tag);

printf("请输入姓名:");

scanf("%s",name);

strcat(stu_temp,name);

strcat(stu_temp,tag);

printf("请输入性别:");

scanf("%s",gender);

strcat(stu_temp,gender);

strcat(stu_temp,tag);

printf("请输入年龄:");

scanf("%d",&age);

sprintf(i_temp,"%d",age);//年龄转成字符数组

strcat(stu_temp,i_temp);

strcat(stu_temp,tag);

printf("请输入电话:");

scanf("%s",tel);

strcat(stu_temp,tel);

strcat(stu_temp,tag);

printf("请输入地址:");

scanf("%s",address);

strcat(stu_temp,address);

strcat(stu_temp,tag);

strcpy(list[2],stu_temp);

//输出学生信息

char temp[300];//临时变量

for(i=0;i<3;i++){

strcpy(temp,list[i]);

int length=strlen(temp);

for(int j=0;j

if(temp[j]=='$'){

temp[j]='\t';//使用制表符'\t'替换'$'

}

}

printf("%s\n",temp);

}

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值