循环语句:
1:for循环
格式:
for(语句1;判断语句;语句2) {循环体;}
执行顺序: 先执行语句一,接着进入判断语句,若不满足判断语句则不执行语句二直接退出循环. 若满足判断语句, 则执行语句二,再接着进行判断语句.直至不满足判断语句退出循环.
特点: 语句一只执行一次 , for 循环中的语句都可以为空(此时为一个死循环),但是格式(; ; ;)不能少.同时要注意判断语句中的变量,要在语句二中进行自增或自减.
死循环格式:
for(语句一; ; 语句二){循环体;}//注意";"不能少.
2:while循环
格式:
while(判断语句) { 循环体; }
执行顺序:先执行判断语句,若为真则将进入循环体,每执行一次循环体需要进行一次判断,不满足则退出循环.
死循环格式:
while(1){循环体;}
3: do while循环
格式:
do { 循环体; }while(判断语句)
特点: 先进入循环体,再进行判断正好和while 循环相反.
死循环格式:
do {循环体;} while(1);
分支语句:
1:if else 分支语句
格式:
if(判断语句) { 语句1;} else { 语句2;}
进入分支语句时看是否满足判断语句,若满足则执行语句一,否则执行语句二.
注: 当多个if else 语句嵌套时,else 总是向上和未和else结合的if相结合
2:switch 分支语句
格式:
switch (整型变量表达式)//switch的参数类型不能float,double等类型,只能为整型类型. { case 常量1 : 语句1; break;//break用于跳出switch语句. case 常量2 : 语句2; break;//case的标签必须为常量表达式,且必须唯一 //如 case a>b: ... (error,不是常量表达式) // case 常量1:... // case 常量1:..(将报错,常量表达式不唯一) case 常量3 : 语句3; break; ... default : 语句n;break;//若都不符合则进入default. }
整型变量表达式满足常量 i ,则执行 语句 i,若全都不满足则进入default,执行语句n.
注:因为switch要求参数类型只能为整型类型,所以极大的限制了switch的使用情况.当数据类型不满足时需要使用if语句.
趣味练习:定义一个二维数组,通过循环和分支语句,实现在屏幕上打印0-9.
代码如下:
#include<stdio.h>
#include<assert.h>
void Init_ar(int br[5][3],int row ,int col,int*cr)//利用循环对数组进行赋值 { assert(br != nullptr); int t = 0; for (int i = 0; i < row; i++)// { for (int j = 0; j < col; j++) { if (cr[t]==1)//通过判断是否为1,来对数组元素进行赋值操作 { br[i][j] = ‘*‘; t++; } else { br[i][j] = ‘ ‘; t++; } } } } void Print_ar(const int br[5][3], int row, int col)//利用循环打印二维数组 { assert(br != nullptr); for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { printf("%c", br[i][j]);//打印数组元素对应的字符 } printf("\n");//控制换行 } printf("\n"); } int main() { int ar[5][3] = {}; int cr0[] = { 1,1,1,1,0,1,1,0,1,1,0,1,1,1,1 };//通过指定0和1,打印出我们想要的效果. int cr1[] = { 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0 }; int cr2[] = { 1,1,1,0,0,1,1,1,1,1,0,0,1,1,1 }; int cr3[] = { 1,1,1,0,0,1,1,1,1,0,0,1,1,1,1 }; int cr4[] = { 1,0,1,1,0,1,1,1,1,0,0,1,0,0,1 }; int cr5[] = { 1,1,1,1,0,0,1,1,1,0,0,1,1,1,1 }; int cr6[] = { 1,1,1,1,0,0,1,1,1,1,0,1,1,1,1 }; int cr7[] = { 1,1,1,0,0,1,0,0,1,0,0,1,0,0,1 }; int cr8[] = { 1,1,1,1,0,1,1,1,1,1,0,1,1,1,1 }; int cr9[] = { 1,1,1,1,0,1,1,1,1,0,0,1,1,1,1 }; int n = 0; printf("input a number(0-9):");//输入想打印的数字 scanf_s("%d", &n); switch (n)//switch 多分支语句 { case 0:Init_ar(ar, 5, 3, cr0); Print_ar(ar, 5, 3); break; case 1:Init_ar(ar, 5, 3, cr1); Print_ar(ar, 5, 3); break; case 2:Init_ar(ar, 5, 3, cr2); Print_ar(ar, 5, 3); break; case 3:Init_ar(ar, 5, 3, cr3); Print_ar(ar, 5, 3); break; case 4:Init_ar(ar, 5, 3, cr4); Print_ar(ar, 5, 3); break; case 5:Init_ar(ar, 5, 3, cr5); Print_ar(ar, 5, 3); break; case 6:Init_ar(ar, 5, 3, cr6); Print_ar(ar, 5, 3); break; case 7:Init_ar(ar, 5, 3, cr7); Print_ar(ar, 5, 3); break; case 8:Init_ar(ar, 5, 3, cr8); Print_ar(ar, 5, 3); break; case 9:Init_ar(ar, 5, 3, cr9); Print_ar(ar, 5, 3); break; default: return -1; } return 0; }
运行结果:
输入5:
原文:https://www.cnblogs.com/1651472192-wz/p/14632116.html