C语言中三种控制结构
1,if语句
1.1 if 语句基本的用法
int a = 1 ;//如果条件成立,则执行{}内的语句
if ( 1 == a )
{
printf("a=%d\n",a);
}
//if管理一条语句,大括号可以省略
//if后面的条件括号不能为赋值语句,不会执行
//if求最大值
int a = 0 ,b = 0 ;
scanf("%d%d",&a,&b);
//三目运算符求最大值
printf("max=%d\n"a?ba:b);
//if语句求最大值
int max = a ;
if(max<b)
{
max = b ;
}
printf("max=%d\n",max);
1.2 if else 语句
条件成立,执行if 语句,条件不成立,执行else 语句
//判定奇数偶数
int a = 0 ;
scanf("%d",&a);
if(a%2==0)
{
printf("%d是偶数\n",a);
}
else
{
printf("%d是奇数\n",a);
}
1.3 if _else if _ if
int score = 89 ;
if(socre>=90)
{
printf("优秀\n“);
}
else if(score>=60)
{
printf("良好\n");
}
else//else后面不能加括号表达式
{
printf("不及格\n");
}
1.4条件的嵌套
条件的细化操作,逐步分析
int a = 0 ;
scanf("%d",&a);
if( a%3==0 && a%2==0 && a%4==0 )//用逻辑运算符
{
printf("%d可以被2和3和4整除\n",a);
}
else
{
printf("不满足条件\n");
}
if( 2 == a% )
{
if( 3 == a% )
{
if( 4 == a% )
{
printf("满足条件\n");
}
}
}
else
{
printf("不满足条件\n");
}
//else不能单独存在
//else只能和最近的if搭配
2,switch 语句
2.1基本使用
int a = 0 ;
switch(a)
{
case 0://case 后面不能跟字符串或者小数或者变量名称,只能跟整数或者字符串
printf("0");
case 1://case后面必须跟空格
printf("1");
case 2:
printf("2");
default:
printf("3");
}
//case x :
_________;(表达式)
原生态的switch语句只做一次成功的比较,后续的从上往下执行
char key = 'A';
switch (key)
{
case 'B':
putchar(key++); //后置++ 先做其他事
case 'A':
putchar(key++);//在改变自身,先打印A再做++
case 'C':
putchar(key++); case 'D':
putchar(key++);
}//打印结果是ABC
number = 1;//break,跳出的意思
switch (number)
{
case 0:
printf("0");
break;
case 1:
printf("1");
break;
case 2:
printf("2");
break;
case 3:
printf("3");
break;
default:
printf("4");
break;
}
2.2 switch语句的两个问题
//switch中存在其他语句
int a = 0 ;
switch(a)
{
if( 0 == a )
{
printf("yo~ bro");//不会打印出来 yo~bro 的内容
}
case 0 :
printf("0");
break;
default :
printf("1");
break;
}//switch不会执行除了case 和break 以外的语句
//
switch(a)
{
case 1 :
break;
case 0 :
if ( a == 0 )
{
case 2 ://相当于不存在 a == 2 也成立
printf("测试代码\n");
}
break;
}
//不同的case相同的处理可以结合在一起
printf("\n");
int num = 0;
scanf_s("%d", &num);
switch (num)
{
case 1:
case 2:
case 3:
case 4:
printf("yo\n");
break;
case 5:
case 6:
case 7:
case 8:
printf("bro\n");
break;
default:
printf("fuck you bitch **ck \n");
//解决方案
switch (b)
{
case 0 :
{
int b = 1 ;
break;//case里定义变量,需要带大括号,限定变量b 的范围
}
//... ...
}
// while 循环
/*while(条件)
{
循环体
} */
int count = 0 ;
while(count < 3 )//写法一:限定while循环里的条件
{
printf("第%d次执行\n",count+1);//++count可
count ++ ;
}
while(1)//写法二:规定循环体跳出条件
{
printf("第%d次执行\n",count+1);//++count可
if ( count == 3 )
break;//跳出循环
count ++ ;
}
//bool 类型
#include <stdbool.h>
bool a = false ;//成立
a = ture ;//不成立
2.3 switch常用的形态
写菜单的交互界面
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
//菜单交互
while (true)//进入到循环当中去
{
//绘制菜单,循环的可视化提醒
printf("--------【xxx】管理系统--------\n");
printf("\t0.退出系统\n");
printf("\t1.录入\n");
printf("\t2.删除\n");
printf("\t3.修改\n");
printf("\t4.查找\n");
printf("------------------------------\n");
printf("请输入你的选择(0~4)\n");
int userkey = 0;//定义输入变量,用户交互按钮
scanf_s("%d",&userkey);//输入
switch (userkey)//用户通过输入来实现循环
{
case 0:
break;
case 1:
printf("\t录入模块\n");
break;
case 2:
printf("\t删除模块\n");
break;
case 3:
printf("\t修改模块\n");
break;
case 4:
printf("\t查找模块\n");
break;
default:
printf("错误输入!");
break;
}
if (userkey == 0)
break;//结束循环
system("pause");//防止闪屏,使得信息停留在该界面
system("cls");//清屏
}
printf("退出菜单\n");//退出循环,等于退出了菜单系统
return 0;
用户按键非可视化操作
while (true)
{
int key = _getch();
switch (key)
{
case 'Q':
case 'q':
printf("释放Q技能\n");
break;
case 'W':
case 'w':
printf("释放W技能\n");
break;
case 'e':
case 'E':
printf("释放E技能\n");
break;
case 'R':
case 'r':
printf("释放E技能\n");
break;
case '\r':
break;
}
if (key == '\r')
{
break;
}
}
printf("退出按键\n");
//方向键的处理
while (true)
{
int key = _getch();
switch (key)
{
case 'W':
case 'w':
case 72:
printf("往上走!\n");
break;
case 's':
case 'S':
case 80:
printf("往下走!\n");
break;
case 'a':
case 'A':
case 75:
printf("往左走!\n");
break;
case 'd':
case 'D':
case 77:
printf("往右走!\n");
break;
case '\r':
break;
}
if (key == '\r')
{
break;
}
}
printf("退出按键\n");
方向键在计算机语言中对应的数字:
方向键 | 对应数字 |
---|---|
w W | 72 |
s S | 80 |
a A | 75 |
d D | 77 |
3.作用域和生命周期
//作用域: 变量有效范围
//生命周期: 变量的产生到变量的死亡这个时间段
//局部变量
//全局变量
int g_num;//全局变量
int main()
{//作用域限定符
int num = 0;//就近原则
{
int num = 1;
printf("num:%d\n", num);//局部变量,打印按照就近原则
}
return 0;
}//作用域限定符
//同一个作用域下不允许存在相同的变量
//error C2374: “num”: 重定义;多次初始化
//静态变量
static int sNum = 0; //初始化操作只只执行一次