C语言的简单字符识别与二维数组

本文详细介绍了二维数组的定义、存储方式及初始化方法,并探讨了字符数组与字符串函数的应用,通过示例展示了如何查找特定字符串。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写这篇的目的是巩固一下二维数组和字符串的学习。

一、二维数组

1.多维数组的定义

2.二维(多维)数组的存储方式

上一级的每个存储单元均为下一级一维数组的首位地址,层级之间由指针相连,只有底层才存储数据。

例如三维A[3][4][4]

A值为A[0]地址

A[i]值为A[i][0]地址

A[i][j][k]的值才是存储数据的区域

 3.二维数组初始化

数组包括二维数组的初始化的原则存在确定行数和列数的最小约束条件。可以是下标的方式,也可以是括号的方式,但必须能够确定行数和列数,没有完全填充的位置自动用0补齐:

        初始化方式样例
完整混乱元素,行列下标inta[3][3]={1,-,9}
行括号(此时行数下表可以省略)inta[3][3]={{1,2,3},{~},{~}}
行数省略inta[][3]={{1,2,3},{~},{~}}
部分元素,行列下表(其余填0)inta[3][3]={1,2}
行括号部分元素,行列下标inta[3][3]={{1,2},{4},{7,8,9}}
行数省略(有行括号)inta[][3]={{1},{4,5},{7,8,9}}

 

二、字符数组

1.与(多维)数组的关系

一维字符串:名字“James”

二维字符串:一组名字“”,“”,…………

三维字符串:多组名字,以此类推…………

2.字符数组定义及其与字符变量char的关系

定义:(和数组一样,只是数据类型改变)

char str[10];——字符串

若为:char str;—字符

char变量的存储方式为字符变量ASCLL码

而字符数组即为将char变量组成数组成为字符串

重点:其中,字符串的有效字符末尾有结束标注\0,占一个存储位置。

3.字符数组初始化

逐个字符输入(单引号)char str[10]={"c",'h',,,‘a’}
句子加大括号 (双引号)char str[10]={"HOW"}
句子省略大括号char str[10]="HOW"

注意事项:用字符串常量初始化时,自动加结束标志\0

4.字符串函数

(1)输入输出:for循环scanf_s("%c,地址")输入printf(“%c”,变量)输出(%c)

(2)字符串整体:(“%s”,地址或变量)

(3)get函数:()

 (4)put函数:

 (5)字符串连接函数strcat(str1,str2),2接在1后面

(6)字符串拷贝函数strcpy(str1,str2),2拷贝到1中

(7)字符串比较函数strcmp(“sta”,“stb”),从左到右诸葛比较,返回结果,第一个不同ascoll码比较大小,1>2返回正,1<2返回负。

(8)测长度:strlen(str1)=长度整数

三、问题寻找James

输入:五个名字

输出:找到含有“James”的名字

代码:

#include//输入输出
#include//暂停
#include//字符函数
int main() {
    const int n = 20,m=5;//优先定义常量
    char name[m][n]={ "Kate.James","James.Tan","Bull.Ben","Jimes.James ","James.Ting" };
    char james[] = {"James"};//然后定义变量(比较操作中,字符变量只能和字符变量比)
    int i, j,k, len = strlen("James");//算长度
    for (i = 0; i < m; i++) {//逐个名字
        for (j = 0; j < n-len; j++) {//找首字母
            if (name[i][j] == james[0]) {
                for (k = 0; k < len; k++) {//比较后面字母
                    if (name[i][j+k] != james[k]) {
                        break;
                    }
                }
                if (k == len) {
                    printf("%s has James\n", name[i]);
                    printf("%d\n",name);
                    printf("%d\n",name[i]);
                }
            }
        }
        
    }
    system("pause");
    return 1;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值