C语言程序设计10循环结构程序设计(3)
《C语言程序设计》课后习题参考答案 李勃 邱晓红 主编 清华大学出版社

《C语言程序设计》课后习题参考答案第1章C语言及程序设计概述1.单选题(1)A (2)B (3)A (4)B (5)C2.填空题(1)//,/*…*/(2)scanf()(3)printf()3.判断题(1)对(2)错(3)错(4)对第二章:数据类型运算符与表达式1.单选题(1)C (2)D (3)C (4)B (5)C (6)A (7)B (8)D (9)A(8)D(9)A(10)B(11)C(12)C(13)D(15)B(16)C(17)A(18)A(19)B(20)C(21)C(22)D(23)C(24)A(25)D(26)B(27)C(28)B(29)B(30)A2.填空题(1)sqrt(pow(y,x)+log10(y)) (2)36(3)6(4)3 3(6)36(7)int x=8,y=8;(8)1(9)E(10)6,7,8,9(11)6(12)66,96(13)240(14)1,1,-1,-1(15)5,2,6(16)1(17)!(18)2(19)(a>0&&a<101)&&(a%3==0||a%7==0) (20)A3.程序分析题(1)2 72 74 94 412 12116(3)100 d 68 D97 a 49 1 (4)0 1 0 1 (5)2 4 6 7-0.58 7046.587.5(6)33 12 113 13 082 32(7)618 30181814.改错题(1)①无初始赋值,不能输出②数据精度丢失③少“;”号④单字符变量不能保存字符串常量⑤不能连续初始化⑥非法标识符(2)short i=38000溢出PI=3.1416 常量不能修改值Printf(“%d”,x%y) %必须是整数a*=(b+c)/=d符合赋值左边不能是表达式第三章:算法概念与顺序结构程序设计1.选择题(1)D(2)B、D(3)D(4)B(5)C(6)A(8)C(9)B(10)D2.填空题.(1)一条语句;(2)小于左右(3)%%(4)输出项列表输出控制符(5)取地址取a的地址(6)从盘获取一个字符(7)大括号(8)f=68.00(9)n1=%d\n n2=%d(10)7,5,c=33.程序分析题.(1)i=100,c=a,f=1.234000(2)65535,65536(10)1234,123.5,12345.5第四章:选择结构程序设计(1)C (2)B (3)B (4)B (5)D (6)D (7)D (8)A (9)B (10)A (11)B (12)B (13)D (14)A (15)C (16)A (17)C (18)D (19)B (20)D (21)A(23)A(24)A2.填空题.(1)1(2)5 8 8(3)4 5 99(4)2(5)10 20 0(6)2 1(7)-4(8)3(9)No(10)25(11)45 45(12)0(13)5.5(14)13(15)3第五章:循环结构程序设计(1)C(2)A(3)D(4)B(5)D(6)B(7)A A或B(8)输出4444(9)B(10)A(11)B(12)C(13)A(14)B2.填空题.(1)r=m;m=n;n=rm%n(2)3(3)-5(4)i%3==2&&i%5==3&&i%7==2 j==5j!=k(6)int s=8,j=i+2k+i+j==8(7)8(8)k&&i<=500 k/10 continue第六章:数组1.选择题(1)B(2)C(3)D(4)D(5)B(6)C(7)B(8)A(9)A(10)D2.填空题.(1)按行序优先的原则(2)0 9(4)1 2(5)6(6)前者以回车后者以空格或回车作为间隔符(7)gets()(8)&a[i](9)char k -1(10)9 83.程序分析题.(1)1 3 7 15(2)0 0 0(3)读取输入字符串中数字字符(4)①if(str1==str2) (strcmp(str1,str2)==0)②&c1[0]③m[i][k-1]第七章:函数的调用1.选择题(1)B(2)C(3)C(4)A(6)D(7)D(8)D(9)B(10)D(11)A(12)A(13)B(14)B2.填空题.(1)有参无参(2)顺序类型(3)定义调用(4)①fmax(a,N) ②s[k]=s[p](5)①age(n-1)+2 ②age(5)(6)①prt(c,n-1) ②prt(…‟,n-i) ③prt(…*‟,2*i-1) 3.程序分析题.(1)h l o(2)3(3)2 6(4)5 25。
C语言循环结构练习题带答案

第5章循环结构程序设计5.1基本知识点✍while语句的使用格式和注意事项✍do-while语句的使用格式和注意事项✍for语句的使用格式和注意事项✍break和continue语句在循环语句中的应用✍循环结构的嵌套✍使用goto语句实现循环结构✍穷举法程序设计方法✍迭代程序设计方法5.2练习题51.单项选择题(1)语句while(!e);中的条件!e等价于A。
A.e==0B.e!=1C.e!=0D.~e(2)下面有关for循环的正确描述是D。
A.for循环只能用于循环次数已经确定的情况B.for循环是先执行循环体语句,后判定表达式C.在for循环中,不能用break语句跳出循环体D.for循环体语句中,可以包含多条语句,但要用花括号括起来(3)C语言中D。
A.不能使用do-while语句构成的循环B.do-while语句构成的循环必须用break语句才能退出C.do-while语句构成的循环,当while语句中的表达式值为非零时结束循环D.do-while语句构成的循环,当while语句中的表达式值为零时结束循环(4)C语言中while和do-while循环的主要区别是A。
A.do-while的循环体至少无条件执行一次B.while的循环控制条件比do-while的循环控制条件严格C.do-while允许从外部转到循环体内D.do-while的循环体不能是复合语句(5)以下程序段C。
intx=-1;do{x=x*x;}while(!x);A.是死循环B.循环执行二次C.循环执行一次D.有语法错误(6)下列语句段中不是死循环的是__C__。
A.i=100;while(1){i=i%100+1;if(i==20)break;}B.for(i=1;;i++)sum=sum+1;C.k=0;do{++k;}while(k<=0);D.s=3379;while(s++%2+3%2)s++;(7)与以下程序段等价的是__A__。
循环结构程序设计(C语言实验报告)

循环结构程序设计(C语言实验报告)实验目的:1. 掌握循环结构程序设计流程2. 熟悉while、do-while和for循环语句的使用3. 掌握循环语句的嵌套应用实验原理:循环结构是一种非常重要的程序设计结构,其目的是为了让程序可以重复执行一段代码块,从而达到省去大量代码重复编写的目的,也可以是让程序能够按照用户的需求反复执行一段代码块。
在C语言中,常用的循环结构有while、do-while和for三种,这三种循环语句的基本语法结构是:while(循环条件){循环体语句;}其中,while循环和do-while循环的区别在于:while循环条件成立时,不一定会执行一次循环体,但do-while循环条件成立时,会先执行一次循环体,然后判断循环条件是否成立;至于for循环,则是将循环条件、循环初值和循环增量三个要素集成在一起,使用比较方便。
另外,循环结构也可以进行嵌套应用,即在循环体内部再嵌套一个循环,这样可以实现多个变量的循环控制。
应用实例包括如下:1. 打印九九乘法表2. 对一个数组进行排序3. 多重循环实现字谜游戏实验内容:1. while循环:目的是求出1~100的整数和,并在程序运行过程中输出1~100的所有整数。
目的是输入若干个数字,计算它们的平均值。
3. for循环:目的是输入一个数n,求1~n中可以被3或5整除的所有整数和。
4. 循环嵌套:目的是打印九九乘法表。
实验总结:本次实验通过三种常用的循环结构,并结合实例进行学习掌握,同时还熟悉了循环嵌套的应用。
相信这对于日后的程序设计和代码优化应用会非常有帮助。
C语言-10循环结构- while 语句

§作业
一台购买价为 28,000 美元的机器在 7 年内以每年 4000 美元的比率折旧。编写并运行一个 C 程序,计算并显示 美元的比率折旧。 程序, 7 年的折旧表,该表应该具有如下的形式: 年的折旧表,该表应该具有如下的形式: 年 ---1 2 3 4 5 6 7 折旧 ---------4000 4000 4000 4000 4000 4000 4000 年终值 ---------24000 20000 16000 12000 8000 4000 0 累计折旧 ---------4000 8000 12000 16000 20000 24000 28000
C语言程序设计
第十课 循环结构- while 语句 循环结构-
§10.1 循环(重复) 10. 循环(重复)
前面几章介绍的程序在 前面几章介绍的程序在演示 C 程序的正确结构,以及构造 程序的正确结构, 输入、输出、赋值和选择功能方面是非常有用的。 基本的 C 输入、输出、赋值和选择功能方面是非常有用的。 大多数程序的实际功能主要表现在它们多次重复相同的计算 或指令序列的能力上,即每次使用不同的数据, 或指令序列的能力上,即每次使用不同的数据,而不必针对每组 新的数据值重新运行程序, 语句, 新的数据值重新运行程序,本章将介绍实现该功能的 C 语句, while、 do语句。 包括 while、for 和 do-while 语句。
§10.3.3 while 应用-更改控制变量的值 10.
我们仍需要更改 count 的值才能最终退出 while 语句,这需要 语句, 这样的条件, 使用像 count=count+l 这样的条件,在每次执行 while 语句时都 的值。事实是, 递增 count 的值。事实是,用于重复单个语句的 while 语句不会妨 的值,我们所要做的就是使用复合 碍我们使用其他语句来更改 count 的值,我们所要做的就是使用复合 语句来替代单个语句 例如: 来替代单个语句, 语句来替代单个语句,例如: count = 1; //将 count 初始化 //将 while( count <= 10 ) { printf("%4d",count); //将count递增 //将count递增 count++; } 现在让我们来分析一下这组完整的指令的工作方式。 现在让我们来分析一下这组完整的指令的工作方式。第一个赋值语 设置为1 然后, 语句, 句将 count 设置为1。然后,进入 while 语句,条件第一次得到赋 10,所以条件成立,并执行复合语句。 值。因为 count 的值小于 10,所以条件成立,并执行复合语句。复 printf()方法来显示 合语句中第一个语句是调用 printf()方法来显示 count 值。接下来 的语句是将 count 中当前存储的值加上 1,使该值等于 2。现在 while 语句循环回来重新测试条件,因为 count 的值仍小于 10,所 语句循环回来重新测试条件, 10, 以将再次执行复合语句, 11。 以将再次执行复合语句,该过程将一直持续到 count 的值达到 11。
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循环是循环结构当中最为常用的三种形式,他们能够极大地提高程序员的编程效率,帮助我们完成一些复杂的程序编写工作。
C语言实验报告 实验三 参考答案

实验三循环结构程序设计(参考答案)1、设计程序sy3-1.c,计算并输出n(包括n)以内所有能被5或9整除的自然数的倒数之和。
例如输入n 的值为20时,输出0.583333。
算法分析:穷举1~n(含n)之间的每一个整数,能否被5或者9整除。
如果能,则把它的倒数累加到累加器里去。
因为能被5整除的自然数,应该至少从5才可能,所以循环控制变量i可以5开始。
参考答案:#include<stdio.h>void main(){int n,i;double s=0; //累加器要赋初值为0,结果为小数,所以定义为实数类型printf("请输入n的值:");scanf("%d",&n);for(i=5;i<=n;i++) //穷举小于等于n的自然数if(i%5==0||i%9==0)s=s+1.0/i;// 因为i是整数类型,所以1/i的值为0printf("s=%f\n",s);}运行结果:2、设计程序sy3-2.c,计算并输出给定整数n的所有因子(不包括1与自身)之和。
例如,输入n的值是856时,应输出763。
算法分析:因子,就是能整除n的值。
所以从2到n-1穷举每个数是不是它的因子,是就累加到s中。
参考答案:#include<stdio.h>void main(){int s=0,n,i;printf("请输入n:");scanf("%d",&n);for(i=2;i<n;i++) //穷举所有可能为因子的整数if(n%i==0) //因子即是能整除n的数s=s+i;printf("%d的所有因子之和是:%d\n",n,s);}运行结果:3、设计程序sy3-3.c,输入一个整数,要求将该整数上各位数字是偶数的数取出,并按原来从高位到低位的顺序组成一个新数。
C语言程序设计 实验报告3 循环结构
二、 实验内容和原理
1. 输入一行字符,分别统计出其中英文大写字母、小写字母、空格、数字和其他字符的个 数。 2. 计算输入的 10 个整数中正数的个数及正数平均值(要求使用 continue)。 3. 输出 3~100 之间所有的素数。 4. 请编程实现输出以下图案。
5. 输出所有的三位“水仙花数”。
合条件时相应表示增加,最后输出。
2、 用 for 语句限制个数,再用迭代方法处理,当 a 符合要求时,sum=sum+a。用 continue 结束本次循环。
3、 用 for 语句循环再用穷举法将 3~100 的数逐个检查,看它能不能被 2 到 sqrt(x) 中任意一整数整除,如果可以 num++。
ቤተ መጻሕፍቲ ባይዱ
数%d\n",letters,LETTERS,space,digit,other); return 0; } 2、#include<stdio.h> int main() {int i,num=0,a; float sum=0; printf("请任意输入是个整数(中间用空格隔开):"); for(i=1;i<=10;i++) {scanf("%d",&a); if(a>=0) {num++; sum+=a; continue; } } printf("正数个数:%d,正数个数总和:%.0f\n",num,sum); printf("正数平均数:%.2f\n",sum/num); return 0; } 3、#include<stdio.h> #include<math.h> int main() {int x,y,num=0; for(x=3;x<=100;x++) {for(y=2;y<=sqrt(x);y++) if(x%y==0) break; if(y>sqrt(x)) {printf("%d ",x); num++; } } printf("3-100 之间的素数有%d 个。\n",num); return 0; } 4、#include<stdio.h> int main() {int i,j,k; for(i=0;i<=4;i++) {for(j=0;j<=3-i;j++) printf(" "); for(k=0;k<=2*i;k++) printf("*"); printf("\n"); }
C语言_3_顺序、选择、循环结构
格式输出(续)
printf()要求
有些系统要求格式字符要用小写字母,如%d不 能写成%D 可以在printf函数中格式控制字符串中包含的转 义字符,如\n,\t,\b,\r,\f,\377 一个格式说明以%开头,以上述9格式字符之一 为结束,中间可以插入附加格式字符 如果想输入字符%,则应该在格式控制字符串 中用连续两个%%表示 不同的系统在实现格式输出时,输出的结果可 能会有一些小差别
格式字符——c格式符
格式输出(续)
格式字符——s格式符
%s:输出一个字符串 %ms:输出的字符串占m列,如果字符串本身长度大于 m,则突破m的限制,将字符串全部输出;若长度小于 m,则左补空格 %-ms:如果串长小于m,则在m列范围内,字符串向左 靠,右补空格 %m.ns:输出占m列,但只取字符串中左端n个字符, 这n个字符输出在m列的右侧,左补空格 %-m.ns:其中m、n含义同上,n个字符输出在m列范围 的左侧,右补空格;如果n>m,则m自动取n值,即保 证n个字符正常输出
说明
c
s
用来输入单个字符
用来输入字符串,将字符串送到一个字符数组中, 在输入时以非空白字符开始,以第一个空白字符结 束。字符串以串结束标志\0作为其最后一个字符。 用来输入实数,可以用小数形式或指数形式输入
f
e
与f作用相同,e和f可以互相替换
格式输入(续)
附加格式字符
字符
字母l
h
说明
用于输入长整型数据(可用%ld、%lo、%lx), 以及double型数据(用%lf或%le)
格式字符——g格式符
格式输出(续)
C语言 第三章 循环结构
这种循环称为嵌套循环(或多重循环),大循环 中嵌套了小循环。其中大循环(外层循环)重复 了100次,每次累加一项item,而每次累加的 item由小循环(内层循环)计算得到,内层循环 重复i次,每次连乘一项。
P68ex4-6.cpp
23
11. 嵌套循环
在累加求和的外层for语句的循环体语句中,每次计算 i!之前,都重新置item的初值为1,以保证每次计算阶 乘都从1开始连乘。 如果把程序中的嵌套循环写成下列形式: item=1; for(i=1;i<=100;i++){ for(j=1;j<=i;j++) item=item*j; sum=sum+item; } 由于将item=1放在外层循环之前,除了计算1!时item从1 开始连乘,计算其他阶乘值都是用原item值乘以新的 阶乘值。如i=1时,item=1;i=2时,item=item*1*2; i=3时,item=item*1*2*3=1!*2!*(1*2*3),而非3!, 依次类推,i=100时,item=1!*2!*3!*……100!,最 24 后得出的累加和是1!+1!*2!+……+1!*2!*3!…*100!
见文件ch3ex3.cpp
12
5. do-while语句
for语句和while语句都是在循环前先判断条件, 只有条件满足才会进入循环,如果一开始条件 就不满足,则循环一次都不执行。 do-while语句与上述两种循环语句略有不同, 它先执行循环体,后判断循环条件。所以无论 循环条件的值如何,至少会执行一次循环体。 其一般形式为。
2. 3.
4.
从键盘输入一批学生的成绩(以负数为结束标志), 计算平均分,并统计不及格成绩的个数。H
C语言循环结构程序设计
i=-i;
//然后对i取负,得到它的绝对值
}
if(i==0)
printf("%d",i);
while(i!=0)
{
r=i%10;
printf("%d",r);
i=i/10;
}
printf("\n");
}
注意:循环体的有效范围 例: i=1; while(i<=100)
putchar(‘*’); i++;
i++;
i=10,iSum=55 1+2+3+...+10=55
} while(i<=10);
printf("1+2+3+...+10= %d\n",iSum);
}
例5.7 将一个给定的整数反序输出。
#include "stdio.h"
void main()
{
int i,r;
printf("\nInput an integer:");
{
****
for(j=1;j<=i;j++)
*****
putchar('*');
putchar('\n');
}
}
例5.12 求100以内的全部素数。
void main() {
int m,n,i,prime; i=0; for(m=2;m<=100;m++) {
void main()
{
int m,n,r;
printf("please input two positive integers:");
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
枚举问题 –练习
1、实践教材P144思考题(3) 2、求1!+2!+3!+…+10! 3、教材P147,项目训练(2)、(3)、(4)。
break语句
switch 语句中的break
• 例子 功能:结束当前switch main() 的执行,转到该switch { int i=2; 语句的下一条语句执行。 switch(i) { case 0: printf(" i=0 "); break; case 1: printf(" i=1 "); break; case 2: printf(" i=2 "); case 3: printf(" i=3 "); break; default: printf("default");} } 结果:i=2 i=3
平面阵列输出
解决问题: * *** ***** ******* ********* …
问题(1),有多少行?(外层循环) for( row=1; row< ? ; row++) { } 问题(2),每行上的每列的内容?(内循环)(除*外, 还有空格) for(s=1; s<?; s++) { } //每行上各有 多少空格? for(st=1; st<?; st++) { } //每行上各 有多少*? 问题(3),在s循环内输出 空格: printf(“ “); 在st循环内输出* printf(“*”); 问题(4),输出完一行后,要换行
平面阵列输出
解决问题: 1 12 123 1234 12345 123456 1234567 void list() { int row, col; for( row=1; row<7; row++) { for43;) { printf(“%d”, col); } printf(“\n”); //换行 } }
平面阵列输出
问题分析: (1)程序要一行一行输出,因此,需要一个循环来控制 总的要输出多少行 (2)在每一行上,每一列输出的内容是什么,得由另一 个循环来控制 形式如下:
for( row=1; row<n; row++) //n是最大行数 { for( col=1; col < m; col++) //col是最大列数 { //每一列上要输出的具体内容 } printf(“\n”); //每行末尾都要换行 }
循环结构程序设计
循环结构程序设计(3)
回顾(for、while语句) break语句 continue语句 综合练习 课堂实践
课前回顾
循环的三要素: (1)循环条件 (2)循环体 (3)循环变量的控制语句
C语言中,循环的几种形式: while语句 for语句 do-while语句
continue语句
循环语句中的continue
功能:终止本轮循环循环体语句的执行,
对于while语句:
对于for语句:
转去判断while循环条件
转去执行表达式3,再判断表达式2
while语句中的continue
问题
形如: 1 多重循环的问题 12 123 1234 … 的形式如果控制输出
多重循环解决的典型问题
(1)平面阵列输出 (2)枚举问题 (3)任意循环嵌套 (4)复杂逻辑推理 …
平面阵列输出
解决问题: 1 12 123 1234 12345 …
* *** ***** ******* *********
循环语句中的break
功能:跳出该break所在的那层循环语句,提前终止当 前循环。 main() { int i; for(i=1;i<=10;i++) { printf(“%d “,i); if(i==5) break; } printf(“game over!”); } 结果:12345game over!
平面阵列输出
解决问题: * *** ***** ******* ********* …
S=总行数-行号
St=2*行号-1 for( row=1; row< ? ; row++) { for(s=1; s<?; s++) { //控制空格个数 printf(“ “); } for(st=1; st<?; st++) {//控制*个数 printf(“*”); } printf(“\n”); //换行 } 行号 空格个数s *个数st
平面阵列输出
解决问题: 1 12 123 1234 12345 123456 1234567
问题(1),总共有多少行,得出外循环: for( row=1; row<7; row++) { } 问题(2),每行上各有多少列,得出内循环: for(col=1; col<row;col++) { } 问题(3),每一列上具体输出什么,得出printf语句: printf(“%d”, col); 问题(4),每行输出结束后,要换行,得出需要加下面的 换行语句: printf(“\n”); //换行
枚举问题 –百钱买百鸡
for(cock=0; cock<=20;cock++)//鸡翁的所有可能值 { for(hen=0; hen<=33;hen++)//鸡母的所有可能值 { for(chick=0; chick<=100;chick+=3)//鸡雏的所有 可能值 { if( 条件 ) { 输出cock、hen、chick的值 } } } } 条件为: cock+hen+chick==100 && 5*cock+3*hen+click/3==100
1 2 3 4 5 4 3 2 1 0 1 3 5 7 9
平面阵列输出
练习解决问题: 1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=9 4*1=4 4*2=8 4*3=12 4*4=16 … 9*1=9 9*2=18 9*3=27 … 9*9=81
枚举问题
解决问题:百钱买百鸡 鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一. 百钱买百鸡, 鸡翁、鸡母、鸡雏各几何? 此类问题的解决办法就是----把所有组合拿来 试一次,符合条件的就留下,不符合的去掉。 (用循环去试遍所有变量)