字符串

字符串就是一串字符 - 用双引号括起来的一串字符

1
2
3
4
5
6
7
8
9
int main()
{
//字符数组 - 数组是一组相同类型的元素
//字符串在结尾隐藏了一个 \0 的转义字符 是字符串的结束标志
//%s打印字符串
char arr[] = "abc";
printf("%s\n", arr);
return 0;
}

注意:字符串的结束标志是一个 \0 的转义字符。在计算字符串长度时 \0 是结束标志,不算作字符串内容

1
2
3
4
5
6
7
8
9
10
11
int main()
{
//字符数组 - 数组是一组相同类型的元素
char arr[] = "abc";
char arr1[] = { 'a','b','c' };//这种方式没有结束标志,后面会打印出来乱码
char arr2[] = { 'a','b','c','\0'};
printf("%s\n", arr); //abc
printf("%s\n", arr1);//abc+乱码
printf("%s\n", arr2);//abc
return 0;
}

求字符串长度

通过strlen()来计算字符串的长度

使用strlen()时,需要先引用头文件string.h

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <string.h>
int main()
{
char arr[] = "abc";
char arr1[] = { 'a','b','c' };//这种方式没有结束标志,后面会打印出来乱码
char arr2[] = { 'a','b','c','\0'};
//求字符串长度
int len = strlen("abc");
printf("%d\n", len); //3
printf("%d\n", strlen(arr)); //3
printf("%d\n", strlen(arr1));//15 15为随机值
printf("%d\n", strlen(arr2));//3
return 0;
}

转义字符

转变了字符原有的意思

转义字符 意义
? 在书写连续的多个问号时使用,防止他们被解析成三字母词
\‘ 用于表示字符常量 ‘
\“ 用于表示一个字符串内部的双引号
\\ 用于表示一个反斜杠,防止它被解析为一个转义序列符
\a 警告字符,蜂鸣
\b 退格符
\f 进纸符
\n 换行
\r 回车
\t 水平制表符
\v 垂直制表符
\ddd ddd表示1~3个八进制的数字。 如:\130 X
\xdd dd表示2个十六进制的数字,如:\x30 0
1
2
3
4
5
6
7
8
9
10
11
12
int main()
{
printf("c:\test\test.c"); // \t 转变成了水平制表符(tab按键)
printf("ab\ncd"); // \n 转变成了换行
printf("(are you ok??)"); //在以前的编译器 ??) 这个三字母词会转变成 ]

//%c为打印单个字符
//打印一个单引号,需要在前面打一个 \ ,
//否则编译器会把前面两个单引号解析成一对,最后一个单引号无法组成,报错 双引号同理
printf("%c\n", '\'');
return 0;
}

\ddd和\xdd

1
2
3
printf("%c\n", '\130');//8进制的130是十进制的多少? X - ASCII码值是88
printf("%c\n", '\101'); //A - 65
printf("%c\n", '\x30'); //48 - 0

应用

1
2
//打印输出多少?
printf("%d\n", strlen("c:\test\328\test.c"));

答案:14

选择语句

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//选择语句
int main()
{
int input = 0;
printf("你要好好学习吗 1.是 2.否:");
scanf("%d", &input);
//选择判断
if (input == 1)
{
printf("好好学习\n");
}
else
{
printf("不好好学习\n");
}
return 0;
}

循环语句

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//循环语句
int main()
{
int line = 0;
//循环
while (line<300)
{
printf("写代码%d\n" ,line);
line++;
}
if (line == 300)
{
printf("很棒\n");
}
return 0;
}

函数

1
2
3
4
5
6
7
8
9
int main()
{
int num1 = 0;
int num2 = 0;
scanf("%d %d", &num1, &num2);
int sum = num1 + num2;
printf("%d\n", sum);
return 0;
}

如何运用函数来求两个数字的和呢

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//函数
//x和y为传入的参数
Add(int x,int y)
{
int z = 0;
z = x + y;
//返回 求和值z
return z;
}
int main()
{
int num1 = 0;
int num2 = 0;
scanf("%d %d", &num1, &num2);
/*int sum = num1 + num2;*/
int sum = Add(num1,num2);//给Add函数传入两个参数
printf("%d\n", sum);
return 0;
}

数组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//数组 - 一组相同类型的元素的集合
int main()
{
//给数组存入10个整型
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
//给数组存入3个字符
//不完全初始化,定义了长度为5的数组,只传入了3个值,剩余默认为0
char ch[5] = { 'a','b','c' };
//数组元素通过下标来访问
int i = 0;
while (i<10)
{
printf("%d\n",arr[i]);
i++;
}
return 0;
}

那么如果我没有给数组定义一个长度,并传入值,他的长度会是多少呢

1
2
3
4
5
6
int main()
{
char ch[] = { 'a','b','c' };
printf("%d\n", strlen(ch));//15 也就是3+随机值
return 0;
}