分支结构
if 分支结构
if (condition) { }
括号里面的值:为真或者假
没有中括号只执行下面一局
switch 分支结构
!注意点 !
!!!switch语句不执行case与default之外任何语句
()里面只能是整数和字符
int number = 0; switch (number) { if (number == 0) { printf("存在case之外的语句\n"); } case 0: if (number == 0) { printf("满足case就执行\n"); } printf("0"); break; default: printf("0"); break; }!!!菜单交互
#include <stdio.h> #include <stdlib.h>//system函数 #include <stdbool.h>//布尔函数 #include <conio.h>//getch ()函数 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):"); 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函数 stdlib.h包含即可使用 system("pause"); system("cls"); } printf("退出菜单\n"); 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"); return 0; }
经典switch语句 达夫设备
循环结构
for 循环结构
简单应用
#include <stdio.h> #include <stdbool.h> int main() { 1.单纯重复效果类 for (int i = 0; i < 3; i++) { printf("鼓掌:啪啪啪\n"); } //while (true) //{ // //打印菜单 // //按键交互 //} 2.循环做递推操作 //求和 1+2+3+4..+100 int sum = 0; for (int i = 1; i <= 100; i++) { sum += i; } printf("sum=%d\n", sum); //斐波拉西数列 //f1=1 f2=1 //f3=f2+f1=2 //f4=f3+f2=3 //f8=? int f1 = 1; int f2 = 1; int n = 0; printf("input n:"); scanf_s("%d", &n); if (n == 1 || n == 2) { printf("1\n"); } else { //1 1 2 3 5 8 13 int result = 0; for (int i = 3; i <= n; i++) { result = f1 + f2; //result=1+1 result=1+2 result=2+3 f1 = f2; //f1=1 f1=2 f1=3 f2 = result; //f2=2 f2=3 f2=5 } printf("%d\n", result); } 3.描述下标 for (int i = 0; i < 10; i++) { printf("下标:%d\n", i); } 4.遍历区间 //找数字--->100-1000 找能被2 3 4 5 6整除的数 for (int i = 100; i <= 1000; i++) { if (i % 2 == 0 && i % 3 == 0 && i % 4 == 0 && i % 5 == 0 && i % 6 == 0) { printf("%d\t", i); } } printf("\n"); return 0; }#include <stdio.h> #include <stdbool.h> int main() { 1.描述表格的下标 for (int i = 0; i < 4; i++) //行 { for (int j = 0; j < 3; j++) //列 { printf("%d-%d\t", i, j); } printf("\n"); //描述行列变化 } 2.行与数目的关系 /* * 1行 1个 ** 2行 2个 *** 3行 3个 **** 4行 4个 .... i行 i个 */ for (int i = 1; i <= 4; i++) //行 { for (int j = 1; j <= i; j++) { printf("*"); } printf("\n"); } /* 0000* 1行 1个 000*** 2行 3个 00***** 3行 5个 0******* 4行 7个 ********* 2*i-1 .... i行 i个 */ for (int i = 1; i <= 5; i++) { for (int j = 1; j <= 5 - i; j++) { printf(" "); } //把*的规律描述一下即可 for (int k = 1; k <= 2 * i - 1; k++) { printf("*"); } printf("\n"); } 3.外层循环用来描述区间,内层循环用来筛选 //求素数 100-1000之间素数 //只能被自身和1整除的数 //标记法 int count = 0; for (int i = 100; i <= 1000; i++) //区间 { //i= int flag = 0; for (int j = 2; j < i; j++) { if (i % j == 0) { flag = 1; //不做跳转会浪费时间 } } if (flag == 0) { printf("%d\t", i); count++; //调整打印格式 if (count % 8 == 0) { printf("\n"); } } } printf("\n"); count = 1; for (int i = 0; i < 4; i++) //页 { for (int j = 0; j < 3; j++) //行 { for (int k = 0; k < 5; k++) //列 { printf("第%d次打印:", count++); printf("第%d页,第%d行 第%d列\n", i, j, k); } } } //一般有次数关系都用for循环嵌套 printf("\n"); int i = 0; while (i < 4) { int j = 0; while (j < 3) { printf("%d:%d\t", i, j); j++; } printf("\n"); i++; } return 0; }
while 循环结构
死循环
go to 语句
break 语句
continue 语句
作用域和生命周期
//作用域: 变量有效范围 //生命周期: 变量的产生到变量的死亡这个时间段 //全局变量 //局部变量(自动变量) //静态变量 #include <stdio.h> //全局变量 int g_num; int main() { //作用域限定符 { int num = 0; //局部变量 //同一个作用域下不允许存在相同的变量 //error C2374: “num”: 重定义;多次初始化 //int num = 1; { int num = 1; //就近原则 printf("num:%d\n", num); } } printf("num已死\n"); 局部变量(自动变量) int number; //局部变量不做初始化。没有值 //error C4700: 使用了未初始化的局部变量“number” //错误 //printf("%d\n", number); printf("g_num=%d\n", g_num); 全局和局部变量相遇时就近原则 int g_num = 999; printf("g_num=%d\n", g_num); 静态变量 生命周期 程序开始运行之前就初始化好了,程序结束之后才死亡 { static int sNum = 0; //初始化操作只只执行一次 } return 0; }