【初识C语言】2
字符串
char 字符类型
'a' 字符【单引号】
"abcdef" 字符串【双引号】
C语言中没有字符串类型,【使用双引号,把一串字符引起来,】来表示字符串
int main()
{
char arr[10] = "abcdef";
//char类型的数组,可以放10个字符
//把字符串"abcdef"放入
char arr[] = "abcdef";
//[]里不写数字也可以,系统会根据字符数量自动开辟空间
return 0;
}
\0
字符串最后会隐藏一个\0
\0:字符串的结束标志
\0占1个字节的空间,但不会打印出来
int main()
{
char arr1[] = "abcdef";//监视程序运行时能看到系统开辟出7个字节的空间
char arr2[] = {'a','b','c','d','e','f'};//6个
printf("%s\n", arr1);//只会打出abcdef,因为隐藏一个\0
printf("%s\n", arr2);//arr2没有在f后面放\0,所以会继续打印,直到遇到\0
return 0;
}
strlen:求字符串长度的库函数 string length
#include <string.h>
int main()
{
int len = strlen("abc");
printf("%d\n", len);//结果为“3”,\0不打印,strlen数字符数时不计\0
return 0;
}
#include <string.h>
#include <stdio.h>
int main()
{
char arr1[] = "abcdef";
char arr2[] = {'a','b','c','d','e','f'};
char arr3[] = {'a','b','c','d','e','f','\0'};
printf("%d\n", strlen(arr1));//打印出6
printf("%d\n", strlen(arr2));//打印出的数未知(因为在找到\0之前strlen会一直数)
printf("%d\n", strlen(arr3));//打印出6
return 0;
}
#include <string.h>
int main()
{
char arr[4] = {'a','b','c'};//指定数组放4个元素,初始化时指定了3个
//【不完全初始化】剩余部分默认初始化为0
printf("%d\n", strlen(arr));//打印出3
return 0;
}
#include <stdio.h>
int main()
{
char arr[8] = {'a','b','c'};//也是不完全初始化
printf("%d\n", strlen(arr));//同样是打印出3
return 0;
}
\0本质是一个转义字符
转义字符
转变原字符的意思
\n | 换行 | |
\0 | 字符串结束标志 | |
\ | ||
\' | 用于表示字符常量' | |
\" | 用于表示一个字符串内部的双引号 | |
\\ | 用于表示一个反斜杠,防止它被解释为一个转义序列符 | |
\a | 警告字符,蜂鸣 | |
\t | 水平制表符(Table) | |
\v | 垂直制表符 | |
\b | 退格符 | |
\f | 进纸符,换页 | |
\r | 回车 | |
\ddd | 八进制数字 | 如:\x30 → X |
\xdd | 十六进制数字 | 如:\x30 → 0 |
%d 打印整型
%c 打印字符
%s 打印字符串
%f 打印float类型的数据
%lf 打印double类型的数据
%zu 打印sizeof的返回值
int main()
{
printf("%c\n", 'w');
printf("abcdef");//只有字符串能这样打印,整型不可以 printf(120);×
printf("%s\n", "abcdef");
//转义字符\
printf("%c\n", ''');//无法打印单引号
printf("%c\n", '\'');//可以打印单引号
printf(""");
printf("\"");
printf("abcd\0ef");
printf("abcd\\0ef");//第一个斜杠是用来转义第二个斜杠的,0是一个单独的字符
return 0;
}
\ddd和\xdd
int main()
{
printf("%c\n", '\130');
//130这个八进制数字转换成的十进制的数字代表的ASCII码值
//130转成十进制为88,查找ASCII码表发现,88代表X
//注意,\130是一个字符
printf("%c\n", '\x63');
//把63这个十六进制数字转化为十进制数字,十进制数字代表的字符
return 0;
}
【注意】ASCII码表可显示字符数量有限,为十进制数字0~127
【练习】求字符串长度
int main()
{
printf("%d\n", strlrn("c:\test\628\test.c"));//14
return 0;
}
注释
/* */ C语言的注释风格(早期)
// C++的注释风格
选择语句和循环语句
C语言是【结构化】的程序设计语言:顺序结构、选择结构、循环结构
选择语句
if else语句、switch语句等
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int input = 0;
printf("请输入密码\n");
scanf("%d", &input);
if (input == 1234)
{
printf("凶手是隔壁老王");
}
else
{
printf("密码错误 系统即将关闭");
}
return 0;
}
循环语句
while语句、for语句、do...while语句
//while循环例子
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int time = 0;
printf("开始战斗\n");
while (time < 10)
{
time++;
printf("战斗次数:%d\n", time);
}
if (time >= 10)
{
printf("战斗结束");
}
else
{
printf("战斗中");
}
return 0;
}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int time = 0;
int input = 0;
scanf("%d", &input);
printf("开始战斗\n");
while (time < input)
{
time++;
printf("战斗次数:%d\n", time);
}
printf("战斗结束");
return 0;
}
函数
int main()
{
int n1 = 0;
int n2 = 0;
scanf("%d %d", &n1, &n2);
int sum = n1 + n2;
printf("%d\n", sum);
return 0;
}
//Add:函数名;x、y:函数的参数
int Add(int x, int y)
{
int z = 0;
z = x + y;
return z;
}
//大括号里的叫函数体
int main()
{
int n1 = 0;
int n2 = 0;
scanf("%d %d", &n1, &n2);
int sum = Add(n1, n2);
printf("%d\n", sum);
return 0;
}
//简化写法
int Add(int x, int y)
{
return (x + y);
//return x + y;也可以
}
数组
数组:一组相同类型元素的集合
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
//定义一个整型数组,最多放10个元素
数组的下标
0,1,2,3,4,5…… 【注意】从0开始
访问数组的元素时,可以通过下标实现
int main()
{
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
printf("%d\n", arr[8]);//会打印出9
int i = 0;
while(i < 10)
{
printf("%d ", arr[i]);
i++;
}
//打印全部元素
return 0;
}
//for循环的
#include <stdio.h>
int main()
{
char arr[5] = { 'a','b','c','d','e' };
int i = 0;
for(i=0; i<5; i++)
{
printf("%c ", arr[i]);
}
return 0;
}