05.C语言程序设计-循环
C语言 第五章-循环结构程序设计

执行过程如图所示。其中i为外循环的控制变 量,j为内循环的控制变量。
i =0 当 i <=10
j=0 当 j<=10
printf(“%d ”, i*j ) j++ i++
例4 编程打印“九九乘法表”。
分析:九九乘法表 1×1=1 1×2=2 1×3=3 … 2×1=2 2×2=4 2×3=6 … 3×1=3 3×2=6 3×3=9 … …… 9×1=9 9×2=18 9×3=27 …
i ++ ; } while ( i <= 100 ) ; printf ( " %d " , sum ) ; }
结果相同
同样是下列程序,但如果while后面的表达式结果一开始就是 假时,两种循环结果会不一样。
main ( ) /*程序1*/
{ int i , sum = 0 ; i = 101 ;
所以程序需要设计成二重循环。由于题目只 要求找到一组解,所以在循环过程中只要找到一组 满足条件的x, y, z就可以跳出循环。
跳出循环的方法可以采用break语句,但是, 因为是二重循环,所以要考虑使用break是否方便。
程序 百钱买百鸡问题。 void main ( ) { int x , y , z ;
打印第2行 ( i = 2 ) for (j=1;j<=9;j++) printf(“%5d”,i*j) ; printf ( “ \n ” ) ; /*换行打印*/
…… 打印第9行 ( i = 9 )
for (j=1;j<=9;j++) printf(“%5d”,i*j) ; printf ( “ \n ” ) ; /*换行打印*/
C语言程序设计第五次作业——循环结构(1)

C语⾔程序设计第五次作业——循环结构(1)(⼀)改错题输出华⽒摄⽒温度转换表:输⼊两个整数lower和upper,输出⼀张华⽒摄⽒温度转换表,华⽒温度的取值范围是{lower,upper},每次增加2℉。
计算公式如下:c = 5×(f-32)/9其中,c表⽰摄⽒温度,f表⽰华⽒温度。
输⼊输出样例1: Enter lower:32 Enter upper:35 fahr celsius 32 0.0 34 1.1输⼊输出样例2: Enter lower:40 Enter upper:30 fahr celsius源程序(有错误的程序)#include <stdio.h>int main(void){int fahr , lower, upper; /* fahr表⽰华⽒度 */double celsius; /* celsius表⽰摄⽒度 */printf("Enter lower:");scanf("%d",&lower);printf("Enter upper:");scanf("%d",&upper);printf("fahr celsius\n"); /* 显⽰表头 *//* 温度转换 */for (fahr = lower , fahr <= upper, fahr ++) ;celsius = 5 /9 * (fahr - 32.0);printf("%3.0f %6.1f\n", fahr, celsius);return 0;}对源程序进⾏编译,结果如下:错误信息1:错误原因:for语句后⾯加了分号。
改正⽅法:将分号去掉。
错误信息2:错误原因:for语句下没有加“{}“改正⽅法:在for语句下加上“{}”错误信息3:错误原因:发现for语句内语句⽤逗号隔开了。
C语言程序设计第五章

05 案例分析
案例一:条件语句在程序中的应用
总结词
条件语句是C语言中用于根据不同条件执行不同操作的语句,通过if、else if和else关键 字实现。
详细描述
编程练习二:循环语句应用
总结词
理解并掌握while和for循环的使用
详细描述
通过编写程序,实现重复执行某段代 码直到满足特定条件,或者根据需要 重复执行某段代码指定次数。例如, 计算1到100的累加和,或者打印出0 到99的所有偶数。
编程练习三:数组操作应用
总结词
理解并掌握数组的基本操作
VS
详细描述
详细描述
数组在程序中用于存储和处理同一种类型的 数据元素,例如存储一组学生的成绩、计算 一组数据的平均值等。数组操作包括数组的 声明、初始化、访问和修改等。通过循环语 句可以方便地遍历数组元素并进行处理。数 组操作在程序中具有广泛的应用,是C语言
中重要的数据结构和算法之一。
06 总结与展望
本章总结
详细描述
C语言中的数组是一种存储相同类型元素的线性数据结构。可以通过索引访问数 组元素,进行赋值、交换、排序等操作。同时,C语言还提供了字符串操作函数, 如strcpy、strcat、strlen等。
语法点三:数组操作
01
示例代码
02
```c
int array[10]; // 声明一个包含10个整数的数组
详细描述
循环语句在程序中用于重复执行一段代码, 例如打印1到10的数字、计算一定数量的累 加和等。循环语句可以嵌套使用,以实现更 复杂的循环结构和算法。循环语句通常与条 件语句结合使用,以控制循环的执行条件和 次数。
C语言程序设计_05循环结构程序设计

5.2 DO…WHILE循环结构 5.2.1 DO…WHILE语句的格式 DO…WHILE语句的一般格式为: DO 语句 WHILE(表达式); DO…WHILE语句中的表达式表示循环的条件,可 以是任何表达式,常用的是关系表达式和逻辑表达 式。表达式必须加圆括号。语句是重复执行的部分, 称作循环体。
由亍循环体在表达式2乊后表达式3乊前执行所以把循环体语句放在表达式3的开头循环体语句不原来的i构成逗号表达式作为循环语句新的表达式3从而也就没有循环体语句了
第5章 循环结构程序设计
5.1 WHILE循环结构 5.2 DO…WHILE循环结构 5.3 FOR循环结构 5.4 与循环有关的控制语句 5.5 3种循环语句的比较 5.6 循环的嵌套 5.7 循环结构程序举例 本章小结
图5-6 FOR语句执行过 程
FOR语句的执行过程如图5-6所示。具体由以下几步 完成: (1)求表达式1。 (2)求表达式2,并判定其值为0或非0。若值为非0, 转步骤(3);否则结束FOR语句。 (3)执行语句,然后求表达式3。 (4)转向步骤(2)。 由FOR语句的执行流程可知,表达式1的作用是为循 环控制的有关变量赋初值,表达式2是循环控制条件, 表达式3用于修正有关变量,语句是重复执行部分。
【例5.7】输入20个数,求出其中的最大值与最小值。
5.3.3 FOR语句的各种变形 1.在FOR语句中省略表达式 FOR语句中的3个表达式可以部分或全部省略,下面 给出语句的4种基本变形。 (1)表达式1移至FOR语句前,但它后面的分号必 须保留。这时FOR语句的形式为: 表达式1; FOR(; 表达式2; 表达式3) 语句
(2)表达式3移至循环体语句之后,但它前面的分 号必须保留。FOR语句的形式为: FOR(表达式1; 表达式2;) { 语句; 表达式3; } 对于求P=5!的程序段,省略表达式3,将其放在循环 体中,则程序段写成:
c语言实验05循环嵌套程序设计

实验五循环嵌套程序设计班级:学号:姓名:评分:一.【实验目的】1、熟练掌握循环嵌套程序设计。
2、进一步掌握C程序的调试方法和技巧。
二.【实验内容和步骤】1、程序调试题A.目标:进一步学习掌握程序调试的方法和技巧。
B.内容:参照《实验指导》教材P44“5.改错题”,改正程序中的错误,使其实现程序的功能。
(注:程序文件保存在“调试示例”文件夹中,文件名为error05_1.cpp)①调试正确的源程序清单②运行结果:(提示:通过屏幕截图,贴粘程序运行界面)。
2、完善程序,并调试运行程序题目(1)求S=1+1/2!+....+1/n!。
程序功能:从键盘上输入一个正整数n,计算s的前n项的和(保留4位小数)。
(注:程序文件保存在“第1题”文件夹中)打开proj1.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。
①调试正确的源程序清单②运行结果:(提示:通过屏幕截图,贴粘程序运行界面)。
题目(2)求各位数字的立方和等于它本身的数。
程序功能:从键盘上输入2个正整数m和n(1<=m<=n<=1000),输出m到n之间的所有满足各位数字的立方和等于它本身的数(例如:153=1*1*1+5*5*5+3*3*3)。
(注:程序文件保存在“第2题”文件夹中)打开proj2.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。
①调试正确的源程序清单②运行结果:(提示:通过屏幕截图,贴粘程序运行界面)。
题目(3)统计素数并求和。
程序功能:从键盘上输入2个正整数m和n(1<=m<=n<=500),统计并输出m和n之间的素数的个数以及这些素数的和(素数:只能被1和自身整除的正整数,1不是素数,2是素数)。
(例如:23)。
(注:程序文件保存在“第3题”文件夹中)打开proj3.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。
①调试正确的源程序清单②运行结果:(提示:通过屏幕截图,贴粘程序运行界面)。
C语言程序设计:第5章 循环结构

12
do...while语句(cont...)
课堂练习: 1.输出1---n之间的数,其中n从键盘输入。
int main(void) {
//1.定义变量i和n //2.输入n的值 //3.思考循环的开始条件:i从1开始 //4.思考循环的结束条件:i++,i > n //5.循环的条件:i<=n //6.循环要做的事情:输出i的值 return 0; }
} 相当于 while(1) {
}
26
小结
❖for(i=m;i<n;i++)//循环次数:n-m次 ❖for(i=m;i<=n;i++)//循环次数:n-m+1次
27
循环语句的练习
课堂练习: 1.输出n---1之间的数,其中n>1且n从键盘输入。 2.计算1*2*3*...*n的值(n的阶乘n!), 其中n从键盘输入。 3.计算10- 1/2 - 1/3 -....1/n的值 以上练习分别以while、do...while、for语句实现
int main(void) {
//1.定义变量i,n,sum //2.输入n的值 //3.思考循环的开始条件:i从1开始 //4.思考循环的结束条件:i++,i > n //5.循环的条件:i<=n //6.循环要做的事情:累加i的值 //7.输出计算结果 return 0; }
24
for语句(cont...)
{
sum = sum + i;
if(sum > 100)break;
《C语言程序设计课件》第四章-循环语句

{ sum+=n; scanf("%d",&n); }
printf("The sum is :%d\n",sum);
return 0; }
从任意 n 个实数中选出最大数 和最小数
从任意 n 个实数中选出最大数和最小数
#include <stdio.h> int main( ) {
/*程序4-1*/ #include <stdio.h> int main() {
int i,sum=0; i=1; while(i<=100) {
sum += i; i++; } printf("sum=%d\n",sum); return 0; }
【例4-2】输入一行字符以回车键结束,分别 统计出其中英文字母、空格、数字和其它字符 的个数。
#include <stdio.h> int main( ) {
int i,n;
printf("This program prints a table of squares.\n"); printf("Enter number of entries in table:");
scanf("%d",&n); i=1; while (i<=n)
【例】求整数1~100的累加和,使用for语句实 现。
#include <stdio.h> int main() {
int i,sum=0; for(i=1;i<=100;i++)
C语言第5章循环结构程序设计1

(2)在循环体中应有使循环趋向于结束的语句。 比如上例中,循环结束的条件是“score>=0”, 那么当我们把这个班的成绩全部输入完后, 一定要输入一个负数,才能使程序往下执行。 (3)循环体语句有可能一次也不执行。比如说上 例中,当第一次输入的分数就为负数时,则 循环体一次也不执行。
§5.3 do …while语句
① ② ④ ③
for(i=1; i<100; i++) s=s+i; printf(″s=%d″, s); }
/*循环体语句*/
对于for循环,有一点非常重要,即条件测 试永远是在循环开始时进行,如果在循环开 始时条件为假,那么循环体语句就不会被执 行。如: int i=10; for (k=10;k!=i;k++) printf(″%d″,k); printf(″%d″,k);
2、循环控制变量必须在循环体内有所改变,才 能使while和do-while语句的循环控制条件表达 式的值不断改变,直至循环结束。否则会造 成死循环。例如: i=1; while(i<=100) putchar(′*′); i++; 这个循环永远不会结束,因为“i++;”语句 不属于循环体中的语句,循环控制变量i没有 在循环体内被改变。 程序应该作如下改变:
在使用while语句的时候,我们要注意以下 两个问题: (1)循环体如果包含一个以上的语句,应该用花 括号括起来,以复合语句的形式出现。如果 不加花括号,则while语句的范围只到while后 面的第一个分号处。比如上例中,while语句 中如无花括号,则while语句范围只到 “average+=score;”。
#include <stdio.h> main() {int i,n;long fac; Scanf(―%d‖,&n); i=1 while (i<=n) fac=fac*i; i++; } Printf(―%d!=%ld‖,n,fac); }
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例:读程序,说明程序的功能。
#include <stdio.h> main ( ) { int k, s,n ; scanf("%d",&n); s = 1; k = 1; while ( k <= n/2 ) { s=s*(2*k-1); k++; } printf ( "%d\n",s); } n以内所以奇数的乘积 #include <stdio.h> main ( ) { int k, s,n ; scanf("%d,%d",&n1,&n2); s = 0; i = n1; while ( i<=n2 ) { if (i%2==0) s=s+i; i++; } printf ( "%d\n",s); } n1至n2间所有偶数之和
for ( ; 条件表达式; 增量表达式 )
省略条件表达式:在循环体内控制结束条件,主要用于多条件情况。
for (初值表达式 ; ; 增量表达式 )
省略增量表达式:主要用于不确定循环增量的情况。
for (初值表达式 ; 条件表达式 ; )
以上各种省略情况可以组合出现。例如:
for (初值表达式 ; ; ) for (; 条件表达式 ; ) for ( ; ; )
C语言程序设计
循环结构
while循环结构
while (条件表达式) { 循环条件 循环体 } 含义:只要表达式结果为"真",
就执行循环体内的语句。
if (条件表达式) {
} 含义:只要表达式结果为
"真",就执行复合语句体。
执行完循环体的语句后,再算 执行完后结束if语句,执 一次表达式的值,只要结果为"真 行后面的内容。 ",就继续执行循环体语句。直至 条件不满足为止。 只执行一次 可能执行很多次 如何设定循环条件是保证while结构正常工作的关键。
循 环 体
for循环的特点
同时设定初值、循环条件、循环增量。 可以实现while结构和do…while结构。 三种循环可以相互替代。
作业:
P129,6.7 P129,6.8
for 循环的不同形式
标准for循环:
for ( 初值表达式; 条件表达式; 增量表达式 )
省略初值表达式:主要用于无初始值设定或复杂初始化的情况。
例:计算
1 1 1 1 1 ...... 4 3 5 7 9
#include <stdio.h> main( ) { int i,n,sign; float e,pi; scanf("%d",&n); pi=0.0;sign=1; for (i=1;i<n;i=i+1) { e=1.0/(2*i-1); pi=pi+sign*e; sign=-sign; } printf("pi=%f\n",pi*4); }
#include <stdio.h> int main( ) { int n1,n2,n3,i; for ( i=300; ; i++ ) { n1=i/100; n2=(i-n1*100)/10; n3=i-i/10*10; if(n1*n1*n1+n2*n2*n2+n3*n3*n3==i) { printf ("%d=%d+%d+%d\n",i,n1,n2,n3); break; } } }
计算:
1. 行数:键盘输入n。 2. 每行空格数: 1→3 2→2 y=n-行号 3→1 3. 每行星号数: 1→1 2→3 y=行号*2-1 3→5 4. 回车,右边的空格不考虑。
作业:书上P130, 6.14
例题:用二分法求方程的根。
2 方程: x3 4 x 2 3x 6 0
例:判断某个数是否是质数。
方法:根据定义,一个数如果只能被1和自身整除,则为质数。
开始
输入数字num
i=2 num能被i整除
Y
N
i++
Y N
是质数
i<num N i<num Y
不是质数 结束
#include <stdio.h> main( ) { int i,num; i=2; scanf("%d",&num); do { if (num%i==0) break; i++; } while(i<num); if (i<num) printf("It's not a prime number!"); else printf("It's a prime number!"); }
#include <stdio.h> main ( ) { int col,line,num; scanf("%d",&num); for (line=1;line<=num;line++) { for (col=1;col<=num-line;col++ ) printf(" "); for (col=1;col<=2*line-1;col++) printf("*"); printf("\n"); } }
循环执行次数:难以确定 循环执行次数: 0+1+2+3+…99=4950
循环执行次数: 99*49=4851
例:打印三角形
* * * * * * * * * * * * * * * *
分析:
1. 屏幕显示原则:只能在当前光标 位置显示。光标不能向左回退, 不能向上回退。 2. 逐行打印,每行打印若干空格和 若干星号。 3. 打印若干行。
例:计算Fibonacci数列。
Fibonacci数列:1, 1, 2, 3, 5, 8, 13, 21…
开始 #include <stdio.h> 分析: main ( ) 输入数列长度:n 1. 初始值为1,1; { 前两个值: f1=1;f2=1; 2. 后面的数字是前两个数之和。 int f1,f2,temp,i,n; scanf("%d",&n); 循环初值:3 f1=1;f2=1; 循环条件:<n printf("%d,%d",f1,f2); 循环增量:1 for(i=3;i<=n;i++) temp=f1+f2; { f1=f2; temp=f1+f2; f2=temp; f1=f2; f2=temp; temp值 输出 printf (",%d",temp); } 结束 }
多重循环的执行次数
sum=0; for (i=1;i<100;i++) { for (j=1;j<50;j++) { sum=sum+1; } } sum=0; for (i=1;i<100;i++) { for (j=1;j<i;j++) { sum=sum+1; } } sum=0; for (i=1;i<100;i++) { for (j=1;j<50;j++) { if( j%2==0) continue; sum=sum+1; } if (sum>500) break; }
例:计算两个数的最大公约数和最小公倍数。
#include <stdio.h> main( ) 用试验的方法 { int i, max,min; 1. 计算最大公约数: scanf("%d,%d",&max,&min); 用1~min分别除max和 i=min; min,看其余数是否同 while (i>0) 时为零; { if (max%i==0 && min%i==0) break; 2. 计算最小公倍数: i--; 用1~?分别乘以max } 和min,看其乘积是否 printf("%d和%d的最大公约数是:%d\n",max,min,i); 相等。 i=1; while( 1 ) 问题: { 1. 计算最大公约数时如何 if (min*i%max==0) break; i++; 设计循环的初始值和循 } 环条件? printf("%d和%d的最小共倍数是:%d\n",max,min,min*i); 2. 计算最小公倍数时如何 }
例:找出所的水仙花数。
水仙花数:153=13+53+33
#include <stdio.h> 开始 分析: int main( ) { i=100 穷举搜索法 int n1,n2,n3,i; i=100; 分解i 对每个可能的数字进行分解 do { 和计算,看其是否满足水仙 N n1=i/100; 是水仙花? 花数的条件。 n2=(i-n1*100)/10; Y n3=i-i/10*10; 搜索范围:100~999 输出 if(n1*n1*n1+n2*n2*n2+n3*n3*n3==i) Y printf ("%d=%d+%d+%d\n",i,n1,n2,n3); i<1000 i++; N }while (i<1000); 结束 }
while ( ) { …… for ( ) {……} …… }
do { …… for ( ) {……} …… } while ( )