C语言程序设计_第六章循环控制

合集下载

C语言程序设计循环结构程序设计幻灯片

C语言程序设计循环结构程序设计幻灯片

printf("%d\n",su
m);
2021/5/15
x
求: s n 流程图 n 1
17
开始
void main()do while {
int n=1,s=0,x; scanf("%d",&x); do {s=s+n; n++;} while (n<=x); printf("s=%d\n",s); }
一般为关系表达式 或逻辑表达式,也 可以是C语言其他类 型的合法表达式
用来控制循环体是 否被执行
称为内嵌语句,可 以是基本语句、控 制语句,也可以是 复合语句
是循环重复执行的 部分
2021/5/15
9
语句一般格式 while (表达式) {语句组}
功能:计算“表达式〞的值,为非0〔逻辑 真〕时,重复执行内嵌语句,每执行一次, 就判断一次表达式的值,直到表达式的值 为0 时完毕循环,转去执行while后面的语 句。
void main() {int s=0,x; scanf("%d",&x); while (x<=10)
{s=s+x; 循环没有 x++;} 被执行
printf("s=%d\n",s)p; rintf("s=%d\n",s);
}
}
如输入为1和12,两程序各输出情况
输入12时: 输出
输出:s=0
2021/5/15
2021/5/15
do-while循环的算法
16
流程图
循环体
N-S结构图 循环体
当表达式为真

C语言程序设计第六章课件

C语言程序设计第六章课件

6.3嵌套循环




使用嵌套循环的注意事项 使用复合语句,以保证逻辑上的正确性 – 即用一对花括号将各层循环体语句括起来 内层和外层循环控制变量不能同名,以免造 成混乱 采用右缩进格式书写,以保证层次的清晰性
2017/9/7
27/62
选择三种循环的一般原则

如果循环次数已知,计数控制的循环 – 用for
1!, 2!, 3!, … , n!
2017/9/7
24/62
【例6.4】输入n值,计算并输出
1! + 2! + 3! + … + n!
利用前项 计算后项
2017/9/7
25/62
【例6.4】输入n值,计算并输出
1! + 2! + 3! + … + n!
每次单独计算 累加项
2017/9/7
26/62
counter<6 true input n sum ← sum + n counter++ output sum
n
2 3 5 6 4
counter-controlled 计数器每次增1
使用了3个变量
2017/9/7
end
6/62
6.2计数控制的循环
counter ← initial value
test counter true
2017/9/7
end
条件控制的循环
当 型 循 环
假 假 真 假
条 件P
A
条 件P

A
直 到 型 循 环
2017/9/7
10/62
while循环语句

C语言程序设计(第三版

C语言程序设计(第三版
运行结果:5050
例6.1 用if语句和goto语句构成循环,求1到100的和
void main( )
{
int i, sum=0;
i=1;
loop: if(i<=100)
{ sum=sum+i;
i++;
goto loop;
说明:这里用的是“当型”循环 } 结构,当满足“i<=100p”rin时tf}("%d\\n″,sum); 执行花括弧内的循环体。
结构化程序设计方法主张限制使用goto语句,因 为滥用goto语句将使程序流程无规律、可读性差. 一般来说,可以有两种用途:
(1) 与if语句一起构成循环结构; (2) 从循环体中跳转到循环体外。
但是这种用法不符合结构化原则,一般不宜采用 ,只有在不得已时(例如能大大提高效率)才使用.
100
n
n1
循环体语句
while (表达式);
执行过程:先执行一次指定的循环体语句,然后判 别表达式,当表达式的值为非零(“真”) 时,返 回重新执行循环体语句,如此反复,直到表达式 的值等于0为止,此时循环结束。

100
n
n1
例6.3 求1到100运的行和结果:5050 #include <stdio.h>
精选ppt
4
§6.1 什概么述是循环?
问题1:y 100 n
为什么要使用循环?
n1
问题2:求学生平均成绩 分数相加后除以课数
在许多问题中需要用到循环控制。循环结构是 结构化程序设计的基本结构之一,它和顺序结 构、选择结构共同作为各种复杂程序的基本构 造单元。
§6.2 goto语句以及用goto语句构成循环1

《C语言程序设计》课程教学大纲

《C语言程序设计》课程教学大纲

《C语言程序设计》课程教学大纲一、课程教学目的本课程系统研究C语言的基本知识和基本语法,较好地训练学生解决问题的逻辑思维能力以及编程思路和技巧,使学生具有较强的利用C语言编写软件的能力,为培养学生有较强软件开发能力打下良好基础。

二、课程教学要求通过本课程的研究,应熟练掌握C语言中的基本知识、各种语句及程序控制结构,熟练掌握C语言的函数、数组、指针、结构体、链表等数据结构的基本算法;并能熟练地运用C语言进行结构化程序设计;具有较强的程序修改调试能力;具备较强的逻辑思维能力和独立思考能力。

三、课时分配本学科计划学时为246学时,其中理论与实训课时比例为7:3.四、课程教学重、难点课程教学重点:掌握C语言变量类型及不同类型常量的表示;标准的输入输出函数的使用;运算符及常用数学函数的使用;控制流程、数组和指针的使用;结构体、链表的构造使用;函数结构、函数参数传递及递归等方面的知识;基本的文件操作。

难点:指针的使用、结构体链表的构造和使用及函数的参数传递。

五、课程教学方法(或手段)本课程实践性较强,故采用讲授和上机操作相结合的方式进行教学。

六、课程教学内容第一章C言语概述1.教学内容(1)编程历史的回顾、程序设计介绍(过程式,面向对象,函数式,逻辑式);(2) C语言的历史背景、特点;(3) C言语源步伐的格式和步伐结构;(4) C程序的上机步骤。

2.重、难点提醒(1)重点:掌握简单的C程序格式,包括main()函数、数据说明、函数开始和结束标志等;(2)难点:编程入门和对言语的理解。

第二章算法1.教学内容(1)算法的概念及特征;评价算法优劣的方法(时间和空间);(2)简单算法举例;(3)算法的表示(自然语言、流程图、N-S流程图);(4)结构化步伐设计的基本思想及基本步调。

2.重、难点提醒(1)重点:算法流程图三种基本结构(以后各章研究中使用流程图强化对步伐的理解);(2)难点:算法概念和对结构化步伐设计思想的理解。

C语言单元复习题 第06部份 循环

C语言单元复习题  第06部份 循环
B.只有do...while语句构成的循环能用break语句退出
C.用do...while语句构成循环时,在while后的表达式为零时不一定结束循环
D.用do...while语句构成循环时,在while后的表达式为零时结束循环
(知识点:do...while语句; 难度系数:1; 答案:D )
10.以下关于do...while语句的叙述中,正确的是:( )。
(知识点:循环的基本概念; 难度系数:1; 答案:D )
2.以下关于循环的描述中,错误的是:( )。
A.while、do...while和for语句的循环体都可以是空语句
B.for和do...while语句都是先执行循环体,后进行循环条件判断
C.while语句是先进行循环条件判断,后执行循环体的
D.使用while和do...while语句时,循环变量初始化的操作应在循环语句之前完成
A.break语句和continue语句都只能用于循环结构
B.break语句和continue语句都只能用于switch结构
C.break语句用于跳出循环体,continue语句用于跳出当次循环
D.continue语句用于跳出循环体,break语句用于跳出当次循环
(知识点:continue语句; 难度系数:1; 答案:C )
A.x==0B.x==1C.x!=lD.x!=0
(知识点:while语句; 难度系数:1; 答案:D )
5.在C语言中,当while语句构成的循环中的条件为( )时,结束循环。
A.0B.1C.真D.非0
(知识点:while语句; 难度系数:1; 答案:A )
6.有以下程序段:
int k=0;
while(k=1) k++;

C语言第六章复习题(含答案)

C语言第六章复习题(含答案)

1.t为int类型,进入下面的循环之前,t的值为0while( t=l ){ ……}则以下叙述中正确的是( B )(A) 循环控制表达式的值为0 (B) 循环控制表达式的值为1(C) 循环控制表达式不合法(D) 以上说法都不对2.有以下程序main( ){ int i,s=0;for(i=1;i<10;i+=2) s+=i+1;printf(“%d\n”,s);}程序执行后的输出结果是 ( D )。

(A) 自然数1~9的累加和 (B) 自然数1~10的累加和(C) 自然数1~9中的奇数之和 (D) 自然数1~10中的偶数之和3.以下程序段的输出结果是( C )。

int x=3;do{ printf("%3d",x-=2); }while(!(- -x));(A)1 (B)30 (C)1 -2 (D)死循环4.以下程序中,while循环的循环次数是( D)。

main(){ int i=0;while(i<10){ if(i<1) continue;if(i==5) break;i++;}......}(A) 1 (B) 10(C) 6 (D) 死循环,不能确定次数5.下面程序的输出是( B )。

(A)741 (B)852 (C)963 (D)875421main(){int y=9;for(;y>0;y--){if(y%3==0){printf("%d",--y);continue;}}}6.若i,j已定义为int类型,则以下程序段中内循环体的总的执行次数是( A)。

for (i=5;i;i--)for(j=0;j<4;j++){...}(A)20 (B)25 (C)24 (D)307.执行语句: for(i=l;i++<4;;);后,变量i的值是(C)。

(A) 3 (B) 4 (C) 5 (D) 不定8.假定a和b为int型变量,则执行以下语句后b的值为( D )。

(2021年整理)谭浩强c语言程序设计习题集

(2021年整理)谭浩强c语言程序设计习题集

(完整)谭浩强c语言程序设计习题集编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整)谭浩强c语言程序设计习题集)的内容能够给您的工作和学习带来便利。

同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。

本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为(完整)谭浩强c语言程序设计习题集的全部内容。

目录重要次重要重复或欲删除基础第一章 C语言概述1。

1 选择题1.2 填空题第二章数据类型、运算符与表达式2。

1 选择题2.2 填空题第三章最简单的C程序设计3。

1 选择题3。

2 填空题第四章逻辑运算和判断选取控制4。

1 选择题4。

2 填空题4。

3 编程题第五章循环控制5。

1 选择题5。

2 填空题5.3 编程题第六章数组6。

1 选择题6.2 填空题6.3 编程题第七章函数7。

1 选择题7.2 填空题7.3 编程题第八章编译预处理8.1 选择题8.2 填空题8。

3 编程题第九章指针9.1 选择题9.2 填空题9。

3 编程题第十章结构体和共用体10.1 选择题10.2 填空题10.3 编程题第十一章位运算11.1 选择题11。

2 填空题11。

3 编程题第十二章文件12。

1 选择题12。

2 填空题12.3 编程题第一章 C语言概述1。

1 选择题*1.1一个C程序的执行是从 A 。

A)本程序的main函数开始,到main函数结束B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C)本程序的main函数开始,到本程序文件的最后一个函数结束D)本程序文件的第一个函数开始,到本程序main函数结束参考答案:A参考分析:C语言总是从main函数开始,main函数结束。

但是C语言中存在一个exit(0)函数,它可以使得程序在任何时候、任何位置结束程序的运行。

(完整版)《C语言程序设计》课程教学大纲

(完整版)《C语言程序设计》课程教学大纲

《C语言程序设计》课程教学大纲一、课程教学目的本课程系统学习 C语言的基本知识和基本语法,较好地训练学生解决问题的逻辑思维能力以及编程思路和技巧,使学生具有较强的利用 C 语言编写软件的能力,为培养学生有较强软件开发能力打下良好基础。

二、课程教学要求通过本课程的学习,应熟练掌握 C 语言中的基本知识、各种语句及程序控制结构,熟练掌握 C 语言的函数、数组、指针、结构体、链表等数据结构的基本算法;并能熟练地运用 C 语言进行结构化程序设计;具有较强的程序修改调试能力;具备较强的逻辑思维能力和独立思考能力。

三、课时分配本学科计划学时为246学时,其中理论与实训课时比例为7:3。

四、课程教学重、难点课程教学重点:掌握C语言变量类型及不同类型常量的表示;标准的输入输出函数的使用;运算符及常用数学函数的使用;控制流程、数组和指针的使用;结构体、链表的构造使用;函数结构、函数参数传递及递归等方面的知识;基本的文件操作。

难点:指针的使用、结构体链表的构造和使用及函数的参数传递。

五、课程教学方法(或手段)本课程实践性较强,故采用讲授和上机操作相结合的方式进行教学。

六、课程教学内容第一章 C语言概述1.教学内容(1) 编程历史的回顾、程序设计介绍(过程式,面向对象,函数式,逻辑式);(2) C语言的历史背景、特点;(3) C语言源程序的格式和程序结构;(4) C程序的上机步骤。

2.重、难点提示(1)重点:掌握简单的 C程序格式,包括main()函数、数据说明、函数开始和结束标志等;(2)难点:编程入门以及对语言的理解。

第二章算法1.教学内容(1) 算法的概念及特性;评价算法优劣的方法(时间和空间);(2) 简单算法举例;(3) 算法的表示(自然语言、流程图、N-S流程图);(4) 结构化程序设计的基本思想及基本步骤。

2.重、难点提示(1)重点:算法流程图三种基本结构(以后各章学习中利用流程图强化对程序的理解);(2)难点:算法概念以及对结构化程序设计思想的理解。

《C语言程序设计》课程教学大纲

《C语言程序设计》课程教学大纲

《C语言程序设计》课程教学大纲适用专业信息与计算科学总学时90学分 4一、编写说明(一)本课程的性质、地位和作用本课程属于信息与计算科学的专业课,C程序设计语言的语法规则、数据类型、数据运算、语句、函数、指针、程序结构等方面的学习,掌握应用C语言进行程序设计的技能,为今后进一步学习程序开发以及科学与工程计算的软件开发奠定一个良好的基础。

(二)本大纲制定的依据根据本专业人才的培养目标和人才培养规格所需要的基本理论和基本技能的要求,根据本课程的教学性质、条件和教学实践而制定。

(三)大纲内容选编原则与要求通过对本课程的学习,使学生掌握基本概念、基本原理、基本知识和实际操作能力,重点落实到“用”上。

在对大纲内容选编时,在注重基本原理、基本概念的同时,特别强调实用系统的设计与开发,做到了理论与实践有效结合。

(四)实践环节实验1:C程序的运行环境和运行一个C程序的方法, 2学时主要内容与要求:了解所用的计算机系统的基本操作方法,学会独立使用该系统;了解在该系统上如何编辑、编译、连接和运行一个C程序;通过运行简单的C程序,初步了解C 程序的特点。

实验2:简单的C程序设计,2学时主要内容与要求:掌握C语言数据类型,熟悉如何定义一个整型、字符型和实型的变量,以及对它们赋值的方法;掌握不同类型数值之间赋值的规律;学会使用C的有关算术运算符,以及包含这些运算符的表达式;掌握赋值语句的使用方法;掌握各种类型数据的输入输出方法,能正确使用各种格式转换符。

实验3:逻辑结构、循环控制程序设计,4学时主要内容与要求:了解C语言表示逻辑量的方法;学会正确的使用逻辑运算符和逻辑表达式;熟练掌握if语句和switch语句;熟悉掌握用while 语句,do while语句和for语句实现循环的方法;掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等);进一步学习调试程序。

实验4:数组、函数,4学时主要内容与要求:掌握一维数组和二维数组的定义、赋值和输入输出方法;掌握字符数组和字符串函数的使用;掌握与数组有关的算法(特别是排序算法);掌握定义函数的方法;掌握函数实参与形参的对应关系以及“值传递”的方式;掌握函数的嵌套调用和递归调用的方法;掌握全局变量和局部变量,动态变量、静态变量的概念和使用方法;学习对多文件程序的编译和运行。

C语言程序设计-谭浩强-第三版-课后习题答案

C语言程序设计-谭浩强-第三版-课后习题答案

C语言程序设计-谭浩强-第三版-课后习题答案1.5请参照本章例题,编写一个C程序,输出以下信息:**************************Very Good!**************************解:mian(){printf(“**************************”);printf(“\n”);printf(“Very Good!\n”);printf(“\n”);printf(“**************************”);}1.6 编写一个程序,输入a、b、c三个值,输出其中最大值。

解:mian(){int a,b,c,max;printf(“请输入三个数a,b,c:\n”);scanf(“%d,%d,%d”,&a,&b,&c);max=a;if(max<b)max=b;if(max<c)max=c;printf(“最大数为:“%d”,max);}第三章3.6写出以下程序运行的结果。

main(){char c1=’a’,c2=’b’,c3=’c’,c4=’\101’,c5=’\116’;printf(“a%cb%c\tc%c\tabc\n”,c1,c2,c3);printf(“\t\b%c %c”,c4,c5);}解:aaㄩbbㄩㄩㄩccㄩㄩㄩㄩㄩㄩabcAㄩN3.7 要将"China"译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母.例如,字母"A"后面第4个字母是"E"."E"代替"A"。

因此,"China"应译为"Glmre"。

请编一程序,用赋初值的方法使cl、c2、c3、c4、c5五个变量的值分别为,’C’、’h’、’i’、’n’、’a’,经过运算,使c1、c2、c3、c4、c5分别变为’G’、’l’、’m’、’r’、’e’,并输出。

《C语言程序设计》教案

《C语言程序设计》教案

《C语言程序设计》教案第一章:C语言概述1.1 C语言的发展历史1.2 C语言的特点1.3 C语言的应用领域1.4 集成开发环境的使用第二章:C语言基础语法2.1 数据类型2.1.1 整型2.1.2 浮点型2.1.3 字符型2.2 变量和常量2.2.1 变量的声明和使用2.2.2 常量的定义和使用2.3 运算符与表达式2.3.1 算术运算符2.3.2 关系运算符2.3.3 逻辑运算符2.3.4 赋值运算符2.3.5 条件运算符2.3.6 逗号运算符2.4 输入输出函数2.4.1 标准输入输出函数2.4.2 格式化输入输出函数第三章:控制语句3.1 顺序结构3.2 选择结构3.2.1 if语句3.2.2 switch语句3.3 循环结构3.3.1 while循环3.3.2 do-while循环3.3.3 for循环3.3.4 循环控制语句第四章:函数与编译预处理4.1 函数的定义和调用4.1.1 函数的声明4.1.2 函数的实现4.1.3 函数的调用4.2 变量的作用域4.2.1 全局变量4.2.2 局部变量4.3 静态变量和动态内存分配4.3.1 静态变量的使用4.3.2 动态内存分配函数4.4 编译预处理指令4.4.1 宏定义4.4.2 文件包含4.4.3 条件编译第五章:数组和字符串5.1 一维数组5.1.1 数组的声明和初始化5.1.2 数组的访问和操作5.2 二维数组5.2.1 二维数组的声明和初始化5.2.2 二维数组的访问和操作5.3 字符串5.3.1 字符串的概念5.3.2 字符串的存储结构5.3.3 字符串的操作函数第六章:指针6.1 指针的概念6.2 指针的声明和赋值6.3 指针与数组6.3.1 指向数组的指针6.3.2 指针数组6.3.3 数组的指针6.4 指针与函数6.4.1 指针作为函数参数6.4.2 返回指针的函数6.5 指针与动态内存分配6.5.1 动态内存分配的概念6.5.2 动态内存分配函数6.5.3 内存泄漏与释放第七章:结构体、联合体和枚举7.1 结构体的定义和使用7.1.1 结构体的声明7.1.2 结构体的初始化7.1.3 结构体的访问7.2 联合体的定义和使用7.2.1 联合体的声明7.2.2 联合体的初始化7.2.3 联合体的访问7.3 枚举类型的定义和使用7.3.1 枚举类型的声明7.3.2 枚举类型的访问第八章:文件操作8.1 文件的概念8.2 文件打开与关闭8.2.1 文件打开函数8.2.2 文件关闭函数8.3 文件的读写操作8.3.1 文件读取函数8.3.2 文件写入函数8.4 文件指针的定位8.4.1 文件位置指针8.4.2 文件定位函数8.5 文件操作的错误处理第九章:标准库函数9.1 标准输入输出库函数9.2 字符串处理库函数9.3 数学计算库函数9.4 日期和时间库函数9.5 高级输入输出库函数第十章:编程实践与案例分析10.1 数据结构的应用10.1.1 链表的实现10.1.2 栈和队列的应用10.2 算法设计与分析10.2.1 排序算法10.2.2 搜索算法10.3 数据库编程10.3.1 数据库连接10.3.2 数据库操作10.4 网络编程10.4.1 套接字编程基础10.4.2 网络通信协议10.5 实际项目案例分析10.5.1 项目需求分析10.5.2 项目设计与实现10.5.3 项目测试与优化重点和难点解析一、C语言的发展历史和特点重点关注C语言的历史背景和设计初衷,以及其为何能在多年后仍然被广泛使用。

C语言程序设计 第6章

C语言程序设计 第6章

#include <stdio.h> #include <stdlib.h> main( ) { int a[10]; /*定义数组*/ int k,j; float ave,s; k=0;s=0.0; for(j=0;j<10;j++) /*用数组存放10个随机整数*/ a[j]=rand()%50; printf("数组中的值:"); for(j=0;j<10;j++) /*输出10个随机整数*/ printf("%6d",a[j]); printf("\n"); for(j=0;j<10;j++) { if(a[j]%2==0) /*如果数组元素的值为偶数*/ {s+=a[j];k++;} /*累加及偶数个数计数*/ } if(k!=0) {ave=s/k; printf("偶数的个数:%d\n偶数的平均植:%f\n",k,ave);} }
(2)定义一个二维数组a[N][5],数组每行存放一名 学生的数据,每行前4列存放学生4门单科成绩,第5列 存放学生的总分。 (3)输入N个学生的单科成绩,存入二维数组a中。 (4)通过变量sum累加计算每位学生的总分,然后 赋值给每行的最后一个元素。 (5)输出数组第5列上的值,即为每个学生的总分。
for(i=0;i<N;i++) { sum=0; for(j=0;j<4;j++) /*计算当前学生的总分*/ sum+=a[i][j]; a[i][4]=sum; } for(i=0;i<N;i++) /*输出每个学生的总分*/ printf("第%d个学生的总分为:%d\n",i+1,a[i][4]); }

计算机2级C语言题库第六章 循环控制

计算机2级C语言题库第六章 循环控制

第六章循环控制一单项选择题1.下面程序段的运行结果是()。

int n=0;while(n++<=2);printf(“%d”,n);A) 2 B) 3 C) 4 D) 有语法错2.设有程序段:t=0;while(printf(“*”)){t++;if(t<3) break;}下面描述正确的是()。

A) 其中循环控制表达式与0等价B) 其中循环控制表达式与'0'等价C) 其中循环控制表达式是不合法的D) 以上说法都不对3.下面程序的功能是将从键盘输入的一对数,由小到大排序输出,当输入一对相等数时结束循环,请选择填空()。

#include <stdio.h>main(){int a,b,t;scanf(“%d%d”,&a,&b);while( ___________ ){if(a>b){t=a;a=b;b=t;}printf(“%d,%d\n”,a,b);scanf("%d%d",&a,&b);}}A) !a=b B) a!=b C) a==b D) a=b5.对以下程序段描述正确的是()。

x=-1;do{x=x*x;}while(!x);A) 是死循环B) 循环执行二次C) 循环执行一次D) 有语法错误10.若i为整型变量,则以下循环执行次数是()。

for(i=2;i==0;) printf(“%d”,i--);A) 无限次B) 0次C) 1次D) 2次11.以下不是无限循环的语句为()。

A) for(y=0,x=1;x>++y;x=i++) i=x;B) for(;;x++=i);C) while(1){x++;}D) for(i=10;;i--) sum+=i;13.执行语句for(i=1;i++<4;) ;后变量i的值是()。

A) 3 B) 4 C) 5 D) 不定14.有一堆零件(100到200之间),如果分成4个零件一组的若干组,则多2个零件;若分成7个零件一组,则多3个零件;若分成9个零件一组,则多5个零件。

C语言第6章循环结构程序设计

C语言第6章循环结构程序设计

第6章循环控制本章要求:1、初步熟悉用计算机解决问题的思路。

2、掌握while、do-while、for语句的特点和使用方法。

3、掌握break、continue语句的用法。

4、熟悉一些常见问题的算法及其C语言实现。

§6.1 概述循环:反复执行称为“循环体”的程序段。

循环控制常用于数学迭代、对象遍历等问题的求解,几乎所有实用程序都包含循环。

特别是在现代多媒体处理程序(图像、声音、通讯)中,循环更是必不可少。

Intel公司为了加快循环程序的执行,在CPU硬件中加入多媒体扩展指令MMX(Multi-Media-eXtension );AMD在CPU中加入3D Now!指令。

循环结构是结构化程序三种基本结构之一。

(顺序结构、分支结构)。

根据开始循环的初始条件和结束循环的条件不同,C语言中用如下语句实现循环1、用goto语句和if语句构成循环。

2、用while语句。

3、用do-while语句。

4、用for语句。

§6.2 goto语句一般形式:goto 语句标号作用:无条件转向“语句标号”处执行。

“语句标号”是一个标识符,它表示程序指令的地址。

goto语句不符合结构化程序设计准则,因为无条件转向使程序结构无规律、可读性差。

一般应避免使用goto语句,但如果能大大提高程序的执行效率,也可以使用。

[例6.1] 用if语句和goto语句构成循环,求。

main(){int i,sum=0;i = 1;loop:if (i <= 100){ sum = sum + i;i++;goto loop;}printf("%d",sum);}§6.3 while语句一般形式:while(表达式) 语句作用:实现“当型”循环。

当“表达式”非0(真)时,执行“语句”。

“语句”是被循环执行的程序,称为“循环体”。

特点:先判“表达式(条件)”。

[例6.2]main(){int i,sum=0;i = 1;whie (i <= 100){sum = sum + i;i++;}printf("%d",sum);}注意:1、注意给出循环的初始条件,如本例中“sum=0、i=1”。

《C语言程序设计》第6章习题答案

《C语言程序设计》第6章习题答案

1、选择题(1)A(2)C(3)A(4)B(5)B(6)D(7)D(8)B(9)D(10)B2、填空题(1)a=10,b=20a=20,b=10(2)**pp=603、程序设计题(1)#include<stdio.h>char *month_name(int n);void main(){int n;printf("\nPlease enter 1 integer:");scanf("%d",&n);printf("%d month :%s\n",n,month_name(n));}char *month_name(int n){static char*name[]={"illegal month","Jan","Feb","Mar","Apr","May","Jun","July","Aug","Sept","Oct","Nov","Dec"};return ((n<1||n>12)?name[0]:name[n]);}(2)#include<stdio.h>#define N 10sort(int data[]){int i,j,min_a,temp;for(i=0;i<N;i++){min_a=i;for(j=i+1;j<N;j++)if(*(data+j)<*(data+min_a))min_a=j;if(min_a!=i){temp=*(data+min_a);*(data+min_a)=*(data+i);*(data+i)=temp;}}}main(){int i,j,data[N],temp;int min_a;printf("\nPlease input %d int:\n",N);for(i=0;i<N;i++)scanf("%d",&data[i]);sort(data);printf("After sorted:\n");for(i=0;i<N;i++)printf(" %d",data[i]);}(3)#include <stdlib.h>void reverse(char *c);void main(){char str[80];puts("Please enter 1 string\n");gets(str);reverse(str) ;puts("After reversed\n");puts(str);}void reverse(char *c){char *p,*q,temp;int size=0;for(p=c;*p!='\0';p++)size++;size=size/2;for(q=c,p--;q<c+size;q++,p--){temp=*q;*q=*p;*p=temp;}}(4)#include<stdio.h>#include<string.h>void sort(char *keyword[],int size);void print(char *keyword[],int size)void main(){char *keyword[]={"if","else","case","switch","do","whlie","for","break","continue"};sort(keyword,9);print(keyword,9);}void sort(char *keyword[],int size){int i,j,min_location;char *temp;for(i=0;i<size-1;i++){min_location=i;for(j=i+1;j<size;j++)if(strcmp(keyword[min_location],keyword[j])>0) min_location=j;if(min_location!=i){temp=keyword[i];keyword[i]=keyword[min_location];keyword[min_location]=temp;}}}void print(char *keyword[],int size){int i;for(i=0;i<size;i++)printf("\n%s",*(keyword+i));}(5)#include<stdio.h>void fun_char(char str1[],char str2[],char str3[]);void main(){char str1[80],str2[80],str3[80],c,i;printf("\nPlease enter 2 string:");scanf("%s%s",str1,str2);fun_char(str1,str2,str3);printf("Third string is %s.",str3);}void fun_char(char *str1,char *str2,char *str3){int i,j,k,flag;i=0,k=0;while(*(str1+i)!='\0'){j=0;flag=1;while(*(str2+j)!='\0'&&flag==1){if(*(str2+j)==*(str1+i)) flag=0;j++;}if(flag){*(str3+k)=*(str1+i); k++;}i++;}*(str3+k)='\0';}(6)#include<stdio.h>int count_word(char *str);void main(){char str1[80],c,res;puts("\nPlease enter a string:");gets(str1);printf("There are %d words in this sentence",count_word(str1)); }int count_word(char *str){int count ,flag;char *p;count=0;flag=0;p=str;while(*p!='\0'){if(*p==' ')flag=0;else if(flag==0){flag=1;count++;}p++;}return count;}(7)#include<stdio.h>#include<string.h>char *encrypt(char *string);char *decrypt(char *string);main(){char item[80];char *point;char *pEncrypted;char *pDecrype;printf("Please enter the string need to encrypt:\n");gets(item);point=item;pEncrypted=encrypt(point);printf("\nThe string after encrypted is:\n%s\n",pEncrypted); pDecrype=decrypt(pEncrypted);printf("\nThe string after decrypted is:\n%s\n",pDecrype);free(pEncrypted);free(pDecrype);}char *encrypt(char *string){char *q,*t;q=(char *)malloc(sizeof(char)*80);if(!q){printf("No place to malloc!");return 0;}t=q;while(*string!='\0'){*q=*string-2;string++;q++;}*q='\0';return t;}char *decrypt(char *string){char *q,*t;q=(char *)malloc(sizeof(char)*80); if(!q){printf("No place to malloc!");return 0;}t=q;while(*string!='\0'){*q=*string+2;string++;q++;}*q='\0';return t;}。

c语言程序设计第五版课后答案谭浩强第六章习题答案

c语言程序设计第五版课后答案谭浩强第六章习题答案

c语⾔程序设计第五版课后答案谭浩强第六章习题答案第六章:利⽤数组处理批量数据1. ⽤筛选法求100之内的素数【答案解析】素数:约数为1和该数本⾝的数字称为素数,即质数筛选法:⼜称为筛法。

先把N个⾃然数按次序排列起来。

1不是质数,也不是合数,要划去。

第⼆个数2是质数留下来,⽽把2后⾯所有能被2整除的数都划去。

2后⾯第⼀个没划去的数是3,把3留下,再把3后⾯所有能被3整除的数都划去。

3后⾯第⼀个没划去的数是5,把5留下,再把5后⾯所有能被5整除的数都划去。

这样⼀直做下去,就会把不超过N 的全部合数都筛掉,留下的就是不超过N的全部质数。

因为希腊⼈是把数写在涂腊的板上,每要划去⼀个数,就在上⾯记以⼩点,寻求质数的⼯作完毕后,这许多⼩点就像⼀个筛⼦,所以就把埃拉托斯特尼的⽅法叫做“埃拉托斯特尼筛”,简称“筛法”。

(另⼀种解释是当时的数写在纸草上,每要划去⼀个数,就把这个数挖去,寻求质数的⼯作完毕后,这许多⼩洞就像⼀个筛⼦。

)【代码实现】//⽤筛选法求100以内的素数#include<stdio.h>int main(){int i, j, k = 0;// 将数组汇总每个元素设置为:1~100int a[100];for (i = 0; i < 100; i++)a[i] = i+1;// 因为1不是素数,把a[0]⽤0标记// 最后⼀个位置数字是100,100不是素数,因此循环可以少循环⼀次a[0] = 0;for (i = 0; i < 99; i++){// ⽤a[i]位置的数字去模i位置之后的所有数据// 如果能够整除则⼀定不是素数,该位置数据⽤0填充for (j = i + 1; j < 100; j++){if (a[i] != 0 && a[j] != 0){//把不是素数的都赋值为0if (a[j] % a[i] == 0)a[j] = 0;}}}printf(" 筛选法求出100以内的素数为:\n");for (i = 0; i < 100; i++){//数组中不为0的数即为素数if (a[i] != 0)printf("%3d", a[i]);}printf("\n");return 0;}【运⾏结果】2. ⽤选择法对10个整数排序【答案解析】选择排序原理:总共两个循环,外循环控制选择的趟数,内循环控制具体选择的⽅式。

程序设计c语言 循环控制的实验报告

程序设计c语言 循环控制的实验报告
main()
{
int n=1,m;
float x,y=0;
scanf("%f,%d",&x,&m);
do
{
y=y+(x/n);
n++;
x=x*x;
}
while(n<=m);
printf("%f",y);
return 0;
}
2)保存源程序,文件名为do….while语句求值1
3)运行程序,输出结果如下:
printf("%f",y);
return 0;
}
2)保存源程序,文件名为for语句求值1:
3)输入、输出结果如下:
3.编写程序,输入x和n,用while求y=x+x*x/2+x*x*x/3+…。
1)打开MinGW32集成开发环境,编写程序代码如下:
#include<stdio.h>
include<stdio.h>
5.综上所述:收益匪浅。
1. 通过程序一,主要是让我们区分while,for,do…while三者的用法,及其特点。
2. 通过第二个程序,了解和掌握了当语句需要精确到几位小数点之后的while,for,do…while三者的用法,及其特点。
3. 通过编写第三个程序,掌握了更为复杂的语句用法,而且还学会了分行输出数据。
4.通过第四个程序,我主要是了解了关于数学方法中对于阶乘的求法。
2.编写程序,输入m和n,计算m!+n!.
3.编写程序,输出100~200之间所有的素数,每行输出8个。
三、实环境
MinGW32系统。
四、实验步骤和结果
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

电子科技大学通信与信息工程学院
几种循环的比较
不提倡用goto语句构成循环 循环控制的比较

修改循环变量
循环变量 初始化
循环变量初始化 while(表达式){ 语句; ... }
循环变量初始化
do{ 语句; ... } while (表达式)
循环控制条件
for(表达式1;表达式2;表达式3){ 语句; ... }
for语句

求解表达式1
格式:
for(表达式1;表达式2;表达式3) 语句;
表达式2 非0(真)
0(假)
语句

注意:
表达式1只执行一次,且在进入 循环体之前执行,表达式1的功 能一般为循环变量置初值; 表达式3实际上循环体的一部分

求解表达式3
循环体外 下一条语句
电子科技大学通信与信息工程学院
电子科技大学通信与信息工程学院
for语句


i = 0; for(; i <= 100; i++) sum += i;

同时省略表达式1和表达式3,只有表达式2, 则相当于while语句
i = 0; while(i <= 100){ sum += i; i++; }
i = 0; for(; i<=100;){ sum += i; i++; }
#include "stdio.h" main() for ( ... ) { for ( ... ) { int sum = 0, i = 1; ... loop: if (i<=100){ if (disaster) sum = sum + i; goto error; i++; } goto loop; ... } error: printf(“ERROR\n”); printf("sum = %d\n",sum); } 电子科技大学通信与信息工程学院
电子科技大学通信与信息工程学院
for语句
表达式1 for(循环变量赋初值
;
表达式2 循环条件
;
表达式3 循环变量增值
)
{
循环体
}



表达式1省略时,应该在for循环前为循环变量赋初值 表达式2省略时;不判断循环条件,将成为“死循 环”,可以在循环体内使用break语句退出循环 表达式3省略时,循环体内应该有修改循环变量的语 句
while 语句
格式:while (表达式) 语句; 例:求1+2+3…+100 的和

表达式 0(假) 非0(真) 语句
#include "stdio.h" main() { int sum = 0, i = 1; while (i <= 100){ sum = sum + i; 循环体 i++; } printf("sum = %d\n",sum); }

达式1和表达式3可以是一个简单表达式也可以是 逗号表达式。

例:for(sum = 0, i=1; I <= 100 ; i++) sum += i;
电子科技大学通信与信息工程学院
循环的嵌套

循环体内包含另一个完整的循环,称为循 环嵌套。

内嵌循环体中还可以嵌套循环 例
外循环 while ( ){ ...... for (...; ...; ...){ 内循环 .... } ... }
#include "stdio.h" main() { int sum, i; int n; printf("Input n:\t"); scanf("%d", &n); sum = 0; i = 1; while (i <= n){ sum += i; i++; } printf("sum = %d\n",sum); }
电子科技大学通信与信息工程学院
for语句

表达式2一般是关系表达式或逻辑表达式,但也可 是数值表达式或字符表达式,只要其值非零,就 执行循环体。

例:for(; (c = getchar()) != 'Q';) printf(“%c”,c); 例:for(i = 1; i - 4; i++) sum += i;
高级程序设计语言
吴 凡
TEL: 83202682 E-mail: cdwf@
第六章
循环控制
电子科技大学通信与信息工程学院
概述

循环结构:在给定条件成立时,反复执行某程序 段,直到条件不成立为止。

给定的条件称为循环条件,反复执行的程序段称为循 环体。 用goto语句和if语句构成循环;(不提倡) 用while语句;(while型循环,先判断,再执行) 用do-while语句;(先执行,再判断) 用for语句;(多功能)
#include "stdio.h" main() { int sum=0, n; scanf("%d",&n); do{ sum += n; n++; } while( n <= 10); printf("sum=%d\n",sum); }
#include "stdio.h" main() { int sum=0, n; scanf("%d",&n); while(n <= 10){ sum += n; n++; } printf("sum=%d\n",sum); }
n = r;
}
电子科技大学通信与信息工程学院
例2 判断一个整数是否是素数
#include "stdio.h" 输入m #include "math.h" main() i = 2 { int m, i, tmp; i <= m1/2 printf("input n:\t"); m%i == 0 scanf("%d", &m); Y N tmp = sqrt(m); i++ 退出循环 for (i=2; i<=tmp; i++) if (m%i == 0) i > m1/2 break; Y N if (i > tmp && m!=1) printf("%d is a prime number\n",m); 打印“素数” 打印“非素数” else printf("%d is not a prime number\n",m); }
电子科技大学通信与信息工程学院
while语句注意事项

循环前,应先给循环变量赋初值 循环体中,一般应该有修改循环变量值的语句, 使循环趋向结束(即使表达式的值变为假) 循环体如包括有一个以上的语句,则必须用复合 语句(即用{ }括起来) 循环体可以为空

例:while ((c = getchar( )) != 'Q' ); 等价:c = getchar( ); while (c != 'Q') c = getchar();

在多层循环中, 一个break语句只向外跳一层。
电子科技大学通信与信息工程学院
continue 语句

continue语句作用:结束本次循环(跳过循 环本中剩余的语句),而强行执行下一次 循环。

continue语句只用在for、while、do-while等循 环体中,常与if条件语句一起使用,用来加速循环。
12
6
0
例1
输入m, n
#include "stdio.h" r = m % n main() { r != 0 int m, n; m = n; int r; n = r; printf("Input m & n:\t"); r = m % n; scanf("%d%d", &m, &n); printf("(%d ,%d) = ", m ,n ); 输出n 初始化循环变量 r = m % n; while (r != 0){ m = n; 循环体 n = r; r = m % n; } for (r=m%n; r!=0; r=m%n){ printf("%d\n", n); m = n; }
电子科技大学通信与信息工程学院
程序举例

例1:输入正整数m、n,求m和n的最大公 约数
举例的目的:体会循环结构的特点——重复执 行相同的操作。 求最大公约数:辗转相除法

例:求18和31
次数 1 2 3 被除数 18 30 18 除数 30 18 12 余数 18 12 6
的最小公约数
4
电子科技大学通信与信息工程学院
电子科技大学通信与信息工程学院
循环的嵌套

打印下图
1234567890123 * * * * * * * * * * * * * * * *
#include "stdio.h" main() { int i, j, k; for (i=0; i<4; i++){ for (j=0; j<6-2*i; j++) printf(" "); for (k=1; k<=2*i+1; k++) printf("* "); printf("\n"); } }
相关文档
最新文档