目录
数组
字符串
数组
概念
数组是有序数据的集合。
数组中的每个元素属于同一个数据类型。
经过数组名和下标惟一肯定数组中的元素。
一维数组的定义
语法格式数组
数据类型 数组名[常量表达式]函数
例如:int arr[10]spa
表示定义了一个整型数组,数组名为a,数组中有10个元素。设计
数组的下标从0开始。3d
数组元素的引用code
C语言规定只能逐个引用数组元素二不能一次引用整个数组。orm
数组元素的的表示形式为: 数组名[下标]blog
示例:ci
输出结果:字符串
数组初始化
1.在定义数组时初始化
2.初始化部分元素值
输出
3.初始化所有元素值
初始化所有元素时候,能够不指定数组长度
4.全部元素初始化为0
输出
注意:只能限于初始化元素为0值。不然的话只是对第一个元素初始化。
示例
使用数组解决Fibonacci数列。
Fibonacci数列定义:数列由 0 和 1 开始,以后的系数由以前的两数相加。首几个斐波那契系数是:
0,1,1,2,3,5,8,13,21
输出结果:
二维数组的定义
语法格式
数组名[下标][下标]
二维数组的引用
同一维数组,经过数组名和下标肯定惟一的二维数组元素。
二维数组的初始化
1.分行初始化
输出:
2.所有初始化
3.部分元素初始化
输出:
4.初始化所有数据时候能够不指定第一维长度
示例
将一个二维数组行和列的元素互换,保持到另外一个二维数组中。
源码:
字符串
定义
C语言中没有定义字符串类型的数据,因此字符串是做为字符数组来处理的。字符数组的定义和使用同其余基本数据类型数组。
注意:字符数组中,C语言使用’\0’来结束一个字符串。若是一个数组包含1个以上的’\0’,则遇到第一个’\0’的时候输出结束。
使用字符串初始化字符数组
输出:
或者:
使用scanf函数接收信息初始化字符数组
注意,sacnf中,数组做为地址参数不须要添加”&”。
字符串处理函数
注意,字符串处理函数须要包含string.h文件。
例如:
#include
#include
puts()和gets()
语法格式:
puts(字符数组) :向终端输出字符串
gets(字符数组) :从中断获取字符串
示例:
strcat()
语法格式:
strcat(字符数组1,字符数组2)
做用:
把字符数组2链接到字符数组1后面,结果放在字符数组1中。
示例:
输出:
strcpy()和strncpy()
语法格式:
Strcpy(字符数组1,字符串2)
做用:
将字符串2复制到字符数组1中。
示例:
输出:
注意:
1.字符数组1必须写出数组名形式;字符串2能够是字符数组名,也能够是一个字符串常量。
2.C语言中,不能使用赋值语句将一个字符串常量或者字符数组直接赋值给一个字符数组,例如如下是错误的:
3.strncpy(字符数组1,字符串2,复制长度)能够指定字符串2中的前n个字符复制到字符数组1中。
strcmp()
语法格式
strcmp(字符串1,字符串2)
做用
比较字符串1和字符串2
比较规则:
两个字符串从左向右逐个字符比较(按照ASCII码值比较),直到出现’\0’为止。若是所有字符相同,则两个字符串相等;若出现不一样的字符,则以第一个不相同的字符的比较结果为准。
示例:
strlen()
语法格式
strlen(字符数组)
做用
测量字符数组的长度,不包括’\0’。
strlwr()和strupr()
语法格式
strlwr(字符串)和strupr(字符串)
做用
把字符串转换成小写(或者大写)。
strcspn()
语法格式
strcspn(字符串1,字符串2)
做用
查找字符串2在字符串1中的位置
示例
数据类型转换
头文件:#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;
}