做携程怎样的网站,揭阳网站推广教程,前端入职一周被劝退,成都本地网站控制语句就是用来实现对流程的选择、循环、转向和返回等控制行为。
分支语句
if语句
基本结构 if(表达式) { 语句块1#xff1b; } else { 语句块2#xff1b; } 执行顺序#xff1a;
如果表达式判断成立#xff08;即表达式为真#xff09;#xff0c;则执行语句块…控制语句就是用来实现对流程的选择、循环、转向和返回等控制行为。
分支语句
if语句
基本结构 if(表达式) { 语句块1 } else { 语句块2 } 执行顺序
如果表达式判断成立即表达式为真则执行语句块1如果表达式判断不成立即表达式为假则执行语句块2。 例如 如果下雨就打印 “with umbrella” 如果不下雨就打印 “no umbrella” 。 #include stdio.h
#include stdlib.h#define RAIN 0int main(int argc,char const * argv[])
{if(RAIN)printf(with umbrella\n);elseprintf(no nmbrella\n);return 0;
} 输入a和b两个整数实现用较大的数减较小的数。 int a,b;
scanf(%d%d,a,b);
if(ab)printf(%d\n,a-b);
elseprintf(%d\n,b-a); 以下程序的运行结果是B int main()
{unsigned int a;int b-1;ab;printf(%u,a);return 0;
} A. -1 B. 65535 C. 32767 D. -32768 解析 有符号数转换为无符号数就是该数的补码即有符号数为正数时转换为无符号数就是他本身为负数时转换为无符号数就是他的补码。 拓展 同样字长的无符号数和有符号数之间相互转换的一般规则是数值可能会变但是位模式不变如果转换的无符号数太大以至于超过了补码能够表示的范围可能会得到该范围的最大值。 设有定义语句 char c192,c292; 则以下表达式中值为零的是A A. c1^c2 B. c1c2 C. ~c2 D. c1|c2 如果a1,b2则a | b的值为D A. 0 B. 1 C. 2 D. 3 实现大小写字符转换 #include stdio.h
#include stdlib.hint main(int argc,char const * argv[])
{char cgetchar();if(cAcZ)ch32;else if(cacz)ch-32;else{printf(input error\n);return ;}putchar(c);putchar(10);return 0;
} 结合宏定义和三目运算实现求两个数的差 解析在宏定义中定义了变量在函数中不能出现同名变量 #include stdio.h
#include stdlib.h/*三目运算结合宏*/
#define M 20
#define N 10
#define DIFF MN?M-N:N-M/*三目运算结合宏函数*/
#define DIFF_FUN(a,b) ab?a-b:b-aint main(int argc,char const *argv[])
{printf(%d\n,DIFF);printf(%d\n,DIFF_FUN(M,N)); //调用宏函数:MN?M-N:N-Mreturn 0;
} 分层结构 if表达式1 { 语句块1 } else if表达式2 { 语句块2 } else { 语句块3 } 执行顺序
先判断if后面的表达式1是否成立如果成立即结果为真则执行语句块1如果结果为假则继续判断else if里面的表达式2如果表达式2成立则执行语句块2如果结果为假则执行else里面的语句块3。 例如 判断两个数的大小关系。 #include stdio.h
#include stdlib.hint main(int argc,char const * argv[])
{int a,b;scanf(%d %d,a,b);if(ab)printf(ab\n);else if(ab)printf(ab\n);elseprintf(ab\n);return 0;
} 从终端输入一个学生的成绩来判断学生成绩的等级并打印出来等级评判如下 90-100为A80-89为B70-79为C60-69为D60分以下为不及格打印sorryyou fail #include stdio.h
#include stdlib.hint main(int argc,char const * argv[])
{int score;scanf(%d,score);if(score100score90)printf(A\n);else if(score80score89)printf(B\n);else if(score70score79)printf(C\n);else if(score60score69)printf(D\n);else if(score59)printf(sorry,you fail\n);elseprintf(input error\n);return 0;
} 嵌套结构 if表达式1 { if表达式2 { 语句块1 } else { 语句块2 } } else { 语句块3 } 执行顺序
先判断if后面的表达式1如果结果为真则判断嵌套的if后面的表达式2如果表达式2结果为真 则执行语句块1如果结果为假则执行语句块2如果表达式1结果为假则执行语句块3。 从终端输入一个学生的成绩来判断学生成绩的等级并打印出来如果输入的不是int型数据则打印 “input error” 等级评判如下 90-100为A80-89为B70-79为C60-69为D60分以下为不及格打印sorryyou fail #include stdio.h
#include stdlib.hint main(int argc,char const * argv[])
{int score;scanf(%d,score);if(score0score100){if(score100score90)printf(A\n);else if(score80score89)printf(B\n);else if(score70score79)printf(C\n);else if(score60score69)printf(D\n);else if(score59)printf(sorry,you fail\n);}elseprintf(input error\n);return 0;
} 输入一个int类型的数据如果大于0则打印大于0并且再判断是否大于等于10如果大于等于10则打印大于等于10小于10则打印小于10如果数据小于0则不打印任何东西。 #include stdio.h
#include stdlib.hint main(int argc,char const * argv[])
{int num0;scanf(%d,num);if(num0){printf(num0\n);if(num10){printf(num10);}elseprintf(num10\n);}return 0;
} 总结
首先需要判断表达式是否成立 如果成立就执行if里面的语句块否则执行else里面的语句块if后面可以没有else但是else前面必须有if并且else必须紧跟着if后面中间不能加任何语句if和else下面语句块中如果只有一行语句则可以省略花括号。
switch…case语句
基本结构 switch变量或表达式 { case 常量1 语句块1 break case 常量2 语句块2 break …… default 语句块n1 } 执行顺序
当switch后面括号中的变量或表达式与下面其中一个case后面的常量相符时就执行相应case语句后面的语句块并依次执行后面的case直到遇到break语句跳出switch语句。如果变量或表达式与所有的case后面的常量都不相等则执行default后面的语句块。
注意
switch后面的表达式不能是浮点型数据或字符串case后面的break可以省略但是省略后会从相符的case开始顺序执行直到遇到break结束。 从终端输入一个学生的成绩然后打印出来对应成绩的等级要求用到switch…case结构编写等级评判如下 90-100为A80-89为B70-79为C60-69为D60分以下为不及格打印sorryyou fail #include stdio.h
#include stdlib.hint main(int argc,char char const * argv[])
{int score;scanf(%d,score);switch(score/10){case 10:case 9:printf(A\n);break;case 8:printf(B\n);break;case 7:printf(C\n);break;case 6:printf(A\n);break;default:printf(sorry,you fail\n);break;}return 0;
} 从终端输入一个日期年、月、日判断这是这一年的第几天。 解析 首先要先判断是闰年还是平年闰年的二月份比平年的二月份多一天。普通年份除以4有余数的是平年没有余数的是闰年对于整百的年份要除以400有余数的是平年没有余数的是闰年。 方法一 #include stdio.h
#include stdlib.hint main(int argc, char const *argv[])
{int year, month, day, days 0, leap 0;scanf(%d %d %d, year, month, day);if (year % 100 0){if (year % 400 0)leap 1;elseleap 0;}else{if (year % 4 0)leap 1;elseleap 0;}switch (month){case 1:days day;break;case 2:days 31 day;break;case 3:days 31 28 leap day;break;case 4:days 31 28 leap 31 day;break;case 5:days 31 28 leap 31 30 day;break;case 6:days 31 28 leap 31 30 31 day;break;case 7:days 31 28 leap 31 30 31 30 day;break;case 8:days 31 28 leap 31 30 31 30 31 day;break;case 9:days 31 28 leap 31 30 31 30 31 31 day;break;case 10:days 31 28 leap 31 30 31 30 31 31 30 day;break;case 11:days 31 28 leap 31 30 31 30 31 31 30 31 day;break;case 12:days 31 28 leap 31 30 31 30 31 31 30 31 30 day;break;default:printf(month err\n);break;}printf(%d\n,days);return 0;
} 方法二 #include stdio.h
#include stdlib.hint main()
{int year 0, month 0, day 0, days 0, leap 1;scanf(%d %d %d, year, month, day);leap (year % 4 0 year % 100 ! 0 || year % 400 0);switch (month){case 12:days 30;case 11:days 31;case 10:days 30;case 9:days 31;case 8:days 31;case 7:days 30;case 6:days 31;case 5:days 30;case 4:days 31;case 3:days 28 leap;case 2:days 31;case 1:days day;break;default:printf(error!\n);break;}printf(%04d-%02d-%02d:这一年的第%d天\n, year, month, day, days);return 0;
} 总结
执行顺序先判断switch括号中的条件是否满足switch语句块里的case如果满足哪个case则执行那个case里面的语句块如果不满足则执行default中的默认语句块并且如果case后面没有break会依次向下执行直到遇到break后结束。如果case后面的语句块和上一个case中的语句块相同那么可以省略形式如下 case 常量1 case 常量2 语句块1 break switch…case语句要遵循的规则
只能针对基本数据类型的整型数据或字符型数据如果要判断的条件是其他类型必须用ifcase后面的标签必须是常量case后面的标签必须是唯一表达式不能有两个重复的case。
循环语句
for循环
基本结构 for表达式1表达式2表达式3 { 语句块 } 说明 表达式1赋初值 表达式2循环判断条件 表达式3增值或减值 执行顺序
首先执行表达式1进行赋初值然后判断表达式2是否成立如果成立就进入循环执行语句块最后执行表达式3进行增值或者减值再判断表达式2是否成立如果成立就再次进入循环直到判断表达式2不成立的时候退出循环。 例如 求5的阶乘5 int sum1;
for(int i1;i5;i)sum*i;
printf(%d\n,sum); 嵌套结构 for表达式1表达式2表达式3 { for表达式4表达式5表达式6 { 语句块 } } 例如 用for循环打印99乘法表 1*11 1*22 2*24 1*33 2*36 3*39 1*44 2*48 3*412 4*416 1*55 2*510 3*515 4*520 5*525 1*66 2*612 3*618 4*624 5*630 6*636 1*77 2*714 3*721 4*728 5*735 6*742 7*749 1*88 2*816 3*824 4*832 5*840 6*848 7*856 8*864 1*99 2*918 3*927 4*936 5*945 6*954 7*963 8*972 9*981 #include stdio.h
#include stdlib.hint main(int argc,char const * argv[])
{for(int i1;i10;i){for(int j1;ji;j)printf(%d*%d%d ,j,i,i*j);printf(\n);}return 0;
} for循环变形
变形一 表达式1 for表达式2表达式3 { 语句块 } 变形二 表达式1 for表达式2 { 语句块 表达式3 } 变形三 表达式1 for { if表达式2 { 语句块 表达式3 } else { break } } 例题 打印所有的水仙花数 水仙花数三位数的百位立方十位立方个位立方原数 #include stdio.h
#include stdlib.hint main(int argc,char const argv[])
{int g,s,b,num;for(int i100;i1000;i) {gi%10;si/10%10;bi/100;numg*g*gs*s*sb*b*b;if(numi)printf(%d\n,i);}return 0;
} 从终端输入行数例如输入5打印类似于下图的图形。 分析 下半部分的行数和空格数关系表 行数 i空格数 i-1星星数 5 - i 1105 5 - 1 1214 5 - 2 1323 5 - 3 1432 5 - 4 1541 5 - 5 1 #include stdio.h
#include stdlib.hint main(int argv,char const * argc[])
{int n;scanf(%d,n);for(int i1;in;i){for(int j1;ji;j)printf(*);printf(\n);}for(int i1;in;i){for(int j1;ji;j)printf( );for(int k1;kn-11;k)printf(*);printf(\n);}return 0;
}while循环
基本结构 定义循环变量并赋初值 while判断条件 { 语句块 增值或减值语句 } 执行顺序
首先定义循环变量并赋初值然后判断条件是否满足如果满足则进入循环体系并进行增值或减值语句然后再进行判断如果满足则再次进入循环体系直到不满足条件就退出循环类似于for循环的第二种变形。 例如 用while循环求1到100的和 #include stdio.h
#include stdlib.hint main(int argc,char const * argv[])
{int i1,sum0;while(i100){sumi;i;}printf(%d\n,sum);return 0;
} do…while循环
基本结构 do { 语句块 增值或减值语句 }while判断条件 执行顺序
先执行再判断。 用do…while循环求1到100的和 #include stdio.h
#include stdlib.hint main(int argc,char const * argv[])
{int i1,sum0;do{sumi;i;}while(i100);printf(%d\n,sum);return 0;
} 上图中左边是do…while循环右边是while循环 do…while和while的区别
执行顺序不同do…while先执行后判断while先判断后执行。执行次数不同do…while至少执行一次但是如果一开始满足判断条件则两者执行次数相同。
死循环 for{} while1{} while1 循环控制语句
break
break直接结束循环如果是嵌套的话是结束一层循环。
continue
continue结束本次循环继续下一次循环。
goto
goto强制跳转到标签位置可以用于多层嵌套循环尽量不要使用goto。 练习 打印100-200中所有能被三整除的数 #include stdio.h
#include stdlib.hint main(int argc, char const *argv[])
{int n;for(n100;n200;n){if(n%3!0) continue;printf(%d ,n);}printf(\n);return 0;
} 练习 从终端上循环输入一个字符并在终端上输出 这个字符当输入的字符为 q 时程序结束。 #include stdio.h
#include stdlib.h
int main()
{char ch;while(1){scanf(%c,ch);//getchar();if(ch\n)continue;if(chq)break;printf(%c\n,ch);}return 0;
} 死循环结束场景
使用在循环语句中为了结束循环在使用时需要加判断条件。 练习 循环输入一个5位数判断是不是回文数当输入的数是0时循环结束输入的数是回文数循环也结束。 解析 12321是回文数即个位与万位相同十位与千位相同。 #include stdio.h
#include stdlib.h
{int n0,g,s,b,q,w;while(1){scanf(%d,n);gn%10;sn/10%10;bn/100%10;qn/1000%10;wn/10000;if((gww!0)qs||n0){printf(%d\n,n);break;}}return 0;
} 输入任意两个数输出两个数之间包括这两个数各偶数之和。 解析 从输入的较小的数开始依次加1判断是否为偶数直到加到较大的数为止每次都判断当前数是否是偶数是则累加到sum中。 #include stdio.h
#include stdlib.h
int main()
{int a,b,c,sum0;scanf(%d %d,a,b);if(ab){ca;ab;bc}while(ab){if(a%20)suma;a;}printf(sum%d\n,sum);return 0;
}