C + + 程序的流程控制

合集下载

c语言的三种流程控制语句及语法格式

c语言的三种流程控制语句及语法格式

C语言是一种广泛应用的编程语言,其流程控制语句是编写程序中的重要部分。

流程控制语句用于控制程序的执行流程,包括顺序执行、条件执行和循环执行。

C语言中常用的流程控制语句主要包括顺序结构、选择结构和循环结构,下面将分别介绍它们的语法格式及使用方法。

1. 顺序结构顺序结构是程序中最简单的流程控制结构,也是最基本的结构。

顺序结构指的是按照代码的编写顺序依次执行,没有跳跃或分支。

在C语言中,顺序结构是程序的默认执行方式,没有特定的关键字或语法格式。

程序中的语句按照编写的顺序依次执行,直到程序结束。

例如:```cint m本人n() {int a = 1;int b = 2;int c = a + b;printf("The result is d\n", c);return 0;}```以上代码中的语句就是按照顺序依次执行的,没有条件判断或循环。

2. 选择结构选择结构是根据条件判断的结果决定程序执行的流程控制结构。

在C 语言中,选择结构有两种形式,分别是if语句和switch语句。

(1)if语句if语句用于根据条件判断的结果决定程序的执行流程。

其基本语法格式如下:```cif (condition) {// 当条件为真(非0)时执行此处的语句块} else {// 当条件为假(0)时执行此处的语句块}```在if语句中,condition代表一个表达式或逻辑判断,如果condition 的值为真(非0),则执行if后面的语句块;否则执行else后面的语句块。

例如:```cint score = 80;if (score >= 60) {printf("Pass\n");} else {printf("F本人l\n");}```以上代码中,根据score的值来判断是否及格,如果score大于等于60,则输出Pass,否则输出F本人l。

除了if和else关键字,还可以使用else if语句来实现多重条件判断:```cint score = 75;if (score >= 90) {printf("Excellent\n");} else if (score >= 80) {printf("Good\n");} else if (score >= 70) {printf("Average\n");} else {printf("F本人l\n");}```(2)switch语句switch语句也是一种选择结构,适用于有多个条件判断的情况。

C语言实验四

C语言实验四
9.打印数字金字塔。
1
1 2 1
1 2 3 2 1
1 2 3 4 3 2 1
·…·
·…·
·…·
1 2 3…8 9 8…3 2 1
对应答案:实验4程序流程控制
1.参考程序
#define PI 3.14159
main()
{
float r,c,s1,s2,v;
printf("Enter r:");
scanf("%f",&r);
exit(0);
}
do
{
printf("%d",x%10);
i++;
x=x/10;
}while(x!=0);
printf("\ni=%d\n",i);
}
5.参考答案
(1)2 2 3 3 4 4 5 5 5 6 6 7 7 7 7
(2)Chi(注意:回车符“↙”也作为一个字符)
(3)x=13
6.分析
方法一:借助最大公约数。两个数的最小公倍数等于这两个数的积除以其最大公约数,这样,可以先利用辗转相除法求出最大公约数,进而求出最小公倍数。
3.先分析下面程序的功能,然后输入一个3位整数进行调试,看一看分析的结果是否正确。
main()
{
int n,x1,x2,x3,y;
printf("Enter n:");
scanf("%3d",&n);
x1=n/100;
x2=n/10%10;
x3=n/100;
y=x3*100+x2*10+x1;
printf("y=%d",y);

C语言程序 第三章流程控制

C语言程序 第三章流程控制
5.编写程序,找到1000以内的所有“完数”。所谓“完数”是指一个数是其所有因子之和,例如6=1+2+3。
6.输出斐波那契(Fibonacci)数列的前20项。该数列的第1项和第2项为1,从第3项开始,每一项均为其前面2项之各和,即:1,1,2,3,5,8,......。
7.猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,只剩下一个桃子了。问第一天共摘了多少。
第三章流程控制
习题:
1.输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
2.求Sn =a+aa+aaa+…aa…a之值,其中a是一个数字,n表示a的位数,例如:
2+22+222+2222+22222(此时n=5),n由键盘输入。
3.求 (即求1!+2!+3!+4!+…+20!
4.求 。
10.出x的差的绝对值小于10-5。
(1)设定一个x的初值。
(2)用以上公式求出的下一个值x1
(3)再将x1代入以上公式右侧的xn,求出x的下一个值x2;
如此继续下去,直到前后两次求出的x值(xn和xn+1)满足以下关系:|
9.用二分法求下面方程在(-10,10)之间的根:

流程控制实验

流程控制实验

C语言程序设计实验报告一、实验名称流程控制实验二、实验目(de)1.掌握复合语句、if语句、switch语句(de)使用,熟练掌握for、while、do-while 三种基本(de)循环控制语句(de)使用,掌握重复循环技术,了解转移语句与标号语句.2.练习循环结构for、while、do-while语句(de)使用.3.练习转移语句和标号语句(de)使用.4.使用codeblocks开发环境中(de)调试功能:单步执行、设置断点、观察变量值.三、实验任务1.源程序改错题下面是计算s=n(de)源程序,在这个源程序中存在若干语法和逻辑错误.要求在计算机上对这个例子程序进行调试修改,使之能够正确完成指定任务.例如,8=40320.include <>void main(){int i,n,s=1;printf("Please enter n:");scanf("%d",n);for(i=1,i<=n,i++)s=si;printf("%d = %d",n,s);}2.源程序修改替换题(1)修改第1题,分别用while和do-while语句替换for语句.(2)修改第1题,输入改为“整数S”,输出改为“满足n≥S(de)最小整数n”.例如输入整数40310,输出结果为n=8.3.编程设计题(1)假设工资税金按以下计算方法计算:x<1000元,不收税金;1000<=x<2000,收取5%(de)税金;2000<=x<3000,收取10%(de)税金;3000<=x<4000,收取15%(de)税金;4000<=x<5000,收取20%(de)税金;x>5000, 收取25%(de)税金.编写一个程序,输入工资金额,输出应收取(de)税金,要求用if和switch语句来实现.(2)编写一个程序,将输入(de)一行字符复制到输出,复制过程中将一个以上(de)空格字符用一个空格字符代替.(3)打印如下杨辉三角形.1 /第0行 /1 1 /第1行 /1 2 1 /第2行 /1 3 3 11 4 6 4 11 5 10 10 5 11 6 15 20 15 6 11 7 21 35 35 21 7 11 8 28 56 70 56 28 8 11 9 36 84 126 126 84 36 9 1每个数据值可以由组合j i C 计算(表示第i 行第j 列位置(de)值),而j i C (de)计算如下:10=i C (i=0,1,2,…)j / 1)j -(i *1+=-j i j i C C (j=0,1,2,3, (i)本程序中为了打印出金字塔效果,要注意空格(de)数目.一位数之间是3个空格,两位数之间有2个空格,3位数之间只有一个空格,程序编制过程中要注意区分.(4)编写一个程序,将用户输入(de)任意正整数逆转,例如,输入1234,输出4321.四、 实验步骤及结果1.源程序改错题更改后(de)正确程序:include <>int main(),{int i,n,s=1;printf("Please enter n:");scanf("%d",&n);for(i=1;i<=n;i++)s=si;printf("%d=%d",n,s);return 0;}2.源程序修改替换题(1)while语句型替换程序include <>int main(){int i=1,n,s=1;printf("Please enter n:"); scanf("%d",&n);while(i<=n){s=si;i++;}printf("%d=%d",n,s);return 0;}(2)do-while语句型替换程序include <>int main(){int i=1,n,s=1;printf("Please enter n:");scanf("%d",&n);do{s=si;i++;}while(i<=n);printf("%d=%d",n,s);return 0;}3.编程设计题(1)税金收取问题程序:If语句型:include<>int main(){double income,tax,a,b;inx:printf("Please enter the income:\n");scanf("%lf",&income);a=income/1000;if(a>=0){if(a>=5)b=;if(a>=4)b=;if(a>=3)b=;if(a>=2)b=;if(a>=1)b=;elseb=;tax=incomeb;printf("the tax is %.1lf",tax); } else{printf("Enter error\n");goto inx;}}运行结果:Switch语句型:include<>int main(){double income,tax,a,b;inx:printf("Please enter the income:\n"); scanf("%lf",&income);a=income/1000;if(a<0){printf("Enter error\n");goto inx;}elseswitch((int)(a)){case 0:b=;break;case 1:b=;break;case 2:b=;break;case 3:b=;break;case 4:b=;break;default:b=;break;} tax=incomeb;printf("The tax is %.1lf",tax);return 0;}运行结果:(2)字符复制输出和多个空白字符删除:include<>int main(){int flag=1;char c;printf("please intput some chars:\n");while((c=getchar())='\n'){switch(c){case' ':if(flag){putchar(c);flag=0;}break;default:putchar(c);flag=1;}}if((c=getchar())=='\n')printf("%c",c);return 0;}运行结果:(3)杨辉三角:include<>define M 10define N 10int main(){int a[M][N],i,j;for(i=0;i<M;i++){for(j=N;j>=i;j--)printf("%2c",' ');for(j=0;j<=i;j++){if(i==j||j==0)a[i][j]=1;elsea[i][j]=a[i-1][j]+a[i-1][j-1]; printf("%3d ",a[i][j]);if(i==j)printf("\n");}}}运行结果:(4)数字逆转:include<>int main(){long x, digit;printf("please input a positive integer:\n"); scanf("%ld",&x);do{digit=x%10;printf("%ld",digit);x/=10;}while(x=0);printf("\n");return 0;}运行结果:五、实验体会通过这次C语言实验,我更进一步认识到了C语言学习理论、实践相结合(de)重要性.同时我也深深认识到if语句、if-else语句、switch、for、while以及do-while等在c语言实现中(de)重要作用,我会更加努力学习理论知识,时不时(de)上机实践来查找自己(de)不足进而是自己在C语言(de)学习上取得很大(de)进步,提高自己(de)实践能力.。

C51流程控制语句

C51流程控制语句
4.4 C51流程控制语句

C语句分类

表达式语句:表达式加分号;构成。 空语句: ;
程序控制语句(9种):
if( )~else~ switch for( )~ 循环 while( )~ do~while( ) continue break 辅助控制 goto return
分支
1
4.4.1 C程序的三种基本结构
24
一般形式: do { 循环体语句; } while(表达式); 执行流程:
循环体 真(非0)
while 表达式 假(0)
特点:先执行循环体,后判断表达式 说明: 至少执行一次循环体 17

3.for语句
for(循环变量赋初值;循环条件;修改循环变量) { 循环体语句; }
说明: for语句中表达式1,表达 式2 ,表达式3 都可省略, 但分号;不可省 无限循环: for(;;)
实现if ~ else 正确配对方法:加{ }
10
4. switch语句(开关分支语句)
一般形式:
switch 表达式 case E1 语句组1 E2 语句组2 En
…...
语句组n
执行过程:
switch( 表达式) { case E1: 语句组 1; break; case E2: 语句组 2; break; default ……. 语句组n+1 case En: 语句组 n; break; [default: 语句组n+1 ; break;] } 11
格式:if (表达式)
{
真(非0)
语句组; }
例:if (x>y) printf(“%d”,x);
5
4.4.2 选择语句

11-12-2学期C语言 第3章 C程序的流程控制2

11-12-2学期C语言 第3章 C程序的流程控制2

第三章 C程序的流程控制
【例2】用while语句求
n。
n 1
100
用传统流程图和N-S结构流程图表示算法,见图:
第三章 C程序的流程控制
【例2】用while语句求
n。
n 1
100
循环初值
循环变量增值
#include <stdio.h> main() { int i,sum=0; i=1; while(i<=100) { sum=sum+i; i++; } printf("%d",sum); }
第三章 C程序的流程控制
标号:语句; … ... 注意: goto 语句标号;
标号是一个有效的标识符,标识符加上一个“:”一起出现在函数内
某处, 执行goto语句后,程序将跳转到该标号处并执行其后的语句。
标号必须与goto语句同处于一个函数中,但可以不在一个循环层中。
通常goto语句与if条件语句连用。
第三章C程序的流程控制
例: #include<stdio.h> main( ) { int i; for(i=0;i<10;i++) putchar(‘a’+i); }
例: #include<stdio.h> main( ) { int i=0; for(;i<10;i++) putchar(‘a’+i); }
3.1.4 for 语 句
C中,for语句使用最为灵活,可完全取代 while 语句。
一般形式为: for(表达式1;表达式2;表达式3) 语句
执行过程:
1)先求解表达式1。
2)求解表达式2,若其值为真(非0),则执行for语句中指定的内嵌语句,然 后执行下面第3)步;若其值为假(0),则结束循环,转到第5)步。

第4章 C语言程序的基本控制结构

第4章 C语言程序的基本控制结构

#include<stdio.h> main() { int c1,c2; scanf("%c",&c); c1=c-1;c2=c+1; printf("%c%4c%4c\n",c1,c,c2); printf("%d%4d%4d\n",c1,c,c2); }
4.2 顺序结构
运行结果:
4.3选择结构
入口
入口
A 语句1 B

表达 式

条件 语句2 循环体
出口
图4.1 顺序结构
出口 出口
图4.2 选择(分支)结构 图4.3 循环结构
上述三种基本控制结构的共同特定是具有单入口和单出口。 还有一种goto语句,又叫转向语句,在本章的4.4.5小节中将会讲解到。 我们在编写程序时,力求使用前三种基本结构语句。
4.3选择结构
例4.3 幼儿园里三个小朋友站队要求小个站在前面,高个站在后面。 分析:我们可以把个子最小的小朋友放在a位置上,较高的小朋友放在b位 置上,个子最高的小朋友放在c位置上。输入三个数,a,b,c,要求按由小到 大的顺序输出。先比较a和b,若a大于b,则a与b对换,再比较a和c,若a 大于c,则a与c对换,这时a的值是最小的,最后比较b和c,若b大于c,则b 与c对换。这样操作之后就使a<b<c的关系成立。然后顺序输出a,b,c既可。
! 逻辑非,单目运算符,自右至左结合。其运算规则是:当 运算量为0,运算结果为1;反之,当运算量为1,运算结果为0。 && 逻辑与,双目运算符,自左至右结合。其运算规则是: 只有当运算符两边的运算量都是非0时,运算结果才为1,否则为0。 || 逻辑或,双目运算符,自左至右结合。其运算规则是:只 要运算符两边的运算量有一个为为非0,运算结果就为1。只有两 个运算量都为0,结果才是0。 这三个运算符的优先级,逻辑非!最高,逻辑与&&次之,逻 辑或||最低。!(逻辑非)的优先级高于算术运算符和关系运算符, 而&&(逻辑与)和||(逻辑或)的优先级低于算术运算符和关系运算符。 由 此可见: a>b&&c>d 相当于 (a>b)&&(c>d) a= =0||b= =0 相当于 (a= =0)||(b= =0) !a&&b= =c 相当于 (!a)&&(b= =c)

C语言03.1 流程控制(1 输入输出函数)

C语言03.1 流程控制(1 输入输出函数)
scanf("%d%c%f",&a,&b,&c) 输入: 25P12I.35
注意
在输入字符型数据时,若格式控制串中没有 非格式字符,则认为所有输入的字符均为有 效字符。
如: scanf("%c%c%c",&a,&b,&c);
只有当输入为:def 时(即:不能有间隔),才能 把‘d’赋于a,‘e’赋予b,'f'赋予c
字符输入输出函数
例:
#include <stdio.h> void main() { char c; c=getchar(); ++c; putchar(c); putchar('\n'); return; }
作业
参照课堂举例,编写程序,练习 printf()和scanf()函数的各种格式符, 显示并观察运算结果
格式字符
d,i o x,X u f e,E g,G c s
意义 以带符号的十进制形式输出整数(正数不输出符号) 以八进制形式输出无符号整数(不输出前缀0) 以十六进制无符号形式输出整数(不输出前缀Ox) 以无符号十进制形式输出整数 以小数形式输出单、双精度实数,隐含输出6位小数 以指数形式输出单、双精度实数 以%f或%e中较短的输出宽度输出单、双精度实数 输出单个字符 输出字符串
如:scanf(“%f”, a); ×
scanf("%f", &a); √
不能用格式控制来规定输入数据的精度
如: scanf("%7.2f",&a);
×
scanf("%f", &a);
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

例:
例1:输入一个年份判断是否闰年
源程序:
#include<iostream.h> void main(void) { int year; bool IsLeapYear; cout<<"Enter the year:";
继续
例1:输入一个年份判断是否闰年
cin>>year; IsLeapYear = ((year %4 = = 0 && year %100! = 0)||(year %400 = = 0)); if (IsLeapYear) cout<<year<<"is a leap year"<<endl; else cout<<year<<"is not a leap year"<<endl;
}
此例题结束!
3.2.3 if多分支结构
格式:if (条件1) 语句1 else if (条件2) 语句2 else if (条件3) 语句3 … else if (条件n) 语句n 〖else 语句n+1〗 原理:首先检测条件1,若满足则执行语句1; 否则检测条件2,若满足则执行语句2;否则 检测条件3,若满足则执行语句3……如果所 有的条件都不满足,则执行最后一个else后 的语句(语句n+1),若没有该语句则什么 也不做,如图。
继续
例4:输入一个0~6的整数,转换
成星期输出
break;
case 6: cout<<"Saturday"<<endl; break; default: cout<<"Day out of range Sunday . . . Saturday"<<endl; }
}
此例题结束!
关于switch多分支结构,应注意 以下几点:
返回
3.ห้องสมุดไป่ตู้ 循环结构
for循环 3.3.2 while循环 3.3.3 do…while循环 3.3.4 循环结构的特殊控制:
break和continue的使用
3.3.1
3.3.1 for循环
for语句的格式: for(循环初始化;循环条件;循环 参数调整)循环体 其中的循环条件应当是一个逻辑 表达式,而循环初始化和循环 参数调整都应当是具有副作用 的表达式,其中循环参数还应 当是一个能够影响循环条件的 表达式。 说明:1、括号内的三项都可以省 略,但分号不能省略。 2、循环条件如果省略,循环将无 终止的进行下去。

3.4.1 goto语句
利用goto语句可以无条件地转移到指定标号处。 标号定义格式: 标号 :语句语句 转移到指定标号的格式: goto标号:

3.4.2 return语句
return语句用于结束函数的运行并返回到调用处,其格式是: return〖表达式〗; 对于无返回值的函数,即说明为void F(…)的函数(F为任意的函数 名),可使用return;结束函数运行(return后无表达式)。 首页 结束
继续
例6:
do{
i++; a++; }while(i<3); i++; } cout<<a<<","<<i<<endl; }
此例题结束!
例7:求100~200之间不能被3 整除的数
源程序:
#include<iostream.h> void main() { for(n=100;n<=200;n++) { if(n%3!=0) printf("%d",n); } }
继续
例3:输入一个0~100分范围内的一
个成绩,显示相应的等级:
if(score<0 || score>100) cout<<"成绩必 须在0~100之间!"; else if(score<60) cout<<"不及格"<<endl; else if(score<70) cout<<"及格"<<endl; else if(score<80) cout<<"中"<<endl; else if(score<90) cout<<"良"<<endl; else cout<<"优"<<endl; }
例:
例3:输入一个0~100分范围内的一
个成绩,显示相应的等级:
90~100——优;80~89——良;70~79——中; 60~69——及格;60分以下——不及格。 源程序:#include<iostream.h> void main() { float score; cout<<"请输入成绩:"; cin>>score;
do…while语句的一般格式: do循环体while(循环条件) 由于这种结构先执行 后判断,因此其循环体至 少执行一次。
例:循环结构的嵌套
循环结构与选择结构 相互嵌套
例6:
源程序:
#include<iostream.h> void main() { int i(1),a(0); for(;i<=5;i++) {
此例题结束!
3.3.4 循环结构的特殊控制: break和continue的使用
1、break语句
使程序从循环和switch语句内跳出,继续 执行逻辑上的下一条语句。 break语句不能用在 别处.
2、continue语句
结束本次循环,接着开始判断决定是否继续 执行下一次循环。
3.4 其他流程控制
成星期输出
源程序:
#include<iostream.h> void main(void) { int day; cin>>day; switch(day) { case 0: cout<<"Sunday"<<endl; break;
继续
例4:输入一个0~6的整数,转换
成星期输出
case 1: cout<<"Monday"<<endl; break; case 2: cout<<"Tuesday"<<endl; break; case 3: cout<<"Wednesday"<<endl; break; case 4: cout<<"Thursday"<<endl; break; case 5: cout<<"Friday"<<endl;
此例题结束!
3.3.2 while循环
while语句的格式: while(循环条件)循环体 由于这种结构先判断 后执行,因此如果一开始 循环条件就不成立的话, 起循环体就一次也不执行。 While语句更具一般性, 一切用for语句实现的循 环也可以用while语句实 现。
3.3.3 do…while循环
C + + 程序的流程控制
3.1 3.2 3.3 3.4 流程控制与程序结构 条件分支结构 循环结构 其他流程控制
3.1 流程控制与程序结构
流程控制方式中三种最基本的:顺序控 制、条件分支控制和循环控制。 每一种控制都有赖于一种特定的程序 结构来实现,因此也就有三种基本程序结构: 顺序结构、条件分支结构和循环结构。
循环结构
循环控制就是指由特 定的条件决定某个语句重 复执行次数的控制方式。 循环结构还可以进一 步分为先判断后执行结构 和先执行后判断结构。在 C + +中用while语句、 for语句和do…while语 句实现。
3.2 条件分支结构
3.2.1 3.2.2 3.2.3 3.2.4 结构

例5:输入一个整数,求出它的 所有因子
源程序:
#include<iostream.h> void main(void) { int n,k; cout<<"Enter a positive integer:";
继续
例5:输入一个整数,求出它的 所有因子
cin>>n; cout<<"Number "<<n<<" Factors"; for(k=1;k<=n;k++) if(n%k==0) cout<<k<<" "; cout<<endl; }



1、整型表达式处如果不是整 型,则它的值将被自动转换成 整型。 2、整型常量表达式是指在编 译时可确定其值的整型表达式, 通常就是一个整型常量。如果 表达式的类型不是整型,将被 自动转换为整型。 4、语句序列可以是空的,即 其中一个语句也没有。


3、所有语句序列按其排列顺 序相互衔接,而case的作用只 是标明一个入口以及转入该入 口的条件。一旦从某个入口进 入一个语句序列,就从该语句 序列开始顺序执行,直到以下 所有语句序列执行完毕时为止。 5、break语句的作用是提前结 束switch语句的执行。如果每 个语句序列的最后一个语句都 是break,则这样的switch多 分支结构可以用等效的if多分 支结构代替。
相关文档
最新文档