C语言复习2:键盘录入,字符串变量定义,流程控制语句
## 键盘录入scanf
- scanf,是scanner format的缩写
- 作用:获取用户在键盘上输入的数据,并赋值给变量。注意第一个参数中不写换行,即
scanf("%d\n",&变量名); //不妥
scanf("%d",&变量名); //正确
- 如果想同时录入两个或两个以上的变量:记得在占位符中间加上空格即可
scanf("%d %d %d ……",&变量名1,&变量名2,&变量名3……); //可以同时录入多个变量,录入时空格隔开,回车表示录入结束
- 解决scanf直接使用时出现的安全问题:
1. 法一 代码顶部加上该注释:`#define _CRT_SECURE_NO_WARNINGS`
2. 法二 点击项目名 - >属性 -> 配置属性 -> C/C++ -> 预处理器 -> 在预处理器窗口右边,点击预处理器定义,将 `_CRT_SECURE_NO_WARNINGS`加到最后一行(注意上边的配置不要删了)
## 字符串变量的定义方式
- 在C语言中,没有单独的字符串变量,但可以利用字符数组来存字符串
- 占位符:`%s`
- 定义: 数据类型 变量名[内存占用大小] = "字符串";
eg: `char str[] = "aaa";`
- 内存占用大小的计算方式:
1. 英文:1个字母/符号/数字,占用1个字符
2. 中文:在vs/vc中,默认情况下,一个中文占用两个字节
3. 字符串末尾隐藏的结束标志:占1个字符
char str[6] = "aaa哈";
printf("%s\n",str);
printf("%zu\n",sizeof(str));
## 流程控制语句
1. 顺序结构:程序默认执行流程,从上到下依次运行
2. 分支结构
* 2.1 if语句
- 格式1:
if(关系表达式){
语句体;
}
- 格式2:
if(关系表达式){
语句体A;
}else{
语句体B;
}
- 格式3:
if(关系表达式1){
语句体A;
}else if(关系表达式2){
语句体B;
}else if(关系表达式3){
语句体C;
}
…
else{
语句体N;
}
* 2.2 switch语句
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
…
default:
语句体n;
break;
}
- 注意表达式的计算结果只能是字符/整数
- case 后面的值也只能是字符/整数,不能是变量
- case 后面的值不能重复
- break:表示中断/结束的意思,结束switch语句
- case穿透的情况,即少写了break;
- case穿透的规则:
1. 根据表达式里的结果去匹配对应的case值
2. 执行对应case里面的值
3. 如果在执行过程中,遇到了break,那么直接结束switch,
- 如果没有,就会继续执行下面的代码,直到遇到了break,或者把整个switch中的代码全部执行完了,才结束。
3. 循环结构
* for循环
for(初始化语句;条件判断语句;条件控制语句){
循环体语句;
}
---无限循环(死循环)----------------------------------
for( ; ; ){
循环体语句;
}
- 执行流程:
1. 初始化语句
2. 执行条件判断语句,看起结果是否成立:成立就执行循环体语句,不成立结束循环体
3. 执行条件控制语句
4. 回到2继续执行条件判断语句
* while循环
初始化语句
while(){
循环体语句
条件控制语句
}
---无限循环(死循环)-----------------------------------
while(1){
循环体语句;
}
- 执行流程和for循环一样,就是初始化变量一个是在大括号内一个是大括号外,在括号内的则无法在大括号外继续使用。
* do-while循环
do {
循环体语句;
条件控制语句;
}while(条件判断语句);
---无限循环(死循环)----------------------------------
do{
循环体语句;
}while(1);
- 执行流程:从上到小
## 跳转控制语句
- break :不能单独书写,只能写在switch/循环中,表示结束,跳出的意思。break只能跳出单层循环,对于多层循环,只能跳出内部循环。
- continue :结束本次循环,继续下次循环。
- goto xx;
for(){
for(){
printf("跳出整个循环\n");
goto a;
}
}
// 标号
a: printf("外部循环结束\n");
## 制表符 \t
- \t制表符,长度可变的大空格
- 它会根据前面字母的个数在后面补空格,让整体的长度达到8或8的倍数,最多补8个