第5章 循环结构程序设计习题解答

合集下载

循环结构程序设计课后习题及答案

循环结构程序设计课后习题及答案

循环结构程序设计习题与答案1、循环语句的三要素分别是、、.2、for语句括号内的3个表达式的作用分别是、、.3、在2层循环嵌套中,外层循环语句的每个执行周期中,内层循环语句都要完整地,只有当时,才结束整个循环.4、在循环结构中,break语句的作用是;continue语句的作用是.5、当循环条件一开始就为假时,对于while语句、do…while语句、for语句,分别执行循环体次、次、次.6、下面程序段的执行次数:int a=0;while<a=0>{ printf<"good\n">;a--;}7、下面程序段的执行次数:int a=0;while<a==0>{ printf<"good\n">;a--;}8、下面程序段的执行次数:int a=1;while<a=1>{ printf<"good\n">;a++;}9、下面程序段的执行次数:int a=1;while<a==1>{ printf<"good\n">;a++;}10、下列程序段的运行结果是.for<i=5;i>=0;i-->printf<"%d ",i>;11、下列程序段的运行结果是.for<n=1;n<20;n=n+3>printf<"%d ",n>;12、下列程序段的运行结果是.for<ch='a' ;ch<='e' ;ch++>printf<"%d",ch-97>;13、下列程序段的运行结果是.for<i=1,j=5 ; i<j ; i++,j-->printf<"i=%d j=%d\n",i,j>;14、下列程序段的运行结果是.for<n=1 ; n*n<20 ; n++>printf<"%d \n",n+n>;二、选择题1、下列程序段中,死循环的是〔〕A、for <i=1; ;>B、i=32767;{ if<++i%2==0> continue; doif<++i%3==0> break; { if<i<0> break;} }while<++i>;C、i=1;D、for<i=1; ; >while<i-->; if<++i<10> break;2、下列程序段中,不是死循环的是〔〕A、inti=10;B、for< ; 1;>while<1>{ i=i%100+1;if<i>100> break;}C、int a=0;D、int x=21;do while<x>{ ++a; --x;}while<a>=0>;三、阅读程序,写出程序运行结果.1、#include"stdio.h"main<>{inti=0,sum=1;do{sum+=i;i++;}while<i<5>;printf<"%d\n",sum>;}程序运行结果:2、#include"stdio.h"main<>{inta,b;b=10;a=1;while<a<=b>a*=2;printf<"%d\n",a>;}程序运行结果:3、#include"stdio.h"main<>{int x=2;while<x-->;printf<"%d\n",x>;}程序运行结果:4、#include"stdio.h"main<>{int x=3;do{printf<"%d\n",x-=2>;}while<!x>;}程序运行结果:5、#include"stdio.h"main<>{inti;for<i=1;i<=5;i++>switch<i%5>{case 0:printf<"*">;break; case 1:printf<"#">;break; case 2:printf<"&">;break; default:printf<"\n">;}}程序运行结果:6、#include"stdio.h"main<>{charch;while<<ch=getchar<>>!='!'>putchar<++ch>;}程序运行结果:7、#include"stdio.h"main<>{inti,j;for<i=0;i<=5;i++>{for<j=1;j<10;j++>if<j==5> break;if<i<2> continue;if<i>2> break;printf<"j=%d\n",j>;}printf<"i=%d\n",i>;}程序运行结果:8、#include"stdio.h"main<>{int x ,y;x=37,y=13;while<x!=y>{if<x>y>x=x-y;if<y>x>y=y-x;}printf<"x=%d\n",x>;}程序运行结果:四、编程题1、输出下列图案12 43 6 94 8 12 165 10 15 20 252、输出下列图案*********3、编程求2-4+6-8+…-100+102的值.4、输出公元1500年至2500年所有的闰年的年号.5、从键盘上输入若干学生的C语言成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入.循环结构程序设计〔参考答案〕一、填空题、1.循环条件循环体循环控制变量2.循环变量赋初值循环测试条件循环变量更新3.执行整个周期外层循环条件为假4.提前结束包含它的循环语句的执行提前结束本次循环周期开始执行下一次循环周期5.0 1 06.07. 18.无数9. 110.5432111.1 4 7 10 13 16 1912.0123413.I=1,j=5I=2,j=414.14916二、选择题1. B2. D三、程序运行结果1.112.163.-14.15.#&*6.bgufsoppo7.i=5J=38.x=1四、编程题1.#include"stdio.h"main<>{inti,j;for<i=1;i<=5;i++>{for<j=1;j<=i;j++>printf<"%d ",i*j>;printf<"\n">;}}2.#include"stdio.h"main<>{inti,j;for<i=5;i>=1;i-=2>{for<j=1;j<=i;j++>printf<"*">;printf<"\n">;}}3.#include"stdio.h"main<>{inti,y=1,s=0;for<i=2;i<=102;i+=2>{ s=s+y*i;y*=-1; 〔y=-y>; } printf<"2-4+6+...-100+102=%d",y>;}4.#include"stdio.h"main<>{inti;for<i=1500;i<=2500;i++>if<i%4==0&&i%100!=0||i%400==0> printf<"%d ",i>;}5.#include"stdio.h"main<>{floatcj,min,max=0;printf<"请输入学生成绩,输入负数时结束:\n">; scanf<"%f",&cj>;min=cj;while<cj>=0>{if<cj>max>max=cj;if<cj<min>min=cj;scanf<"%f",&cj>;}printf<"max=%f\nmin=%f",max,min>;}。

第5章 习题与思考题和答案

第5章  习题与思考题和答案
C.A=C : C=B : B=AD.A=(A+B)/2 : B=(A – B)/2
4.下段程序执行的输出结果是。
S=0:T=0:U=0
For i=1 To 3
For j=1 To i
For K=j To 3
S=S+1
Next K
T=T+1
Next j
U=U+1
Next i
Print S;T;U
A.3 6 14B.14 63C.14 3 6D.16 4 3
Next j
If j>Int (Sqr(n-m))ThenPrint n,m,n-m
EndIf
Next m
Next n
EndSub

(1)编程序计算:1!+3!+5!+….+11!
(2)输入两个正整数m和n,求其最大公约数a和最小公倍数b,计算最大公约数a的方法如下:先算出m/n余数r,若r等于0,则n为最大公约数;若r不为0,则把原来的n值作为新的m值,把原来的r值作为新的n值,继续运算。这样辗转相除,直到r为0,此时的n值为最大公约数a,最小公倍数则可用原始m与n值的积除以最大公约数求得。
Private Sub Form_click()
Dim k,a,b as integer
a=20
b=2
k=2
Do While k<=a
b=b*2
k=k+5
Loop
Print b
End Sub
5.写出以下程序在单击命令按钮后的输出结果。
Private Sub Form_click()
k=0
fori=1 to 5
If n <= 0 Or m <= 0 Then

第五章循环结构程序设计习题解答

第五章循环结构程序设计习题解答

5、设某县2000年工业产值为200亿元,如果该县预计平均 每年工业总产值增长率为4.5%,那么多少年后该县工业总 产值将超过500亿? 算法步骤: 第一步,输入2000年的年生产总值. 第二步,计算下一年的年生产总值. 第三步,判断所得的结果是否大于 500.若是,则输出该年的年份;否则,返 回第二步. (1)确定循环体:设a为某年的年生产 总值,t为年生产总值的年增长量,n为 年份,则循环体为t=0.045a,a=a+t,n=n+1. (2)初始化变量: n=2000, a=200. (3)循环控制条件: a>500
3、从键盘输入一个正整数n,计算该数的各位数字之和并输出。 #include <stdio.h> void main() { long n; int s, i=1,j=10; scanf("%ld",&n); s=n%10; while(n/j!=0) { s=s+n/j%10; j=j*10; i++; } printf("i=%d, s=%d ",i,s); }
11、 九· 九表----1
1 1 2 3 4 5 6 7 8 9 2 2 4 6 8 10 12 14 16 18 3 3 6 9 12 15 18 21 24 27 4 4 8 12 16 20 24 28 32 36 5 5 10 15 20 25 30 35 40 45 6 6 12 18 24 30 36 42 48 54 7 7 14 21 28 35 42 49 56 63 8 8 16 24 32 40 48 56 64 72 9 9 18 27 36 45 54 63 72 81
2、输入一串字符,直到输入一个星号为止, 统计(输出)其中的字de <stdio.h> void main() { char ch; int char_num=0,int_num=0; ch=getchar(); while(ch!='*') { if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')) char_num++; else if(ch>='1'&&ch<='9') int_num++; ch=getchar(); } printf("char_num = %d, int_num = %d\n",char_num,int_num); }

C语言循环结构练习题带答案.doc

C语言循环结构练习题带答案.doc

第 5 章循环结构程序设计练习题1.单项选择题( 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。

int x=-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__。

while (a){if (b) continue;c;}A.while (a)B.while (c){ if (!b) c; }{ if (!b) break; c; }C. while (c)D. while (a){ if (b) c; }{ if (b) break; c; }( 8)以下程序的输出结果是_B___。

《c语言程序设计教程》林芳,易云飞版第五章循环结构例题练习题详解

《c语言程序设计教程》林芳,易云飞版第五章循环结构例题练习题详解

例1/****************************************************************************** *****题目:计算n的阶乘!设计:狼影时间:2012-03-05 19:59******************************************************************************* ********//****************************************************************************** ***注意!下面所求数的阶乘不能超过31,要请求更大数的阶乘!请参照第二个阶乘函数!哈!第二个能看懂的就看啊!思想是用数组来保存数据,然后在输出数组中的数!(下面对它做了充分的解释,祝你能看懂哈!!)******************************************************************************* ******//***********************第一个函数*******************************/# if 1# include <stdio.h>main(){int n, i;unsigned long sum = 1;//请求用户输入数据,不能超过12,所以为了避免溢出出错,在下面限制了数的大小printf("请输入要求什么数的阶乘\n");scanf("%d", &n);//限制数的大小if(n<0 || n>12)printf("你输入错误!\n");if(n==0 ||n == 1)printf("此数的阶乘为1\n");//求当n大于一时的阶乘!if(n>1 && n<=12){for(i = 2; i<=n; i++){sum *= i;}printf("%d!=%d\n" ,n, sum);}}# endif/****************************************************************************** *****************请输入要求什么数的阶乘1212!=479001600Press any key to continue******************************************************************************* ******************请输入要求什么数的阶乘13你输入错误!Press any key to continue******************************************************************************* *********************//**********************************************第二个函数利用数组求大数阶乘!*******************************//****************************************************************************** *************************重点!要将数组中的每一位元素都乘以2到n的数;规范数组元素,看每位数组元素保留几位数;在规范中,如何计算进位?解决:用数组元素整除位数加一的最小数例如:保留3位,就要用数组元素整除1000 ;123/1000 = 0,进位为01234/1000 = 1,进位为1;如何保证每位数组元素有一定的位数?解决:用数组元素整除位数加一的最小数求余如:保留3位123%1000 = 123; 1234%1000 = 234;当有进位时,数组下标要加一;如何判断有进位?当当前的下标元素加一的数组元素>零时,说明有进位;正确输出(要逆序输出数组,从右向左);例如:7!= 5040 假如每位数组元素保留3位数则在数组中7!的表示法为40 / 5(为了方便看每位数组元素用/隔开)由上知数组逆序输出,因为产生的进位都会加到数组的下一位;由上可以看到如果按上面的逆序输出得到的是540,少了一个零,为了保证零的不缺失,所以输出时除了最高位的都要用03d%保证三位,不足三位的在左边补零。

(整理)程序设计基础(人民邮电出版社)答案第5章循环结构程序设计

(整理)程序设计基础(人民邮电出版社)答案第5章循环结构程序设计

一、单选题1.for语句中的表达式可以部分或全部省略,但两个C不可省略。

但当三个表达式均省略后,因缺少条件判断,循环会无限制地执行下去,形成死循环。

A)0 B)1C);D),2.程序段如下int k=-20;while(k=0) k=k+1;则以下说法中正确的是C。

A)while循环执行20次B)循环是无限循环C)循环体语句一次也不执行D)循环体语句执行一次3.程序段如下int k=0; while(k++<=2); printf("%d\n",k);则执行结果是D。

A)2 B)3C)4 D)无结果4.在C语言的循环语句for,while,do-while中,用于直接中断循环的语句是C 。

A)swich B)continueC)break D)if5.循环语句中的for语句,其一般形式如下:for(表达式1;表达式2;表达式3)语句其中表示循环条件的是B。

A)表达式1 B)表达式2C)表达式3 D)语句6.以下能正确计算1×2×3×…×10的程序段是C。

A)do {i=1;s=1; s=s*i; i++; } while(i<=10);B)do {i=1;s=0; s=s*i; i++; } while(i<=10);C)i=1;s=1; do {s=s*i; i++; } while(i<=10);D)i=1;s=0; do {s=s*i; i++; } while(i<=10);7.不是无限循环的语句为A。

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;8.有以下程序段int n=0,p;do{scanf(“%d”,&p);n++;}while(p!=12345 && n<3);此处do—while循环的结束条件是D。

C+循环结构道题含答案

C+循环结构道题含答案

题目、描述、输入、输出、输入样例、输出样例、测试输入、测试输出循环01:最大数写一个程序,可以输入一批正数,输入0时结束循环,并且输出最大的正数。

输入39 28 5 63 18 27 0输出63测试:输入153 26 963 28 75 90 156 0输出963#include<iostream>using namespace std;int main(){int i,max=0;cin>>i;while(i!=0){if(i>max)max=i;cin>>i;}cout<<max<<endl;return 0;}循环02:素数输入正数n,判断n是否为素数。

若为素数则输出1,否则输出0。

(提示:素数是指只可以被1和其本身整除的正数(1除外))输入10输出0输入7输出1测试:输入9输出0#include<iostream>using namespace std;int main(){int n,i,d;cin>>n;for(i=2;i<n;i++){d=n%i;if(n%i==0)break;}if(n==i)cout<<"1"<<endl;elsereturn 0;}循环03:数列求和输入一个正整数n,计算前n项之和:1+1/4+1/7+1/10..+1/(3*n-2)。

输入5输出输入4输出#include<iostream>using namespace std;int main(){int i,n;double s=0;cin>>n;for(i=1;i<=n;i++)s+=(3*i-2);cout<<s<<endl;return 0;}循环04:西瓜卖几天n个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,问几天以后能卖完?说明:当西瓜个数为奇数时,卖一半为一半的整数,如当西瓜个数为5时,卖一半为卖2个。

visual basic (vb)第5章_2(循环语句)解析

visual basic (vb)第5章_2(循环语句)解析

Visual Basic 程序设计
1 为什么要使用循环结构? 使用循环结构,上述程序可以修改为: Private Sub Form_Click() For I = 1 To 6 Print "**********" Next I End Sub 与前面的程序相比,循环结构使得程序更加 清晰,功能更加强大,修改也更加方便。
VB 程序设计基础课件 Visual Basic 程序设计
例题3 计算S=1!+2!+……+20!
Private Dim Dim S = For Sub Form_Click() S As Single, temp As Single I As Integer, J As Integer 0 I = 1 To 20 temp = 1 For J = 1 To I temp = temp * J Next J S = S + temp Next I Print "1!+2!+……20!=", S End Sub
例题5 输出乘法口诀—2
Private Sub form_Click() For I = 1 To 9 For J = 1 To I Print I;"*"; J; "="; I * J; ' 不换行 Next J Print ' 换行 Next I End Sub
Visual Basic 程序设计
例6 输出图形
Visual Basic 程序设计
Private Sub picture1_Click() Picture1.Cls ' 清除图片框 n = Val(InputBox("请输入行数")) For i = 1 To n Picture1.Print Tab(n + 1 - i); ' 控制打印起点 For j = 1 To 2 * i - 1 Picture1.Print "*"; Next j Picture1.Print For j = 1 To n - i Next i Picture1.Print Spc(1); End Sub
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第5章循环结构程序设计习题解答1.输入n个整数,求这n个数之中的偶数平均值,并输出。

#include<stdio.h>void main(){int n,i,x,k=0,s=0;printf("Input a number(n):");scanf("%d",&n);printf("Input %d numbers:",n);for(i=0;i<n;i++){scanf("%d",&x);if(x%2==0){s+=x;k++;}}s/=k;printf("average=%d\n",s);}2.输入一串字符,直到输入一个星号*为止,统计(输出)其中字母个数和数字字符个数。

#include<stdio.h>void main(){int n=0,m=0;char c;printf("Input a string character:");do{scanf("%c",&c);if(c>='0'&&c<='9')n++;else if(c>='A'&&c<='Z'||c>='a'&&c<='z')m++;}while(c!='*');printf("number_char=%d\n",n);printf("letter_char=%d\n",m);}3.从键盘输入一正整数n,计算该数各位数字之和并输出。

例如,输入数是5246,则计算5+2+4+6=17并输出。

#include<stdio.h>void main(){int n,r,m=0,s=0;printf("Input a number(int):");scanf("%d",&n);do{r=n%10;s=s+r;n/=10;if(m==0)printf("%d",r);//加式中的第1项不带“+”elseprintf("+%d",r);m++;}while(n>0);printf("=%d\n",s);}4.输入一个字符串,将其中的大写字母改为小写字母,小写字母改为大写字母,然后输出。

#include<stdio.h>void main(){char c;printf("Input a string character('*' end):");do{scanf("%c",&c);if(c>='A'&&c<='Z')c+=32;else if(c>='a'&&c<='z')c-=32;printf("%c",c);}while(c!='*');putchar('\n');}注:可以使用逐位异或运算^,实现大小字母变为小写字母,小写字母变为大写字母:#include<stdio.h>void main(){char c;printf("Input a string character('*' end):");do{scanf("%c",&c);if(c>='A'&&c<='Z' || c>='a'&&c<='z')c^=0x20; //大、小写转换printf("%c",c);}while(c!='*');putchar('\n');}5.设某县2000年工业总产值为200亿元,如果该预计平均年工业总产值增长率为4.5%,那么多少年后该县年工业总产值超过500亿元?#include<stdio.h>void main(){double x=200;int i;for(i=0;x<=500;i++)x*=(1+0.045);printf("%d yeares %f\n",i,x);}6.输出1~999中能被3整除,而且至少有一位数字是5的所有数字。

#include<stdio.h>void main(){int i,a1,a2,a3,m,n=0;for(i=1;i<1000;i++){a1=i%10,m=i/10;a2=m%10,m=m/10;a3=m%10,m=m/10;if(i%3==0 && (a1==5 || a2==5 || a3==5)){printf("%4d ",i);n++;if(n==10){putchar('\n');n=0;}}}putchar('\n');}7.求爱因斯坦数学题。

有一条长阶,若每步跨2阶,则最后剩1价;若每步跨3阶,则最后剩2阶;若每步跨5阶,则最后剩4阶;若每步跨6价,则最后剩5阶;若每步跨7阶,最后正好一阶不剩。

求该长阶有多少级台阶。

为了方便编程,设长阶的级数不超过1000级。

#include<stdio.h>void main(){int i;for(i=7;i<1000;i++)if(i%2==1 && i%3==2 && i%5==4 && i%6==5 && i%7==0)printf("%d\n",i);}8.输入一个3位数,判断是不是一个水仙花数。

水仙花数是指3个数的各位数字的立方和等于这个3位数本身。

例如,153=1*1*1+5*5*5+3*3*3。

#include<stdio.h>void main(){int i,k,s=0,a,r;for(i=100;i<1000;i++){a=i;for(k=0;k<3;k++){r=a%10;s=s+r*r*r;a=a/10;}if(s==i)printf("%d\n",i);s=0;}}9.计算斐波那契分数序列前n 项之和(n 是某个常数,斐波那契分数列为58,35,23,12)。

分析:从已知的各项可以得到一个递推关系: nn x x 111+=+ #include<stdio.h>void main(){int i,n;float x=2,s=0;printf("Input a number(n):");scanf("%d",&n);for(i=2;i<=n;i++){x=1+1/x;s=s+x;}printf("s=%f\n",s);}10.输入一个正整数,各输出n行的正(倒)三角宝塔图案。

正三角宝塔图:#include<stdio.h>void main(){int i,j,n;printf("Input a number n(>3):");scanf("%d",&n);for(i=1;i<=n;i++){for(j=n-i;j>0;j--)putchar(' '); //输出空格for(j=1;j<=i*2-1;j++)printf("*"); //输出"*"putchar('\n'); //换行}}倒三角宝塔图:#include<stdio.h>void main(){int i,j,n;printf("Input a number n(>3):");scanf("%d",&n);for(i=1;i<=n;i++){for(j=i;j>0;j--)putchar(' '); //输出空格for(j=1;j<=2*n-2*i+1;j++)printf("*"); //输出"*"putchar('\n'); //换行}}11.输出九九表。

#include<stdio.h>void main(){for(i=1;i<=9;i++){for(j=1;j<=i;j++){printf("%d*%d=%d",i,j,i*j);putchar(' ');}putchar('\n');}}12.输入一串数字,直到输入一个0为止,统计(输出)其中的正整数和负整数个数以及所有正整数的平均值和所有负数的平均值(原题有误,误为一串字符)。

#include<stdio.h>void main(){int a,n=0,m=0,ps=0,ns=0;printf("Input number(0 end):");do{scanf("%d",&a);if(a>0){ps+=a;n++;}else if(a<0){ns+=a;m++;}}while(a!=0);ps/=n;ns/=m;printf("Positive integer number=%d,average=%d\n",n,ps);printf("Negative integer number=%d,average=%d\n",m,ns);}13.一个整数等于该数所有因子之和,则称该数是一个完数。

例如,6和28都是完数。

因为6=1+2+3,28=1+2+4+7+14。

输出1000以内的所有完数。

#include<stdio.h>void main(){for(i=1;i<1000;i++){s=1;for(j=2;j<=i/2;j++){if(i%j==0)s+=j;}if(s==i) //是完数输出各因数{printf("%d=",i);for(j=2;j<=i/2;j++){if(i%j==0)printf("%d+",j);}printf("%d\n",1);}}}14.编写程序,按下列公式计算e 的值(精度为1.0e-6)。

相关文档
最新文档