C语言程序设计第四章循环结构
C语言程序设计(第3版)何钦铭-颜-晖-第4章-循环结构

第4章循环结构【练习 4-1】在例 4-1 程序中,如果对 item 赋初值 0,运行结果是什么?为什么?如果将精度改为 10-3,运行结果有变化吗?为什么?解答:如果对 item 赋初值 0,则程序运行结果是 pi=0,因为 item 为 0 时不满足 while 循环的执行条件,即不执行循环,故 pi 值为 0。
如果将精度改为10-3,运行结果会有变化,因为精度改变意味着 while 循环的条件改变,精度变大使得 while 循环次数减少,必然影响到π的值。
【练习 4-2】运行例 4-2 程序时,如果将最后一个输入数据改为-2,运行结果有变化吗?如果第一个输入数据是 -1,运行结果是什么?为什么?解答:如果将最后一个输入数据改为-2,运行结果没有变化,因为最后一个负数是一结束标志,不进行统计,故任意一个负数都可以。
如果第一个输入数据是-1,运行结果是:Grade averageis 0,因为第一个输入就是-1,则 while 循环条件不成立,不执行循环体。
【练习 4-3】序列求和(1-1/4+1/7-1/10+1/13-1/16+…):输入一个正实数 eps,计算序列1-1/4+1/7-1/10+1/13-1/16+…的值,精确到最后一项的绝对值小于eps(保留6位小数)。
试编写相应程序。
解答:#include <stdio.h>#include <math.h>int main(void){int denominator, flag;double item, s,eps;printf(“Input eps:”);scanf(“%lf”,&eps);flag = 1;denominator = 1 ;item = 1.0;s = 0;while(fabs (item) >= eps) {item = flag * 1.0 / denominator;s = s + item;flag = -flag;denominator = denominator +3;}printf ( “s = %f\n”, s);return 0;}【练习 4-4】如果将例 4-3 程序中的 do-while 语句改为下列 while 语句,会影响程序的功能吗?为什么?再增加一条什么语句,就可以实现同样的功能?while(number != 0){number = number / 10;count ++;}解答:会有影响,因为当输入数据 number 为 0 时,上述 while 循环将不执行,count 值仍为 0,故输出为 0,不符合题目要求。
c语言循环结构程序设计

c语言循环结构程序设计以C语言循环结构程序设计为标题在C语言中,循环结构是一种常用的程序设计方式,可以重复执行一段代码,从而实现某种特定的功能。
循环结构使得程序更加灵活和高效,能够处理大量重复性的任务。
本文将介绍C语言中常用的循环结构,以及一些常见的循环结构程序设计的示例。
一、循环结构的基本概念循环结构是一种控制结构,它允许程序重复执行某个代码块,直到满足退出循环的条件。
在C语言中,常见的循环结构有while循环、do-while循环和for循环。
1. while循环:while循环先判断条件是否成立,如果条件成立,则执行循环体中的代码,然后再次判断条件是否成立,如此循环下去,直到条件不成立时,退出循环。
示例代码:```int i = 0;while (i < 10) {printf("%d\n", i);i++;}```2. do-while循环:do-while循环先执行循环体中的代码,然后再判断条件是否成立,如果条件成立,则继续执行循环体中的代码,如此循环下去,直到条件不成立时,退出循环。
示例代码:```int i = 0;do {printf("%d\n", i);i++;} while (i < 10);```3. for循环:for循环在执行前先进行初始化,然后判断条件是否成立,如果条件成立,则执行循环体中的代码,然后执行循环迭代语句,再次判断条件是否成立,如此循环下去,直到条件不成立时,退出循环。
示例代码:```for (int i = 0; i < 10; i++) {printf("%d\n", i);}```二、循环结构程序设计示例1. 计算1到100的累加和```int sum = 0;for (int i = 1; i <= 100; i++) {sum += i;}printf("1到100的累加和为:%d\n", sum); ```2. 判断一个数是否为素数```int num;printf("请输入一个正整数:");scanf("%d", &num);int isPrime = 1;for (int i = 2; i <= num / 2; i++) {if (num % i == 0) {isPrime = 0;break;}}if (isPrime == 1) {printf("%d是素数\n", num);} else {printf("%d不是素数\n", num);}```3. 打印九九乘法表```for (int i = 1; i <= 9; i++) {for (int j = 1; j <= i; j++) {printf("%d * %d = %d\t", j, i, j * i); }printf("\n");}```三、总结循环结构是C语言中常用的程序设计方式,能够有效地处理重复性的任务。
C语言程序第4章 基本流程结构

问题:输入两个整型数据,按照从大到小的顺序输出。 代码: #include<stdio.h> int main(void) { int a,b,t; printf("请输入两个整型数据a,b:\n”); /*输出提示*/ scanf("%d%d",&a,&b); printf("交换前:a=%d,b=%d\n",a,b); /*输出交换前的次序*/ if (a<b) {t=a;a=b;b=t;} /*当a<b时交换次序*/ printf("交换后:a=%d,b=%d\n",a,b); /*输出交换前的次序*/ return 0; }
语句1
语句2
…
语句n
顺序结构流程图 4-1
问题:输入两个字符型数据,将它们交换后输出。(如输入ab,输出则为ba)
代码: #include<stdio.h> int main(void) { char a,b,t; printf(“请输入两个字符型数据到变量a和b:\n”); /*输出提示*/ scanf(“%c%c”,&a,&b); /*输入两个字符数据*/ printf(“交换前变量a=%c,b=%c\n”,a,b); /*输出交换前a、b的值*/ t=a,a=b,b=t; /*实现交换*/ printf(“交换后的结果是:a=%c,b=%c\n”,a,b); /*输出交换后a、b的 值*/ return 0; }
第4章 基本流程结构
在本章的学习过程中,将详细介绍C语言源程序的三 种基本程序结构:顺序结构、选择结构和循环结构以及C 语言中实现三种基本结构的语句学习目标
• 学习目标
• ◇编写顺序结构程序 • ◇掌握if和switch的用法 • ◇掌握for、while和do-while语句的用法 • ◇编写简单的综合流程程序
C语言程序设计课件 第4章 循环结构.ppt

while语句
语法形式:
while (表达0(式假)) 表达式?循环体;
非0(真) 循环体
后续语句
11
执行过程:
step1:求解表达式,若 为0(假),则退出循 环执行后续语句。若 为非0(真),则执行 循环体。
step2: 转回step1继续 判断。
while语句应用实例
【例4.3】从键盘上读入一个非0的整数,统计该数的
语句功能
{count++; number=number/10;
?
}
printf ("It contains %d digits.\n",count);
}
12
while语句应用实例
【例4.4】计算表达式a+aa+aaa+…+aaa…a,其中a与x的值从 键盘上输入。
int a,x;
long sum=0,n=1,tn;
scanf("%d,%d", &a,&x);
tn=a; while(n<=x) {sum+=tn; tn=tn*10+a; n++;
循环次数 第1次 第2次 第3次 第4次
循环条件 1<=4为真 2<=4为真 3<=4为真 4<=4为真
}
第5次
5<=4为假
sum值
tn值
n值
0+2
2*10+2
2
2+22
C语言程序设计
第4章 循环结构
本章主要内容
1. 循环结构设计理念 2. for循环语句 3. while循环语句 4. do…while循环语句 5. 循环嵌套 6. 流程控制语句
第四章 结构化程序设计的三种结构

第四章结构化程序设计的三种结构4.1 顺序结构程序设计一、结构化程序设计的程序结构顺序结构、分支结构/选择结构、循环结构二、C语言语句1、9种控制语句2、表达式语句3、特殊语句三、格式化输出--printf()函数printf()函数的作用:向计算机系统默认的输出设备(一般指终端或显示器)输出一个或多个任意类型的数据。
printf()函数的一般格式printf("格式字符串" [,输出项表]);1、"格式字符串"也称"转换控制字符串",可以包含三种字符(1)格式指示符。
格式指示符的一般形式如下:%[标志][宽度][.精度][F|N|h|L][类型]常用的标志字符如表3-1所示,常用的宽度指示符如表3-2所示,常用的精度指示符如表3-3所示,长度修饰符如表3-4所示,类型转换字符如表3-5所示。
(2)转义字符'\n'就是转义字符,输出时产生一个"换行"操作。
转义字符通常起控制作用(3)普通字符──除格式指示符和转义字符之外的其它字符。
格式字符串中的普通字符,原样输出。
例如printf("radius=%f\n", radius);语句中的"radius="是普通字符。
2.输出项表输出项表是可选的。
如果要输出的数据不止1个,相邻2个之间用逗号分开。
下面的printf()函数都是合法的:(1)printf("I am a student.\n");(2)printf("%d",3+2);(3)printf("a=%f b=%5d\n", a, a+3);必须强调:"格式字符串"中的格式指示符,必须与"输出项表"中、输出项的数据类型一致,否则会引起输出错误3、格式指示符输出不同类型的数据,要使用不同的类型转换字符。
C语言程序设计习题集第4章 循环结构(答案)

第4章循环结构一、选择题1、有以下程序段int k=0;while(k=1)k++;while 循环执行的次数是(A)A)无限次B)有语法错,不能执行C) 一次也不执行D)执行1次2、t为int类型,进入下面的循环之前,t的值为0while(t=1){ …… }则以下叙述中正确的是(B)A) 循环控制表达式的值为0B)循环控制表达式的值为1C) 循环控制表达式不合法D)以上说法都不对3、在C程序中,与while(m)中表达式m完全等价的是(B )A) m==0 B) m!=0 C) m==1 D)m!=14、有以下程序,程序运行后的输出结果是(C).main(){int i=1,sum=0;while(i<=4){sum=sum+i;i=i+1;}printf(“%d\n”,sum);}A)4 B)5 C)10 D)死循环5、有以下程序,程序运行后的输出结果是(D ).main(){int i=1,sum=0;while(i<=4)sum=sum+i;i=i+1;printf(“%d\n”,sum);}A)4 B)5 C)10 D)死循环6、有如下程序main(){int n=9;while(n>6){n-—;printf(“%d",n);}}该程序段的输出结果是(B)A)987 B) 876 C) 8765 D) 98767、以下程序的输出结果是(B)main(){int num= 0;while(num<=2){num++;printf(“%d\n”,num);}}A) 1 B) 1 C)1 D)l2 2 23 348、有以下程序,若运行时输入3.6 2.4<回车〉,则输出的结果是( B)。
main(){float x,y,z;scanf(“%f%f”,&x,&y);z=x/y;while(1){if(fabs(z)>1。
0){x=y;y=z;z=x/y;}elsebreak;}printf(“%f\n”,y);}A)1.500000 B)1.600000 C)2。
第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语言循环结构三种形式

c语言循环结构三种形式
循环结构是c语言程序设计中重要的一环,它是指将指定的语句重复执行多次的程序结构,循环结构有三种形式:for循环,while循环和do…while循环。
for循环是一种最常用的循环结构,其结构形式为:for(表达式1;表达式2;表达式3)语句;(注意:表达式1、2、3之间用分号隔开,表达式3要用分号结尾),每次循环都会按照表达式1、2、3的顺序执行,其中表达式1一般是初始化变量的值,表达式2则是作为循环条件(集限),表达式3则是更改变量的值。
while循环是另一种比较常用的循环结构,其结构形式为:while(表达式)语句,while循环的作用是当表达式值为真时则重复执行相应的语句,也就是说,只要表达式的值为真,语句就会一次被执行,最后当表达式值为假时,结束循环。
最后一种结构是do…while循环,其结构形式为:do句 while (表达式),不同于while循环,do…while循环会先执行语句,然后才判断表达式,也就是说,无论表达式的值是真还是假,语句都会被至少执行一次。
c语言程序设计中,for循环,while循环和do…while循环共同构成了循环结构的三种形式,它们均是c语言中重要的程序控制结构。
对于for循环,我们可以使用其来完成同一段代码的多次执行;而对于while循环,可以利用其来完成当表达式值为真时的重复执行;最后,对于do…while循环,可以利用其来完成将语句至
少执行一次的操作。
从上面可以看出,不论是c语言编程还是其他编程语言,都不可缺少循环结构,其中for循环,while循环和do…while循环是循环结构当中最为常用的三种形式,他们能够极大地提高程序员的编程效率,帮助我们完成一些复杂的程序编写工作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4.1 引例
✓从键盘输入一个数,如果该数为正,则打印。 ✓ 从键盘输入一个数,如果该数为正,打印;否
则转为正数打印。
【知识点】
1. 单分支(if)语句 2. 二分支(if—else)语句
if-else语句
条件
False
True
语句
True
语句 1
条件
False
语句 2
• 格式:
if(表达式) 语句1;
0 x 0
语句A
语句B
if (表达式) 语句1;
else 语句2;
if(x != 0) y = 1/x;
else y = 0;
分支结构
源程序与运行结果
#include <stdio.h> int main(void) {
double x, y;
printf("Enter x:\n"); scanf("%lf", &x);
y=f(x)=
4x
, x≤15
3
2.5x-10.5, x>15
#include<stdio.h> int main(void) {
double x,y;
printf("enter x(x>=0):\n"); scanf("%lf",&x); if(x<=15)
y=4*x/3; else
y=2.5*x-10.5; printf("y=f(%f)=%.2f\n",x,y); return 0; }
int main(void)
{
float a,b,c,p,s;
printf("请输入三角形的三条边:");
scanf("%f%f%f",&a,&b,&c);
if(a+b>c && a+c>b && b+c>a){
// 若能构成三角形,则计算面积
p=(a+b+c)/2;
s=sqrt(p*(p-a) *(p-b) *(p-c));
对这些数据需要 进行哪些操作?
如何用C语言完 成给定工作?
C语言的三个 基本内容
数据表达; 流程控制; 运算;
4.3 二分支结构(if-else)
[例1] 求解下列分段函数:
1
f
(
x
)
x
x0
0 x 0
分支结构: if-else语句
[例1] 求解下列分段函数: 真 条件 假
1
f
(x)
x
Байду номын сангаасx0
C语言程序设计第四章循环结构
三种基本结构
语句A
条件
语句B
语句A
语句B
循环体
顺序结构
分支结构
循环结构
Chapter 4 分支结构
4.1 引例 4.2 单分支结构(基本的if 语句) 4.3 二分支结构(if—else语句) 4.4 多分支结构(else if语句) 4.5 switch多分支结构 4.6 分支结构程序设计※
【例4-3】输入三角形的三个边长,求三角形 的面积。
根据海伦公式:半周长 p=(a+b+c)/2,面积 s= p*(pa )*(p b )*(pc)
根据海伦公式:半周长 p=(a+b+c)/2,面积 s= p*(pa )*(p b )*(pc)
[分析]: (1)数据类型:double和float类型都可以;
变量有:a, b, c, p, s; (2)算法:直接利用公式计算面积即可,但要考虑a、
b、c三个边长的值是否能构成三角形; (3) 控制结构:分支结构
数据处理流程
定义变量
N
Y 构成三角 形?
计算并输出结果
输出出错信息
【源程序代码】
#include <stdio.h>
#include <math.h>
[例4] 输入三个数a,b,c,输出三者之中的最 大者。
分析:解决C程序设计的三个步骤 (1)数据表达:需要哪些类型数据; (2) 变量a,b,c;设max存放最大值。
(2)算法:先假设a最大,放在变量max中,然后 分别与b, c 进行比较,保留其中最大的数在 变量max中。
(3)流程控制:分支结构;
if(x != 0) y = 1/x;
else y = 0;
input x: 2.5 f(2.50)=0.4
input x: 0 f(0.00)=0.0
printf("f(%.2f) = %.1f\n", x, y); return 0; }
计算分段函数
[例2] 为鼓励居民节约用水,自来水公司采取 按月用水量分段计费的方法,居民应交税费 y(元)与月用水量x(吨)的函数关系式如下(设 x>0)。输入用户的月用水量x(吨),计算并输 出该用户应支付的水费y(元)(保留两位小数)。
#include<stdio.h> int main(void) {
int a,b,c,max; scanf("%d,%d,%d",&a,&b,&c); max=a;
if(max<b) max=b; if(max<c) max=c; printf("max=%d",max);
}
4.3 二分支结构(if—else语句)
• 格式:
if(表达式) 语句1;
else 语句2;
4.2 单分支结构
【例4-2】 输入两个字符,按ASCII码由 大到小的顺序排列并输出这两个字符。
【例4-2】 输入两个字符,按ASCII码由大到小 的顺序排列并输出这两个字符。
学习程序设计语言时,需要考虑的几个问题:
编程时使用哪些 类型的数据?
printf("三角形的面积是%.2f\n",s);
}
else
// 若不能构成三角形,输出出错信息
printf("输入有误,不能构成三角形!\n");
}
4.3.2 条件表达式
✓ 条件表达式的一般形式为: 表达式1?表达式2:表达式3
✓ 条件运算符是三目运算符
例如,若有以下if语句: if(a>b) max=a; else max=b; 可以用下面的条件运算符来实现:
if(a!=0){ x=-b/a; printf("x=%f",x);
} else
printf("fang cheng wu jie!"); return 0; }
• printf(“x=%f”,x);放在最后是什么结果; (当a=0时才能体现出来,分析运行过程)
• 上述问题如何修改才能正确。 • 若把a,b两变量改为int型结果如何?
[例3] 输入系数a,b,编程序解方程a*x+b=0;
分析:当a<>0时,x= –b/a; 当a=0,b<>0时,方
程无解。
开始
输入系数 a , b
Yes
X=-b/a
a<>0
No
方程无解
结束
#include<stdio.h> int main(void) {
float a, b; double x; scanf("%f,%f",&a,&b);