学习笔记——C语言基本概念&数组(二维数组)——(6)

在开始介绍二维数组之前先学习一下和字符串相关的函数。

一:字符串相关的函数

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;
}

运行结果:

今天已经分享一张图片吧:

  • 25
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值