C语言选择结构.docx
- 文档编号:28008631
- 上传时间:2023-07-07
- 格式:DOCX
- 页数:11
- 大小:17.80KB
C语言选择结构.docx
《C语言选择结构.docx》由会员分享,可在线阅读,更多相关《C语言选择结构.docx(11页珍藏版)》请在冰豆网上搜索。
C语言选择结构
clrscr();/*清屏*/
选择结构
一、单分支选择语句
1.格式
if(表达式)语句
2.功能
当表达式的值为非0(真、条件成立)时,执行“语句”。
否则执行if之后的下一句。
3.说明
(1)表达式可以是任意类型的表达式(结果是数值型),但通常是关系或逻辑表达式。
也可以是数值型的常量或变量(它们是最简单的表达式)。
(2)“语句”可以是以分号结束的单个语句,也可以是一个复合语句。
不可以是多个语句。
4.举例
例1、任意读入两个整数,然后输出其中的较大者。
main()
{intx,y;
scanf("%d%d",&x,&y);
if(x>y)printf("%d\n",x);
if(y>=x)printf("%d\n",y);
}
二、双分支if语句
【格式】
if(表达式)
语句1
else
语句2
【功能】
【说明】
1.“语句1”和“语句2”可以分别是以分号结束的单个语句,也可以分别是一个复合语句。
都不可以是多个语句。
2.else子句不可以独立存在。
改写上例:
任意读入2个整数,输出较大数。
main()
{intx,y;
scanf("%d%d",&x,&y);
if(x>y)
printf("%d\n",x);
else/*暗含两种情况:
<和=*/
printf("%d\n",y);
}
例如:
任意读入2个整数,按从小到大的顺序输出这2个数。
【法1】
main()
{intx,y;
scanf("%d%d",&x,&y);
if(x printf("%d,%d\n",x,y); else printf("%d,%d\n",y,x); } 【法2: 借助第三数,完成两数的交换】 让x中放较小数,y中放较大数。 main() {intx,y; intt;/*中间变量*/ scanf("%d%d",&x,&y); if(x>y) {t=x;x=y;y=t;} printf("%d,%d\n",x,y); } 【基本算法一: 两数交换,借助第三数】 t=x;x=y;y=t; 【思考: 本题改成“任意读入3数,从小到大输出”】 三、多分支if语句 【格式】 if(表达式1) 语句1 elseif(表达式2) 语句2 elseif(表达式3) 语句3 …… else 语句n+1 【功能】 【注意】else和if之间有空格。 最后的else子句可以省。 【举例】 例1、批发铅笔,批发量x, 100≤x<300,打7折; 300≤x<500,打5折; 500≤x<1000,打4.5折; x>=1000,打4折。 其余不 打折。 求顾客应付款。 (1元/支) 【法1: 多分支选择语句】 main() {intx; floatcost; scanf("%d",&x); if(x>=1000) cost=1*x*0.4; elseif(x>=500) cost=1*x*0.45; elseif(x>=300) cost=1*x*0.5; elseif(x>=100) cost=1*x*0.7; else cost=1*x; printf("cost=%f\n",cost); } %m.nf(m、n是正整数,通常m>n, m表示整个实数所占显示宽度,包含小数点,实数宽度不够时,左补空格; n表示小数点右边的位数。 ) 例如: printf("%6.2f\n",3.14159); UU3.14(U代表空格) 又如: printf("%3.4f\n",3.14159); 3.1416 【注意】%m.nf的格式可以省写成“%.nf”,即可将m省略。 %-m.nf(若数宽度不够,则右补空格) %.nf(m可以省,满足小数点后保留n位,该实数实际需要占多少位,就占多少位。 ) 关于整数: %md: 输出的整数若位数不足m位,左补空格。 %-md: 输出的整数若位数不足m位,右补空格。 例: 任意读入一个年份,判断其是否为闰年。 (能被400整除,或能被4整除且不能被100整除的,就是闰年) 四、if语句的嵌套(if语句中含有另一个if语句) 例1: 铅笔打折的改写。 main() {intx; floatcost; scanf("%d",&x); if(x<100) cost=1*x; else if(x<300) cost=1*x*0.7; else if(x<500) cost=x*1*0.5; else if(x<1000) cost=1*x*0.45; else cost=1*x*0.4; printf("cost=%.2f\n",cost); } 【注意】 (1)外选择语句必须完整地 包含内选择语句,请缩进书写。 (2)else总是和前面最近的一个没有配对且有资格配对的if配对。 例2、任意读入一个字符, 判断其是否为数字字符,若是, 进一步判断其是否为’5’,是 就输出该字符及其ASCII码值; 若不是数字字符,就输出 “Isnotdigit! ”。 【法一: 利用ASCII值判断】 #include main() {charc; c=getchar(); if(c>='0'&&c<='9') {if(c=='5') printf("%c,%d\n",c,c);} else puts("Isnotdigit! \n"); } 【用{}取消内if的配对资格! 】 【法二: 利用系统函数isdigit判断数字字符】 用系统函数(库函数): isdigit(字符型数据) 含义是判断“字符型数据”是否为数字字符。 (是,则函数返回值为非0;否则为0),使用时一定要加头文件“ctype.h”。 #include #include main() {charx; scanf("%c",&x); if(isdigit(x)! =0)/*逻辑等价于isdigit(x)*/ {if(x=='5') printf("%c: %d\n",x,x);} else printf("Isnotdigit! \n"); } 【将光标移到系统函数名下方,然后按Ctrl+F1,弹出对应头文件名。 按Esc键回到蓝色编辑环境。 】 【结论】 (1)用{}扩住某单分支if语句,可以取消其与else的配对资格! (2)两组逻辑等价式: 变量a格式 a取值 逻辑等价式 a 0或非0 a! =0 ! a 0或非0 a==0 【解释: 】 数值数据a a! =0 0(假) 假 非0(真) 真 所谓“逻辑等价”就是,当某式子的结果被当做逻辑值用时,其逻辑等价式的真值与该式子完全一致。 五、多分支switch语句 【格式】 switch(表达式) {case常量1: 语句块1;break; case常量2: 语句块2;break; case常量3: 语句块2;break; …… default: 语句n+1; } 【说明】 (1)switch后的表达式通常 是整型或字符型表达式(常量、变量); (2)case后的常量必须是 整型或字符型。 (3)“break;”语句只能出现 在switch或循环语句中。 作用 是跳出所在语句结构。 (4)“语句块1;……语句块n+1;” 可以是若干个语句,不必构成一个 复合语句。 (5)default分支可以省略。 【功能】 例1: 改写铅笔。 #include main() {intx; floatcost; scanf("%d",&x); switch(x/100) {case0: cost=1*x;break; case1: case2: cost=1*x*0.7;break; case3: case4: cost=1*x*0.5;break; case5: case6: case7: case8: case9: cost=1*x*0.45;break; default: cost=1*x*0.4; } printf("%.2f\n",cost); } 【而以下也正确】 #include main() {intx; floatcost; scanf("%d",&x); switch(x/100) {case1: case2: cost=1*x*0.7;break; default: cost=1*x*0.4;break; case3: case4: cost=1*x*0.5;break; case5: case6: case7: case8: case9: cost=1*x*0.45;break; case0: cost=1*x; } printf("%.2f\n",cost); } 【注意】 (1)各分支位置可以不分先后(不好! 应试的)。 但依然只有最后一个分支可以不加break;语句! 。 (2)两个(或以上)相邻分支的操作一样,可将对应语句写在最后一个分支上。 (3)如果前面的分支缺了break语句,则无条件地接着做下一个分支的语句,直到遇到break;或switch的}为止。 【补充: 4个数学函数,要加 #include 1、pow(x,y) 功能: 计算xy 2、abs(数值型表达式) 求“数值型表达式”的绝对值,即 |数值型表达式|。 注意: 必须是整型数据。 3、fabs(实数表达式) 求绝对值 4、sqrt(正数) 求“正数”的平方根。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 选择 结构