一、字符串函数
1.strlen()
size_t strlen(const char *str)
size_t
是C语言中的一种无符号整数类型. size_t 类型表示C中任何对象所能达到的最大长度
计算字符串 str 的长度,直到空结束字符,但不包括空结束字符
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "Hello, World!";
int length = strlen(str);
printf("字符串的长度为:%d\n", length);
return 0;
}
输出结果为11
my_strlen.c
2.strcpy()
char *strcpy(char *dest, const char *src)
- dest -- 指向用于存储复制内容的目标数组。
- src -- 要复制的字符串。
源字符串 src
中的内容将被复制到目标字符串 dest
中。复制操作会一直进行,直到遇到源字符串结尾的空字符 \0
。
3.strcmp()
int strcmp(const char *str1, const char *str2)
该函数返回值如下:
- 如果返回值 < 0,则表示 str1 小于 str2。
- 如果返回值 > 0,则表示 str2 小于 str1。
- 如果返回值 = 0,则表示 str1 等于 str2。
当比较两个字符串时,会从字符串的第一个字符开始逐个比较,直到遇到不同的字符或者其中一个字符串结束。以下是比较字符串大小的规则:
- 如果两个字符串的对应字符完全相同,继续比较下一个字符。
- 如果遇到不同的字符,比较它们在 ASCII 表中的大小关系。
- 如果前面的字符相同,但一个字符串已经结束,结束的字符串被认为是较小的字符串。
- 如果两个字符串完全相同,则它们被认为是相等的。
二、二维数组
数据类型 数组名[行数][列数] = {
{ 元素1, 元素2, 元素3, ... },
{ 元素1, 元素2, 元素3, ... },
...
};
C语言中二维数组的 本质 是一维数组的一维数组
int a[3][4]
int [4] a[3] 3个 int[4]
int a[ ][4] ={1,2} ,二维数组 行数可省略,列数不能省略
可以省略行数,但不能省略列数:编译器根据初始化时的实际元素个数来推断行数,但需要提供列数,以便为每一行分配正确的空间。
转置行列式
三、魔鬼数
#include <stdio.h>
#include <strings.h>
int main(void)
{
int n;
printf("Input a num:");
scanf("%d",&n);
int a[n][n];
bzero(a,n*n*sizeof(int));
int k = 1;
a[0][n/2] = k;
int i = 0;
int j = n/2;
for (k = 2; k <= n*n; ++k)
{
int m = i;
int g = j;
++j;
--i;
if (i < 0)
{
i = n-1;
}
if (j > n-1)
{
j = 0;
}
if (a[i][j]!=0)
{
i = m;
j = g;
++i;
if (i > n-1)
{
i = 0;
}
}
a[i][j] = k;
}
for (i = 0; i < n; ++i)
{
for (j = 0; j < n; ++j)
{
printf("%d ",a[i][j]);
}
putchar('\n');
}
return 0;
}