C语言支持最基本的三种程序运行结构:顺序结构、选择结构、循环结构。
顺序结构:程序按顺序执行,不发生跳转。
选择结构:依据是否满足条件,有选择的执行相应功能。
循环结构:依据条件是否满足,循环多次执行某段代码。
#include <stdio.h> int main() { int a = 1; int b = 2; if (a > b) { printf("%d\n", a); } return 0; }
#include <stdio.h> int main() { int a = 1; int b = 2; if (a > b) { printf("%d\n", a); } else { printf("%d\n", b); } return 0; }
#include <stdio.h> int main() { unsigned int a; scanf("%u", &a); if (a < 10) { printf("个位\n"); } else if (a < 100) { printf("十位\n"); } else if (a < 1000) { printf("百位\n"); } else { printf("很大\n"); } return 0; }
案例:
// 三只猪比较那个最重 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int main09(void) { int a, b, c; printf("请输入三只小猪体重:\n"); scanf("%d%d%d", &a, &b, &c); if (a > b) { if (a > c) { printf("小猪A最重\n"); } else { printf("小猪B最重\n"); } } else { if (b > c) { printf("小猪B最重\n"); } else { printf("小猪C最重\n"); } } return 0; }
#include <stdio.h> int main() { int a = 10; int b = 20; int c; if (a > b) { c = a; } else { c = b; } printf("c1 = %d\n", c); a = 1; b = 2; c = ( a > b ? a : b ); printf("c2 = %d\n", c); return 0; }
#include <stdio.h> int main() { char c; c = getchar(); switch (c) //参数只能是整型变量 { case '1': printf("OK\n"); break;//switch遇到break就中断了 case '2': printf("not OK\n"); break; default://如果上面的条件都不满足,那么执行default printf("are u ok?\n"); } return 0; }
案例:
// 根据输入的数字来判断成绩所处的范围 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int main(void) { int score; scanf("%d", &score); switch (score / 10) { case 10: printf("优秀\n"); break; case 9: printf("优秀\n"); break; case 8: printf("良好\n"); break; case 7: printf("及格\n"); break; case 6: printf("及格\n"); break; default: printf("不及格\n"); break; } }
#include <stdio.h> int main() { int a = 20; while (a > 10) { scanf("%d", &a); printf("a = %d\n", a); } return 0; }
案例:
// 敲桌子游戏,凡是带7或者7的倍数的需要敲桌子,否则正常输出 int main(void) { int i = 1; while (i <= 100) { i++; // 7的倍数 || 个位带7 || 十位带7 if (i % 7 == 0 || i % 10 == 7 || i / 10 == 7) { printf("敲桌子\n"); } else { printf("%d\n", i); } } }
#include <stdio.h> int main() { int a = 1; do { a++; printf("a = %d\n", a); } while (a < 10); return 0; }
案例:
// 从100-999 求出各个 位数 的立方和相加等于这个数本身的数 #include<stdio.h> int main(void) { int i = 100; do { // 取出个位数 int a = i % 10; // 取出十位数 int b = i / 10 % 10; // 取出百位数 int c = i / 100; if (a*a*a + b*b*b + c*c*c == i) { printf("%d\n", i); } i++; } while (i <= 999); return 0; }
// 函数初次使用-从100-999 求出各个 位数 的立方和相加等于这个数本身的数 #include<stdio.h> #include<math.h> int main(void) { int i = 100; do { //个位数 int a = i % 10; // 十位数 int b = i / 10 % 10; // 百位数 int c = i / 100; if (pow(a,3) + pow(b,3) + pow(c,3) == i) { printf("%d\n", i); } i++; } while (i <= 999); return 0; }
#include <stdio.h> int main() { int i; int sum = 0; for (i = 0; i <= 100; i++) { sum += i; } printf("sum = %d\n", sum); return 0; }
// 猜数字游戏 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<time.h> #include<stdlib.h > int main(void) { // 产生随机数 // 1.导入头文件 time.h stdlib.h // 2.添加随机数种子 // 3.获取随机数 srand((unsigned int)time(NULL)); int value=rand()%100; int num; for (;;) { printf("请输入数字: \n"); scanf("%d",&num); if (value > num) { printf("您输入的数太小了\n"); } else if (value < num) { printf("您输入的数太大了\n"); } else { printf("恭喜你猜对了\n"); break; } } return 0; }
循环语句之间可以相互嵌套:
#include <stdio.h> int main() { int num = 0; int i, j, k; for (i = 0; i < 10; i++) { for (j = 0; j < 10; j++) { for (k = 0; k < 10; k++) { printf("hello world\n"); num++; } } } printf("num = %d\n", num); return 0; }
// 编写时钟 #include<stdio.h> #include<Windows.h> int main(void) { for (int i = 0; i < 24; i++) { for (int j = 0; j < 60; j++) { for (int k = 0; k < 60; k++) { system("cls"); printf("%02d:%02d:%02d\n", i, j, k); Sleep(950); } } } }
// 九九乘法表(顺序) #include<stdio.h> int main(void) { int i; int j; for (int i = 1; i <= 9 ; i++) { for (int j = 1; j <= i; j++) { printf("%d * %d = %d\t", i, j, i * j); } printf("\n"); } return 0; } // 九九乘法表(到序) #include<stdio.h> int main(void) { int i; int j; for (int i = 9; i >= 1 ; i--) { for (int j = 9; j >= i; j--) { printf("%d * %d = %d\t", i, j, i * j); } printf("\n"); } return 0; }
在switch条件语句和循环语句中都可以使用break语句:
当它出现在switch条件语句中时,作用是终止某个case并跳出switch结构。
当它出现在循环语句中,作用是跳出当前内循环语句,执行后面的代码。
当它出现在嵌套循环语句中,跳出最近的内循环语句,执行后面的代码。
#include <stdio.h> int main(void) { for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { if (j == 5 ) { break; //跳出for (j = 0; j < 5; n++) } printf("%d %d\n", i, j); } if (i == 6) { break; //跳出for (i = 0; i < 6; n++) } } return 0; }
在循环语句中,如果希望立即终止本次循环,并执行下一次循环,此时就需要使用continue语句。
#include<stdio.h> int main(void) { for (int i = 0; i < 100; i++) { if (i % 2 == 1) //如果i是一个偶数,执行if语句中的代码 { continue; //结束本次循环 } printf("%d\n", i); } }
#include <stdio.h> int main(void) { printf("hello world1\n"); printf("hello world2\n"); goto FLAG; //无条件跳转到flag的标识 printf("hello world3\n"); printf("hello world4\n"); FLAG: printf("hello world5\n"); printf("hello world6\n"); return 0; }
int main(void) { int i = 0, j = 0, k = 0; for (i = 0; i < 10; i++) { if (i == 5 ) { goto END; } printf("i=%d\n", i); } for (j = 0; j < 10; j++) { printf("j=%d\n", j); } for (k = 0; k < 10; k++) { END: printf("k=%d\n", k); } return 0; }