在开始介绍二维数组之前先学习一下和字符串相关的函数。
一:字符串相关的函数
1:strlen函数
头文件: #include <string.h>
功能: 计算一个字符串的长度,遇到’ \0‘ 停止计算, ‘ \0’ 不被计算入内
格式: long num = strlen(数组名);
注意区别 sizeof 和 strlen:
char buf[32] = {“ hello” };
long size = sizeof(buf);//32
long num = strlen(buf);//5
举例说明:
#include <stdio.h>
#include <string.h>
int main()
{
char name[32] = {"abcd"};
int a=0;
a=strlen(name);
printf("%d\n",a);
return 0;
}
运行结果:
2:strcpy -- 字符串拷贝
格式: strcpy(数组名 s1, 数组名 s2) ;
功能: 将 s2 里面的内容, 复制到 s1 里面, 遇到 s2 的‘ \0’ 的时候,停止复制,‘ \0’ 也
要复制过去;
注意: 如果 s1 里面有内容, 复制时, s2 的第一个字符覆盖 s1 的第一个字符, 依次覆盖,直到 s2 遇到’ \0’ , 停止复制, s2 的‘ \0’ 也要复制过去;
示意图:
举例说明:
#include <stdio.h>
#include <string.h>
int main()
{
char src[32] = {"xyzopqrse"};
char buf[32] = {"abcdef"};
strcpy(src,buf);
printf("%s\n",src);
printf("%c\n",src[7]);
printf("%c\n",src[8]);
return 0;
}
运行结果:
注意:这里的显示字符没有右面的内容但是并没有消失;
3:strcat -- 字符串拼接函数
格式: strcat( s1, s2) ;
功能: 先找 s1 的‘ \0’ 位置,s2 的第一个字符覆盖 s1 的‘ \0’ ,
并将 s2 的其余字符依次拼接到 s1 的后面, s2 的‘ \0’ 也拼接过去。
举例说明:
#include <stdio.h>
#include <string.h>
int main()
{
char src[32] = {"xyzopqrse"};
char buf[32] = {"abcdef"};
strcat(src,buf);
printf("%s\n",src);
return 0;
}
4: strcmp 函数
字符串比较函数(数组比较不能直接用数组名比较, 整型/浮点型数组需要一个
一个元素单独比较, 字符数组则有该函数可以使用)
格式: int a = strcmp( s1, s2) ;
含义:
两个数组的对应元素依次比较, 直到出现不同的, 结束, a 的值, 就是比较之后的
差值;
当 s1 和 s2 同时遇到’ \0’ 也停止比较, 结果为 0, 0 表示相同。
即:
相同返回 0;
不相同返回非 0;
举例说明:
#include <stdio.h>
#include <string.h>
int main()
{
int a;
char src[32] = {"xyzopqrse"};
char buf[32] = {"abcdef"};
a=strcmp(src,buf);
printf("%d\n",a);
return 0;
}
二:维数组的定义和引用
二维数组的定义
定义的一般形式:类型说明符 数组名[常量表达式1][常量表达式2];
常量表达式1为行数,常量表达式2为列数。
二维数组的引用:
形式: 数组名[行下标][列下标]
下标是整型或字符型的常量,变量或表达式。(定义时不能使用变量)
如: a[1][2] a[i][j]
数组元素可出现在表达式中,如: a[1][2]=a[2][2]/2
使用数组元素时,应注意不要超出其定义的范围;
如: int a[2][3]; a[2][3]=5;错误的
举例说明:杨辉三角
#include <stdio.h>
int main() {
int num = 10,i,j; // 打印前10行杨辉三角
int triangle[10][10]={0};
for ( i = 0; i < num; i++) {
for ( j = 0; j <= i; j++) {
if (j == 0 || j == i)
{
triangle[i][j] = 1;
} else
{
triangle[i][j] = triangle[i - 1][j - 1] + triangle[i - 1][j];
}
printf("%d ", triangle[i][j]);
}
printf("\n");
}
return 0;
}
运行结果:
今天已经分享一张图片吧: