字符串函数
使用字符串函数应在开头写上<string.h>头文件
strlen
size_t strlen(const char*s)
功能:计算字符串长度
字符串长度为结束标志'\0'前面的字符个数
参数:s //可以给的参数形式:a.数组名 b.字符串常量
返回值:字符串长度
eg:
#include<stdio.h>
#include<string.h>
int main()
{
char s[10]="hello"
int len;
len = strlen(s);
printf("%d",len);
}
strcpy
char *strcpy(char *dest,const char *src)
功能:复制字符串,将src中的字符串复制到dest
参数:src:源字符串 实参形式:a.一维字符型数组名 b.字符串常量
dest:目的字符串 实参形式:a.一维字符型数组名 b.字符串常量
eg:
#include<stdio.h>
#include<string.h>
int main()
{
char s1[20]=,s2[20]="hello";
strcpy(s1,s2);
puts(s1);
return 0;
}
strcat
char *strcat(char *dest,const char *src)
功能:拼接字符串
参数:src:源字符串 实参形式:a.一维字符型数组名 b.字符串常量
dest:目的字符串 实参形式:a.一维字符型数组名 b.字符串常量
eg:
#include<stdio.h>
#include<string.h>
int main()
{
char s1[20]="hello",s2[20]="world";
strcat(s1,s2);
puts(s1);
return 0;
}
strcmp
int strcmp(const char*s1,const char*s2)
功能:比较字符串大小
参数:s1:字符串 实参形式:数组名,字符串常量
s2:字符串 实参形式:数组名,字符串常量
返回值 //用最后停的位置上字符的差值来反映大小
s1 > s2 //差值>0
s1 = s2 //差值=0
s1 < s2 //差值<0
字符串比较规则
字符串比较的规则与其他语言中的规则相同,即对两个字符串自左至右逐个字符相比(按 ASCII 码值大小比较),直到出现不同的字符或遇到'\0' 为止。如全部字符相同,则认为相等;若出现不相同的字符,则以第1个不相同的字符的比较结果为准。
比较的结束的条件:
s1[i]!=s2[i] || s1[i]=='\0' || s2[i] == '\0'
只看结束时s1 最后一个字符 和 s2最后一个字符 之间的大小关系
二维数组
二维数组:
类型说明符 数组名[常量表达式][常量表达式]
(1) (2) (3) (4)
(1) 类型说明符 --- 用来说明数组中存储数据的类型 //
(2) 数组名 --- 标识符
(3) 常量表达式 --- 行 --多少行
(4) 常量表达式 --- 列 --多少列
数组初始化:
int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};//全部初始化
int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};//全部初始化
int a[3][4] = {1,2,3,4,5,6};//部分初始化
int a[3][4] = {{1,2},{5,6},{9,10}};//全部初始化
赋值:
循环
scanf输入值
数组元素的引用:
数组名 [行][列];
数组输入输出示例
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
int a[n][n];
int i,j;
for(i = 0;i < n;i++) //输入
{
for(j = 0;j < n;j++)
{
scanf("%d",&a[i][j]);
}
}
for(i = 0;i < n;i++) //输出
{
for(j = 0;j < n;j++)
{
printf("%2d ",a[i][j]);
}
printf("\n");
}
return 0;
}
注意:
1.c语言中,并不存在真正的二维数组,都是用一维数组模拟的。
2.二维数组的本质
实际上 一维数组类型的一维数组
//数组的数组
3.二维数组数据存储时,
按行优先存储