c语言循环结构上机习题.pptx
合集下载
C语言新教材PPT课堂课件-4(2)-循环结构
![C语言新教材PPT课堂课件-4(2)-循环结构](https://img.taocdn.com/s3/m/3a2bb2a0b307e87101f696ea.png)
件跳转到循环语句后面执行。 可用于switch语句和循环结构中。
continue语句
格式: continue; 功能: 结束本轮循环,即在本轮循环中,不
再执行循环体中continue后面的语句。 只能用于循环结构。
24
break语句和continue语句的比较(P105举例)
void main( ) { int n;
例:求1~100之间的整数之和
#include <stdio.h> void main( ) { int i,sum;
sum=0; i=1;
for( i=1 ; i<=100;
表达式1、表达式3可同时 缺省,但表达式2前后的 分号都不能省略。
i++ )
while(i<=100)
sum=sum+i;
i++;
✓ 累加算法之累加通式: 累加和变量=累加和变量+累加项
如 sum = sum + i ; (i为循环变量) sum = sum + x ; (x为输入值或某计算结果) num = num + 1; 即 num++; (计数)
✓ 连乘算法之连乘通式: 连乘积变量=连乘积变量*连乘项
如 fac = fac * i ; (i为循环变量) fac = fac * x ; (x为输入值或某计算结果)
sum=sum+i
while( i<=100)
i = i +1
{ sum=sum+i; i++;
输出sum的值
}
printf("1+2+3+…+100=%d\n", sum);
continue语句
格式: continue; 功能: 结束本轮循环,即在本轮循环中,不
再执行循环体中continue后面的语句。 只能用于循环结构。
24
break语句和continue语句的比较(P105举例)
void main( ) { int n;
例:求1~100之间的整数之和
#include <stdio.h> void main( ) { int i,sum;
sum=0; i=1;
for( i=1 ; i<=100;
表达式1、表达式3可同时 缺省,但表达式2前后的 分号都不能省略。
i++ )
while(i<=100)
sum=sum+i;
i++;
✓ 累加算法之累加通式: 累加和变量=累加和变量+累加项
如 sum = sum + i ; (i为循环变量) sum = sum + x ; (x为输入值或某计算结果) num = num + 1; 即 num++; (计数)
✓ 连乘算法之连乘通式: 连乘积变量=连乘积变量*连乘项
如 fac = fac * i ; (i为循环变量) fac = fac * x ; (x为输入值或某计算结果)
sum=sum+i
while( i<=100)
i = i +1
{ sum=sum+i; i++;
输出sum的值
}
printf("1+2+3+…+100=%d\n", sum);
循环结构(课件)-《C语言程序设计》同步教学
![循环结构(课件)-《C语言程序设计》同步教学](https://img.taocdn.com/s3/m/cd97229aa0c7aa00b52acfc789eb172dec63996f.png)
if (循环条件在进入循环时明确)
使用 while 语句
else /* 循环条件需要在循环体中明确 */
使用 do-while 语句
5、break和continue语句
(1)break关键字 语句格式:break;
例如:编写程序实现,输入一个整数判断此数是否witch结构或者一个 循环体
案例1运行结果:
Input a string:I am a Chinese.↙ Number is: 15
简单循环案例分析
案例2 统计大写字符(do-while) 要求:从键盘输入一串字符(输入回车符时结束),统 计其中大写英文字母的个数。
算法设计:
(1)设置变量ch存放输入的字符;计数器变量 num存放大写英文字母的个数 (2)输入字符ch 若ch是大写英文字母,计数器num+1 重复上述操作,直到输入换行符为止 (3)输出大写英文字母个数
C 语言程序设计
翻转课堂实用教程
循环结构
简单循环结构 嵌套循环结构
简单循环结构
1、while循环
语句格式:
while(表达式) {
循环体(语句块); }
执行描述: (1)计算while后面的表达式值,如
果值为真,则执行步骤(2), 否则跳出循环体,继续执行该结 构后面的语句。 (2)执行循环体语句; (3)重复执行步骤(1)。
案例3程序代码:
int main() {
double mark, max,length; printf("Enter length:"); scanf ("%lf", &length); /* 读入第一个身高值 */ max = length; /* 假设第一个身高值最大 */ while (length >= 0){
C语言程序设计循环结构程序设计-43页PPT文档资料
![C语言程序设计循环结构程序设计-43页PPT文档资料](https://img.taocdn.com/s3/m/0527fd5048d7c1c708a1457c.png)
2019/11/22
do-while循环的算法
16
流程图
N-Байду номын сангаас结构图
循环体
循环体 当表达式为真
表达式非0?
Y
N
用do-while语句 求100个自然数的和
#include "stdio.h" void main( ) { int i=1,sum=0;
do { sum=sum+i;
i++; } while (i<=100); printf("%d\n",sum); }
C 语言程序设计
第5章 循环结构程序设计
北京航空航天大学
交通科学与工程学院 徐国艳
2
循环的基本概念 不同形式的循环控制 多重循环问题
2019/11/22
5.1 循环的基本概念
问题分解3 循环控制
一、循环问题
什么是循环?
100
问题1:y n 做99次加法 为什么要使用循环?
问题2:求学n1生平均成绩 分数相加后除以课程数
可结合跳转语句使用,一般情况下不使用
2019/11/22
for循环控制语句
22
2.e1和e3可是与初值、增量无关的逗号表达式
for (s=0,n=1;n<=100;s=s+n, printf(“ %d” ,s)) n++; for (s=0;n<100;s=s+n,n++) {printf(“ %d” ,s);}
流程图
表达式非0?
Y 语句
循环控制条件
N-S结构图 当表达式为真 N
语句
《c语言循环结构》课件
![《c语言循环结构》课件](https://img.taocdn.com/s3/m/f62ffc69905f804d2b160b4e767f5acfa0c7837e.png)
while循环的用法与案例分析
1
while循环的语法和用法
while循环先检查条件,再执行循环体中
while循环的案例分析
2
的代码,当条件为假时结束循环。
一个经典的例子是猜数字游戏,直到猜
到答案才退出循环。
3
while循环的常见错误
循环条件不恰当、循环次数过多或过少 等是常见的while循环错误。
c语言中有三种循环结构:for循环、while循环和do-while循环。
for循环的用法与案例分析
for循环的语法和用法
for循环由初始化语句、循环条件 和更新语句构成,可以控制循环 次数。
for循环的案例分析
for循环的优化
一个简单的例子是遍历一个日历, 打印出一年中每一天的日期。
为了提高程序的性能,我们可以 使用循环展开或减少循环嵌套。
do-while循环的用法与案例分析
do-while循环的语法和用法
do-while循环和while循环很像,但至少会执行一次循环体中的代码。
do-while循环的案例分析
一个应用do-while循环的场景是菜单项选择,确保用户至少输入一次。
do-while循环的注意事项
需要注意的是,do-while循环的条件必须放在循环体的末尾。
2 常见问题
如果您有疑问或需要更多的帮助,请联系我们的技术支持。
《c语言循环结构》PPT 课件
本课程将深入讲解c语言的循环结构,帮助您编写更有效率的程序。
循环结构的定义与作用
什么是循环结构?
循环结构是一种程序控制结构,它能够重复执行一段代码。
循环结构的作用是什么?
循环结构可以帮助程序员编写更简洁、更高效的代码。通过循环,程序不需要重复写相同的 代码。
循环结构习题PPT课件
![循环结构习题PPT课件](https://img.taocdn.com/s3/m/fd61709a26fff705cc170a8b.png)
For m = 2 To 100 flag = True
假定m为 素数
For i = 2 To Sqr(m)
If (m Mod i) = 0 Then flag = False Next i If flag=true Then
判断一数是否 为素数,用 flag来标注
print m ; ” ” ; n=n+1
(2)累加:e=e+t 循环体外对累加和的变量清零 e=0 连乘:n=n*i 循环体外对连乘积变量置1 n=1
.
Private Sub Form_Click()
Dim i%, n&, t!, e!
e = 0: n = 1
' e存放累加和、n存放阶乘
i = 0: t = 1
' i计数器、t第i项的值
End Sub .
求自然对数e的近似值,要求其误差小于0.00001, 近似公式为:
级数t
11 1 1 1 m1
e 1 . .. .. . 1
1!2 ! 3! i!
i 0i! i 1i!
累加和e
连乘积n
该例题涉及两个问题:
(1)用循环结构求级数和的问题。本例根据某项值(t)的精 度(要求计算精度为0.00001)来控制循环的结束与否。
• Dim n As Integer
• Dim i As Integer
• Dim sum As Integer
完 数
• For n = 1 To 1000
• sum = 0
• For i = 1 To n - 1
•
If n Mod i = 0 Then sum = sum + i
• Next i
c语言循环结构ppt课件
![c语言循环结构ppt课件](https://img.taocdn.com/s3/m/8de3c26a83d049649a6658e4.png)
是,继续。
i = i * 2;
i现在为4。
i < n成立吗?
是,继续。
i = i * 2;
i现在为8。
i < n成立吗?
是,继续。
i = i * 2;
i现在为16。
i < n成立吗?
不成立,退出循环。
最新课件
6
while语句
虽然循环体必须是单独的一条语句,但这只是个技术 问题。
如果需要多条语句,那么只要用一对大括号构造成单 独一条复合语句就可以了:
表达式即为控制表达式;语句则是循环体。
最新课件
4
while语句
while语句示例:
while (i < n) /* 控制表达式 */ i = i * 2; /* 循环体 */
执行while语句时,首先计算控制表达式的值。 如果值不为零(真),那么执行循环体,接着再次
判定表达式。 这个过程持续进行直到最终控制表达式的值变为零。
i++; }
。
printf(″%d\\n″,sum);
}
do语句
do语句的一般格式如下:
do 语句 while ( 表达式 ) ;
执行do语句时,先执行循环体,再计算控制表达式 的值。
如果表达式的值非零,那么再次执行循环体,然后 再次计算表达式的值。
最新课件
17
do语句
使用do语句重写前面的“倒数计数”程序:
#include <stdio.h>
int main(void) {
int i, n;
printf("This program prints a table of squares.\n"); printf("Enter number of entries in table: "); scanf("%d", &n);
C语言全国计算机二级等级考试教程循环结构章节带习题PPT课件
![C语言全国计算机二级等级考试教程循环结构章节带习题PPT课件](https://img.taocdn.com/s3/m/dd4c37f52af90242a995e51e.png)
n++; } printf(“%d\n”,s); }
while(n<=100) 问:循环体共执行了几次?
18
第2页/共18页
5.2 do-while语句和用do-while语句构成的循 环结构
5.2.1 do-while语句构成的循环结构
do-while循环结构的一般形式:
关键字
do 循环体
while(表达式);
C 26 68
D 39 81
第13页/共18页
习题
二.填空题 5.11 当执行以下程序段后,i的值是____5___.j的值是____4__.k的值是____6___. int a,b,c,d,i,j,k; a=10;b=c=d=5;i=j=k=0; for( ;a>b;++b) i++; while(a>++c) j++; do k++; while(a>d++); 5.12 以下程序段的输出结果是___1_0_2_4____. int k,n,m; n=10;m=1;k=1; while(k++<=n) m*=2; printf("%d\n",m); 5.13 以下程序的输出结果是____-1____. #include <stdio.h> main() {int x=2; while(x--); printf("%d\n",x); }
}
printf("%d\n",s);
程序段的输出结果是
A9
B1
C 11
5.2 有以下程序段: C
int i,j,m=0;
while(n<=100) 问:循环体共执行了几次?
18
第2页/共18页
5.2 do-while语句和用do-while语句构成的循 环结构
5.2.1 do-while语句构成的循环结构
do-while循环结构的一般形式:
关键字
do 循环体
while(表达式);
C 26 68
D 39 81
第13页/共18页
习题
二.填空题 5.11 当执行以下程序段后,i的值是____5___.j的值是____4__.k的值是____6___. int a,b,c,d,i,j,k; a=10;b=c=d=5;i=j=k=0; for( ;a>b;++b) i++; while(a>++c) j++; do k++; while(a>d++); 5.12 以下程序段的输出结果是___1_0_2_4____. int k,n,m; n=10;m=1;k=1; while(k++<=n) m*=2; printf("%d\n",m); 5.13 以下程序的输出结果是____-1____. #include <stdio.h> main() {int x=2; while(x--); printf("%d\n",x); }
}
printf("%d\n",s);
程序段的输出结果是
A9
B1
C 11
5.2 有以下程序段: C
int i,j,m=0;
C语言中 循环结构ppt课件
![C语言中 循环结构ppt课件](https://img.taocdn.com/s3/m/ae03d660f121dd36a22d8203.png)
精选ppt课件2021
12
【例5.4】设n=30,编写程序,计算并输出S(n)的值。 S(n)=(1*2)/(3*4)-(3*4)/(5*6)+(5*6)/(7*8)+…+(-1)(n-
1)*[(2n-1)*2n]/[(2n+1)*(2n+2)] +…
#include<stdio.h>
#include<math.h>
{
sum=sum*i; /*累乘求积*/
i++;
/*修改基本数据项i*/
}
printf("%d!=%.0f\n",n,sum);
return 0;
}
精选ppt课件2021
7
• 循环三要素之间的关系。
循环变量赋初值、判断控制表达式和修改循环变 量是所谓的“循环三要素”。
一般来说,进入循环之前,应该给循环变量赋初 值,确保循环能够正常开始;在控制表达式中判断循 环变量是否达到循环的终止值;在循环体中对循环变 量进行修改,以使循环正常的趋向终止。在编写程序 时要注意他们的位置关系。
for(循环变量赋初值;循环条件;循环变量增值)
关于for语句的几点说明:
(1)循环体语句可以是简单语句也可以是使用一对花 括号括起来的复合语句。如果是一个语句,也可以和 for写在一行上,这样使程序看起来更加简洁;如果 循环体包含多条语句,最好是另起一行,采用一对花 括号括起来的复合语句形式,增加程序的可读性。
return 0;
}
精选ppt课件2021
9
5.2 for语句
for语句的一般形式如下:
for(表达式1;表达式2;表达式3) 循环体语句
C语言程序设计第5章-循环结构程序设计ppt课件
![C语言程序设计第5章-循环结构程序设计ppt课件](https://img.taocdn.com/s3/m/7deae2c3852458fb770b56ce.png)
分析:循环进行的条件是:i≤k和flag=0。因为在i>k时, 显然不必再去检查n是否能被整除,此外如果flag=1, 就表示n已被某一个数整除过,肯定是非素数无疑, 也不必再检查了。只有i≤k和flag=0两者同时满足才 需要继续检查。循环体只有一个判断操作:判断n 能否被i整除,如不能,则执行i=i+1,即i的值加1, 以便为下一次判断作准备。如果在本次循环中n能 被i整除,则令flag=1,表示n已被确定为非素数了, 这样就不再进行下一次的循环了。如果n不能被任 何一个i整除,则flag始终保持为0。因此,在结束 循环后根据flag的值为0或1,分别输出n是素数或非 素数的信息。
while(i<=k && !flag)
if(n % i==0) flag=1;
else i=i+1;
if(!flag)
printf("%d is a prime
number.\n",n);
else
printf("%d is not a prime
number.\n",n);
}
.
返回本章首页
第5章 循环结构程序设计
【例5_1】用while语句求p=n!
#include<stdio.h>
int main()
{ int i=1,p=1; //循环初始化部分 while(i<=5) //循环控制部分
{ p=p*i; //循环体语句 i++; //循环修改部分
}
printf("5!=%d\n",p);
return 0;
10-3,则再执行循环体,把 term 值赋给term1.然后再累加 到s中去。可以看出:程序中 term1代表当前要累加的项, term代表下一项,如果这两项 之差未超过10-3,就将下一项 加到s 中。
while(i<=k && !flag)
if(n % i==0) flag=1;
else i=i+1;
if(!flag)
printf("%d is a prime
number.\n",n);
else
printf("%d is not a prime
number.\n",n);
}
.
返回本章首页
第5章 循环结构程序设计
【例5_1】用while语句求p=n!
#include<stdio.h>
int main()
{ int i=1,p=1; //循环初始化部分 while(i<=5) //循环控制部分
{ p=p*i; //循环体语句 i++; //循环修改部分
}
printf("5!=%d\n",p);
return 0;
10-3,则再执行循环体,把 term 值赋给term1.然后再累加 到s中去。可以看出:程序中 term1代表当前要累加的项, term代表下一项,如果这两项 之差未超过10-3,就将下一项 加到s 中。
C语言程序设计教程ppt课件完整版pptx
![C语言程序设计教程ppt课件完整版pptx](https://img.taocdn.com/s3/m/2538c120001ca300a6c30c22590102020740f202.png)
C语言的应用领域
计算机系统基本概念
计算机系统的组成 操作系统的基本概念 计算机中的数与编码
编程环境与工具安装配置
01
常见的C语言编程环境
02
安装与配置C语言编译器
使用集成开发环境(IDE)进行C语言编程
03
第一个C程序:Hello, World!
01
C程序的基本结 构
02
编写Hello, World!程序
应用场景
适用于需要根据特定条件提前终 止循环或跳过某些循环操作的情 况。
04 函数与模块化设计
函数定义和调用
01
函数定义
包括函数名、参数列表、返回值 类型和函数体等部分,用于描述 函数的功能和实现细节。
函数调用
02
03
函数声明
通过函数名和参数列表来调用函 数,实现相应功能并获取返回值 。
在使用函数之前,需要对函数进 行声明,以便编译器识别函数的 存在和调用方式。
THANKS FOR WATCHING
感谢您的观看
指针运算符
包括取地址运算符&和取值运算符*,分别 用于获取变量的内存地址和通过指针访问内 存中的数据。
动态内存分配函数(malloc, free)使用方法
malloc函数
用于在堆区动态分配指定大小的内存空间,并返回 分配内存的起始地址。
free函数
用于释放之前通过malloc函数分配的内存空间,防 止内存泄漏。
动态规划思想
动态规划是一种在数学、计算机科学和经济学中 使用的,通过把原问题分解为相对简单的子问题 的方式来求解复杂问题的方法。动态规划常用于 优化重叠子问题的计算。
回溯与分支限界法
回溯法是一种通过探索所有可能的候选解来找出 所有解的算法,而分支限界法是一种通过剪枝来 减少搜索空间的优化算法。回溯与分支限界法常 用于解决组合优化问题。
计算机系统基本概念
计算机系统的组成 操作系统的基本概念 计算机中的数与编码
编程环境与工具安装配置
01
常见的C语言编程环境
02
安装与配置C语言编译器
使用集成开发环境(IDE)进行C语言编程
03
第一个C程序:Hello, World!
01
C程序的基本结 构
02
编写Hello, World!程序
应用场景
适用于需要根据特定条件提前终 止循环或跳过某些循环操作的情 况。
04 函数与模块化设计
函数定义和调用
01
函数定义
包括函数名、参数列表、返回值 类型和函数体等部分,用于描述 函数的功能和实现细节。
函数调用
02
03
函数声明
通过函数名和参数列表来调用函 数,实现相应功能并获取返回值 。
在使用函数之前,需要对函数进 行声明,以便编译器识别函数的 存在和调用方式。
THANKS FOR WATCHING
感谢您的观看
指针运算符
包括取地址运算符&和取值运算符*,分别 用于获取变量的内存地址和通过指针访问内 存中的数据。
动态内存分配函数(malloc, free)使用方法
malloc函数
用于在堆区动态分配指定大小的内存空间,并返回 分配内存的起始地址。
free函数
用于释放之前通过malloc函数分配的内存空间,防 止内存泄漏。
动态规划思想
动态规划是一种在数学、计算机科学和经济学中 使用的,通过把原问题分解为相对简单的子问题 的方式来求解复杂问题的方法。动态规划常用于 优化重叠子问题的计算。
回溯与分支限界法
回溯法是一种通过探索所有可能的候选解来找出 所有解的算法,而分支限界法是一种通过剪枝来 减少搜索空间的优化算法。回溯与分支限界法常 用于解决组合优化问题。
C语言循环结构程序设计PPT课件
![C语言循环结构程序设计PPT课件](https://img.taocdn.com/s3/m/3e0c8244a7c30c22590102020740be1e650ecc05.png)
知识点精讲
printf(″%d\n″,fun(″056a0″)); } 【解析】 while循环是先判断条件,如果条件成立就执行语句,然后回到条件继续判断,直 到条件不成立就结束循环。while后的表达式为“*s<=′9′&&*s>=′0′”,当表达式的值为0时 循环结束,可以看出这道题就是把连续的数字字符转换成对应的数值,遇到非数字字符就结束, 所以最后的输出结果是56。 【答案】 56
知识点ቤተ መጻሕፍቲ ባይዱ讲
L7 i++; L8 } L9 printf("%f",s); L10 }
答案:第6行改成:{ s=s+1.0/i; //若不使用1.0/i,那么会把小数部分丢掉//
4.下列程序的运行结果是______2_,_-_1_____ #include "stdio.h" main) {int i=2,a=0; while ( i一) a++; printf ("% d,%d",a,i); }
第四章 循环结构程序设计
考纲要求
结构化程序的设计方法,for语句、while语句编程方法。
知识准备
高频考点:当型循环与直到型循环、循环控制变量、利用循环设计算法。 重难点分析:利用循环设计算法。
知识点精讲
知识点1 while循环
真题回顾 (2019年真题)下列程序的运行结果是___________ #include″stdio.h″ int fun(char s[]){ int n=0; while(*s<=′9′&&*s>=′0′) { n=10*n+*s-′0′; s++; } return n; } main(){
C语言循环练习PPT教学课件
![C语言循环练习PPT教学课件](https://img.taocdn.com/s3/m/c0ec0bc3a6c30c2258019eb1.png)
}
2020/12/10
12
例5 求两个整数的最大公约数。
m=36;n=24; r=m%n; r!=0 m=n; n=r;
r=m
24
12
m
n
r=m%n
24
12
0
2020/12/10
m
n
r=m%n
13
PPT教学课件
谢谢观看
Thank You For Watching
14
putchar(c); } }
2020/12/10
5
例2:打印以下图形
* *** ***** *******
第一行3个空格1个* I=1 第二行2个空格3个* I=2 第三行1个空格5个* I=3 第四行0个空格7个* I=4
2020/12/10
6
行与空格 、行与*的关系 第i=1行 for(j=1;j<=4-i;j++)
c=m/100;
/*c中放百位数字*/
if(a*a*a+b*b*b+c*c*c==m) printf("\n%4d",m);
}
}
2020/12/10
9
作法2
#include<stdio.h> main() { int s,m,i,r;
for(i=100;i<=999;i++) { m=i; s=0; while(m) { r=m%10; s+=r*r*r; m=m/10; } if(s==i) printf("\n%4d",i); }
2020/12/10
7
程序
main() { int i,j,k;
2020/12/10
12
例5 求两个整数的最大公约数。
m=36;n=24; r=m%n; r!=0 m=n; n=r;
r=m
24
12
m
n
r=m%n
24
12
0
2020/12/10
m
n
r=m%n
13
PPT教学课件
谢谢观看
Thank You For Watching
14
putchar(c); } }
2020/12/10
5
例2:打印以下图形
* *** ***** *******
第一行3个空格1个* I=1 第二行2个空格3个* I=2 第三行1个空格5个* I=3 第四行0个空格7个* I=4
2020/12/10
6
行与空格 、行与*的关系 第i=1行 for(j=1;j<=4-i;j++)
c=m/100;
/*c中放百位数字*/
if(a*a*a+b*b*b+c*c*c==m) printf("\n%4d",m);
}
}
2020/12/10
9
作法2
#include<stdio.h> main() { int s,m,i,r;
for(i=100;i<=999;i++) { m=i; s=0; while(m) { r=m%10; s+=r*r*r; m=m/10; } if(s==i) printf("\n%4d",i); }
2020/12/10
7
程序
main() { int i,j,k;
语言程序设计循环结构.pptx
![语言程序设计循环结构.pptx](https://img.taocdn.com/s3/m/4679904fcd7931b765ce0508763231126edb770f.png)
result=num*10;
5 × 10 = 50
printf("%d
×
10
=
%d
\n",num,re67su××l11t00);==
60 70
num++; }
8 × 10 = 80 9 × 10 = 90 10 × 10 = 100
}
4
第5页/共26页
用VC环境的单步执行演示循环过 程
5
第6页/共26页
11
第12页/共26页
for 循环
for 循环的一般语法: for( 表达式1 ; 表达式2 {
语句段; }
; 表达式3 )
1、计算表达式1的值,通常为循环变量赋初值;
2、计算表达式2的值,即判断循环条件是否为真,若值 为真则执行循环体一次, 否则跳出循环;
3、计算表达式3的值,这里通常写更新循环变量的赋值 表达式,然后转回第2步重复执行;
用VC环境的单步执行演示循环过 程
8
第9页/共26页
while 和 do-while
while(循环条件) {
循环体; }
do
{ 循环体;
}while( 循环条件);
9
第10页/共26页
第六章
循环结构 – II
第11页/共26页
目标
熟练使用for循环 理解 break 和 continue 语句的用法 熟练使用嵌套循环
result+=num; num++; } printf("result= %d \n",result);
}
3
第4页/共26页
示例2
#include<stdio.h>
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6
步骤 2 和 3 是按照步长 1 去寻找公鸡和母鸡
的个数。
步骤 4 的细化
4.1 z=1
2. 1.
是否满足百钱,百鸡 满足,输出最终百钱买 到的百
鸡的结果
2.
不满足,不做处理
3. 变量增加,这里注意步长为 3
程序代码如下 #include "stdio.h" main() { int x,y,z; for(x=1;x<=20;x++) {
2
生的学习成绩,统计并输出最高成绩和最低 成绩,当输入为负数时结束输入。 main() { float x,amax,amin; scanf("%f",&x); amax=x; amin=x;
while( ① ) { if(x>amax) amax=x; if( ② ) amin=x; scanf("%f",&x); } printf("\namax=%f\namin=%f\n",amax,a min); } 7、使用循环语句输出以下图形
for(y=1;y<=33;y++)
7
{ for(z=3;z<=99;z+=3) {
if((5*x+3*y+z/3==100)&&(x+y+z==100))/* 是 否 满 足 百 钱 和 百 鸡 的 条 件 */ printf("cock=%d,hen=%d,chicken=%d\n ",x,y,z);
if((a!=b)&&(a!=c)&&(a!=d)&&(b!=c)&& (b!=d)&&(c!=d))
printf("%d%d*%d%d=%d%d*%d%d\t" ,a,b,c,d,b,a,d,c);
} }
#include<stdio.h> main() { int i, n,j=0; printf("请输入一个整数 n:"); scanf("%d" ,&n); if(n>=1&&n<=100) {
}} return 0; }
#include <stdio.h> void main() {
int a,b,c,d; for(a=1; a<=9; a++)
for(b=1; b<=9; b++)
10
for(c=a+1; c<=9; c++) for(d=1; d<=9; d++)
d{if((a*10+b)*(c*10+d)==(10*b+a)*(10*d+ c))
3
8、有一个数学等式:AB*CD=BA*DC,式 中的一个字母代表一位数字,试找出所有符 合上述要求的乘积式并打印输出。
8、一百个铜钱买了一百只鸡,其中公鸡一 只 5 钱、母鸡一只 3 钱,小鸡一钱 3 只,问
4
一百只鸡中公鸡、母鸡、小鸡各多少)。 分析: 这是一个古典数学问题,设一百只鸡中公 鸡、母鸡、小鸡分别为 x,y,z,问题化为 三元一次方程组: 100=x*5+y*3+z/3 100=x+y+z 这里 x,y,z 为正整数,且 z 是 3 的倍数;由 于鸡和钱的总数都是 100,可以确定 x,y,z 的取值范围: 1) x 的取值范围为 1~20 2) y 的取值范围为 1~33 3) z 的取值范围为 3~99,步长为 3 对于这个问题我们可以用穷举的方法,遍历 x,y,z 的所有可能组合,最后得到问题的解。
9
{a=i1/10; b=i1%10; c=j1/10; d=j1%10;
if(a!=b&&a!=c&&a!=d&&b!=c&&b!=d&& c!=d)
{ i2=b*10+a; j2=d*10+c;} if(i1*j1==i2*j2) { printf("%d*%d=%d*%d\t",i1,j1,i2,j2);
} } } } 分析
程序运行结果如下: cock=4,hen=8,chicken=78 cock=8,hen=11,chicken=81 cock=12,hen=4,chicken=84 对于这个问题实际上可以不用三重循环,而 是用二重循环,因为公鸡和母鸡数确定后,
小鸡数就定了,即。请同学们自己分析二重
1
4、有分数序列 2/1,3/2,5/3,8/5,13/8, 21/13…求这个数列的前 20 项和。 (分析提示:每个分子等于前一个数据分子 与分母的和,每个分母等于前一个数据的分 子) 5、输出显示 1~100 之间可以被 n 整除的所 有整数,运行时 n 由键盘输入。要求每一行 显示 5 个数,并且统计一共有多少个整数能 被 n 整除。 6、下面程序的功能是从键盘上输入若干学
1、计算 n 的阶乘(n!),n 的取值在 1~10 之间。分别使用 while、do…while 和 for 语句实现。(三个程序) 给循环变量赋初值 循环条件 循环体 循环变量的增值 2、输入一行字符,分别统计输入了多少 个 字母、数字、空格和其他字符。 3、假设函数 f(x)=3x2+2x+1,试利用 for 循 环语句分别求出 1<=x<=9 的 f(1)~f(9)各函 数值。
8
循环和三重循环的运行次数,做为练习自己 调试这一方法。 程序修改: 1、 统计使用三重循环的循环次数
2、 使用二重循环完成,并统计循环次数
#include <stdio.h> int main() {
int i1,i2,j1,j2,a,b,c,d; for(i1=11;i1<=99;i1++)
for(j1=i1+1;j1<=99;j1++)
11
printf("1~100 间可以被%d 整除的数是: \n",n); for(i=n;i<=100;i+=n) { printf("%-3d",i);
j++; if(j%5==0)putchar('\n'); }} else printf("输入错误!"); }
5
数据要求 问题中的常量:无 问题的输入:无 问题的输出:
int x,y,z /*公鸡、母鸡、小鸡的只数*/ 初始算法 1. 初始化为 1; 2. 计算 x 循环,找到公鸡的只数; 3. 计算 y 循环,找到母鸡的只数; 4. 计算 z 循环,找到小鸡的只数; 5.结束,程序输出结果后退出。 算法细化 算法的步骤 1 实际上是分散在程序之中的, 由于用的是 for 循环,很方便的初始条件放 到了表达式之中了。
步骤 2 和 3 是按照步长 1 去寻找公鸡和母鸡
的个数。
步骤 4 的细化
4.1 z=1
2. 1.
是否满足百钱,百鸡 满足,输出最终百钱买 到的百
鸡的结果
2.
不满足,不做处理
3. 变量增加,这里注意步长为 3
程序代码如下 #include "stdio.h" main() { int x,y,z; for(x=1;x<=20;x++) {
2
生的学习成绩,统计并输出最高成绩和最低 成绩,当输入为负数时结束输入。 main() { float x,amax,amin; scanf("%f",&x); amax=x; amin=x;
while( ① ) { if(x>amax) amax=x; if( ② ) amin=x; scanf("%f",&x); } printf("\namax=%f\namin=%f\n",amax,a min); } 7、使用循环语句输出以下图形
for(y=1;y<=33;y++)
7
{ for(z=3;z<=99;z+=3) {
if((5*x+3*y+z/3==100)&&(x+y+z==100))/* 是 否 满 足 百 钱 和 百 鸡 的 条 件 */ printf("cock=%d,hen=%d,chicken=%d\n ",x,y,z);
if((a!=b)&&(a!=c)&&(a!=d)&&(b!=c)&& (b!=d)&&(c!=d))
printf("%d%d*%d%d=%d%d*%d%d\t" ,a,b,c,d,b,a,d,c);
} }
#include<stdio.h> main() { int i, n,j=0; printf("请输入一个整数 n:"); scanf("%d" ,&n); if(n>=1&&n<=100) {
}} return 0; }
#include <stdio.h> void main() {
int a,b,c,d; for(a=1; a<=9; a++)
for(b=1; b<=9; b++)
10
for(c=a+1; c<=9; c++) for(d=1; d<=9; d++)
d{if((a*10+b)*(c*10+d)==(10*b+a)*(10*d+ c))
3
8、有一个数学等式:AB*CD=BA*DC,式 中的一个字母代表一位数字,试找出所有符 合上述要求的乘积式并打印输出。
8、一百个铜钱买了一百只鸡,其中公鸡一 只 5 钱、母鸡一只 3 钱,小鸡一钱 3 只,问
4
一百只鸡中公鸡、母鸡、小鸡各多少)。 分析: 这是一个古典数学问题,设一百只鸡中公 鸡、母鸡、小鸡分别为 x,y,z,问题化为 三元一次方程组: 100=x*5+y*3+z/3 100=x+y+z 这里 x,y,z 为正整数,且 z 是 3 的倍数;由 于鸡和钱的总数都是 100,可以确定 x,y,z 的取值范围: 1) x 的取值范围为 1~20 2) y 的取值范围为 1~33 3) z 的取值范围为 3~99,步长为 3 对于这个问题我们可以用穷举的方法,遍历 x,y,z 的所有可能组合,最后得到问题的解。
9
{a=i1/10; b=i1%10; c=j1/10; d=j1%10;
if(a!=b&&a!=c&&a!=d&&b!=c&&b!=d&& c!=d)
{ i2=b*10+a; j2=d*10+c;} if(i1*j1==i2*j2) { printf("%d*%d=%d*%d\t",i1,j1,i2,j2);
} } } } 分析
程序运行结果如下: cock=4,hen=8,chicken=78 cock=8,hen=11,chicken=81 cock=12,hen=4,chicken=84 对于这个问题实际上可以不用三重循环,而 是用二重循环,因为公鸡和母鸡数确定后,
小鸡数就定了,即。请同学们自己分析二重
1
4、有分数序列 2/1,3/2,5/3,8/5,13/8, 21/13…求这个数列的前 20 项和。 (分析提示:每个分子等于前一个数据分子 与分母的和,每个分母等于前一个数据的分 子) 5、输出显示 1~100 之间可以被 n 整除的所 有整数,运行时 n 由键盘输入。要求每一行 显示 5 个数,并且统计一共有多少个整数能 被 n 整除。 6、下面程序的功能是从键盘上输入若干学
1、计算 n 的阶乘(n!),n 的取值在 1~10 之间。分别使用 while、do…while 和 for 语句实现。(三个程序) 给循环变量赋初值 循环条件 循环体 循环变量的增值 2、输入一行字符,分别统计输入了多少 个 字母、数字、空格和其他字符。 3、假设函数 f(x)=3x2+2x+1,试利用 for 循 环语句分别求出 1<=x<=9 的 f(1)~f(9)各函 数值。
8
循环和三重循环的运行次数,做为练习自己 调试这一方法。 程序修改: 1、 统计使用三重循环的循环次数
2、 使用二重循环完成,并统计循环次数
#include <stdio.h> int main() {
int i1,i2,j1,j2,a,b,c,d; for(i1=11;i1<=99;i1++)
for(j1=i1+1;j1<=99;j1++)
11
printf("1~100 间可以被%d 整除的数是: \n",n); for(i=n;i<=100;i+=n) { printf("%-3d",i);
j++; if(j%5==0)putchar('\n'); }} else printf("输入错误!"); }
5
数据要求 问题中的常量:无 问题的输入:无 问题的输出:
int x,y,z /*公鸡、母鸡、小鸡的只数*/ 初始算法 1. 初始化为 1; 2. 计算 x 循环,找到公鸡的只数; 3. 计算 y 循环,找到母鸡的只数; 4. 计算 z 循环,找到小鸡的只数; 5.结束,程序输出结果后退出。 算法细化 算法的步骤 1 实际上是分散在程序之中的, 由于用的是 for 循环,很方便的初始条件放 到了表达式之中了。