循环结构和分支结构复习

阅读: 评论:0

循环结构和分支结构复习

循环结构和分支结构复习

一、循环结构

1、while语句:
适用范围比for广,其一般形式为:
while(表达式){
    循环体语句
}
表达式为while循环为真的情况,循环终止并执行while的下一条语句。
使用方法:
1)while语句的表达式可以是任意合法的表达式,循环体语句只能是一条语句。
2)while语句构成简单,只有一个表达式和一条循环语句
补充:for语句可与while语句相互转化。

例1:用格雷戈里公式求给定精度的Π值。使用格雷戈里公式求Π的近似值,要求精确到
最后一项的绝对值小于给定精度eps。
Π/4=1-1/3+1/5-1/7+……

#include <stdio.h>
int main(void)
{int denominater = 1,flag = 1;double thelastone = 1,sum = 0,eps;scanf("%lf",&eps);while(thelastone >= eps){sum = sum + thelastone * flag;denominater = denominater + 2;flag = flag * (-1);thelastone = 1.0 / denominater;}printf("%f",sum*4);return 0;
}

执行结果如下:

2、break和continue语句的比较使用:
1)break语句强制循环结束,一但执行break语句,循环提前结束,不再执行循环体中位于其后的其它语句。
break语句应与if语句一起使用,否则永远执行不了其后的语句。
2)continue语句的作用是跳过循环体中continue后面的语句,继续下一次循环。
continue语句一般也与if语句配套使用。(continue语句和while语句一起使用可能会导致死循环)
continue和break语句的区别:
1)break结束循环,而continue只是跳过后面的语句继续循环。
2)break除了用于循环,还可用于switch语句,而continue只能用于循环。

 


3、嵌套循环:
嵌套循环中,由于循环一般为多个,所以一般用flag赋值来跳出循环,而break只能跳出一个循环。
内外层循环的循环变量不能相同。


4、循环结构的选择:
1)循环次数已知:for语句
2)循环次数未知,循环条件在进入循环时明确:while语句
3)循环次数未知,循环条件需要在循环体中明确:do-while语句

二、分支结构

1、字符型数据的输入和输出:
1)定义时:
类型名为char
例如:char op (其中op的值为字符型数据)
2)输入输出:scanf( )、getchar( )、printf( )、putchar( )
其中getchar( )和putchar( )一次只能输入输出一个字符,所以一般在需要输入或输出多个字符的时候,一般用循环结构或使用scanf( )和printf( )
getchar( )的使用:ch = getchar( );
putchar( )的使用:putchar(输出参数);
!!!一般情况下,需要用getchar( )形式对第一个输入的换行符字符进行舍弃(清除缓冲区)!!!


2、switch语句:
switch语句可以处理多分支选择问题,根据break语句的使用方法,分为三种情况:
1)在switch语句的每个语句段都使用break语句(主要使用方法):
一般形式为:
switch(表达式){
    case 常量表达式1: 语句段1;break;
    case 常量表达式2: 语句段2;break;
    ……
    case 常量表达式n: 语句段n;break;
    default:                语句段n+1;break;
}
在其中,表达式和常量表达式的值一般是整型或字符型,所有的常量表达式的值都不能相等。
每个语句段可以包括一条或多条语句,也可以是空语句。
2)在switch语句中不使用break语句:
switch(表达式){
    case 常量表达式1: 语句段1;
    case 常量表达式2: 语句段2;
    ……
    case 常量表达式n: 语句段n;
    default:                语句段n+1;
}
在求解表达式后,如果表达式的值与某个常量表达式的值相等,则执行该常量表达式后的所有语句段;
如果表达式的值与任何一个常量表达式的值都不相等,则执行default后的所有语句段。
3)在switch语句的某些语句段中使用break语句。

例1:查询自动售货机中商品的价格。假设自动售货机出售4种商品:薯片(crisps)、爆米花(popcorn)、巧克力(chocolate)和
可乐(cola),售价分别是每份3.0、2.5、4.0和3.5。在屏幕上显示以下菜单(编号和选项),用户可以连续查询商品的价格,当查询
次数超过5次时,自动退出查询;不到5次时,用户可以连续查询商品的价格。当用户输入编号1-4,显示对应商品的价格(保留一位小数);
输入0,退出查询;输入其他编号,显示价格为0。要求使用switch语句编写。
【1】Select crisps
【2】Select popcorn
【3】Select chocolate
【4】Select cola
【0】Exit

代码如下:

#include <stdio.h>
int main(void)
{int i,num;printf("[1] Select crispsn");printf("[2] Select popcornn");printf("[3] Select chocolaten");printf("[4] Select colan");printf("[0] Exitn");for(i = 1;i <= 5;i++){printf("Enter choice:");scanf("%d",&num);if(num == 0){break;}switch(num){case 1:printf("The price is 3.0n");break;case 2:printf("The price is 2.5n");break;case 3:printf("The price is 4.0n");break;case 4:printf("The price is 3.5n");break;default:printf("The price is 0n");break; }}printf("Thanksn");return 0;
}

执行结果如下:

 


例2:两个数的简单计算器。编写一个简单的计算器程序,可根据输入的运算符,对两个整数进行加、减、
乘、除和求余运算,请对除数为0的情况作特别处理。要求使用switch语句编写。

#include <stdio.h>
int main(void)
{int x1,x2;char op;printf("Type in an expression:");scanf("%d %c %d",&x1,&op,&x2);switch(op){case '+': printf("%d + %d = %d",x1,x2,x1+x2);break;case '-': printf("%d - %d = %d",x1,x2,x1-x2);break;case '*': printf("%d * %d = %d",x1,x2,x1*x2);break;case '/': if(x2 == 0){printf("Divisor can not be 0!n");}else{printf("%d / %d = %d",x1,x2,x1/x2);}break;case '%': if(x2 == 0){printf("Divisor can not be 0!n");}else{printf("%d % %d = %d",x1,x2,x1%x2);}break;default: printf("Unknown operatorn");break;}return 0;
}

执行结果如下:

 


例3:输入一个正整数n,再输入n个字符,分别统计出其中的空格或回车、数字字符和其他字符的个数。要
求用switch语句编写。

#include <stdio.h>
int main(void)
{int n,i,blank = 0,digit = 0,other = 0;char op;scanf("%d",&n);getchar(); //记得舍弃换行符 for(i = 1;i <= n;i++){scanf("%c",&op);switch(op){case ' ':case 'n':blank++;break;case '0':case '1':case '2':case '3':case '4':case '5':case '6':case '7':case '8':case '9':digit++;break;default:other++;break;}}printf("blank=%d,digit=%d,other=%dn",blank,digit,other);return 0;
}

执行结果如下:

 

本文发布于:2024-01-28 13:20:56,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17064192617707.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:结构   分支
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23