循环结构程序设计典型例题
循环结构程序设计典型例题
2
22 7
1 1 1 1 4 3 5 7
每项的分子都是1
后一项的分母是前一项的分母加2
第1项的符号为正,从第2项起,每一项的符 号与前一项的符号相反
1 n
1 n2
25
#include <stdio.h> #include <math.h> void main() { int sign=1; double pi=0,n=1,term=1; while(fabs(term)>=1e-6) { pi=pi+term; 求绝对值的函数 n=n+2; sign=-sign; term=sign/n; } 只保证前5位小数是准确的 pi=pi*4; printf("pi=%10.8f\n",pi); }
(教材P98 例 4.24 )
(教材P101 例 4.27 )
23
ቤተ መጻሕፍቲ ባይዱ题思路:
求 近似值的方法很多,本题是一种
其他方法:
1 1 1 1 2 2 2 2 6 1 2 3 n 2 2 4 4 66 (n 1)2 2 1 3 3 5 5 7 n (n 2)
} printf("\n");
}
遇到第3行第1列, 终止内循环
21
#include <stdio.h> void main() { 3int i,j,n=0; 原来第 行第 1个 for (i=1;i<=4;i++) 数据3没有输出 for (j=1;j<=5;j++,n++) { if (n%5==0) printf (“\n”);
C语言程序设计(while 循环结构)
sum+=grade; num++; scanf("%lf",&grade); } if (num) printf(“\n%d 人的平均成绩:%.1f”,num,sum/num);/*输出结果*/ else printf(“\n 平均成绩为 0!”);
int num=0; /*用 num 统计输入成绩的学生人数,以便统计学生的平均分数*/ double sum=0, grade; /*用 sum 记录成绩的累加和,初值为 0,grade 接受键盘输入的成绩*/
printf(“请依次输入学生的考试成绩,空格间隔,并以负数结束输入\n”); scanf(“%lf”,&grade);
return 0; }
注意: (1)while 语句中的表达式一般是关系表达或逻辑表达式,但原则上可以是任何合法的 表达式; (2)循环条件的选择应该避免死循环,即无法结束循环体的执行;表达式的值每次循 环后都应该有所改变,否则也会引起死循环。
假 表式?
真 语句
循环体外语句 图 3-7 while 循环结构的执行过程
【例 3-11】 从键盘输入若干名学生的成绩,计算平均分。 分析:这是一个累加求和的问题,将输入的成绩依次累加(用循环结构实现,循环条件 是成绩 grade>=0),完成累加后再将累加和除以学生的人数,算出平均分。
/*程序名:3_11.c*/ /*功能:键盘输入若干学生的成绩,计算平均成绩并输出*/ #include <stdio.h> int main() {
1.while 循环结构
while 循环结构的一般形式为: while(表达式) 语句;
循环结构程序设计练习题内含答案
第三单元循环结构练习题选择题:1、有以下程序执行后的输出结果是( D )。
main( ){ int i,s=0; for(i=1;i<10;i+=2)s+=i+1;printf("%d\n",s);}A.自然数 1~9的累加和B.自然数 1~10 的累加和C.自然数 1~9中的奇数之和D.自然数 1~10 中的偶数之和2、以下关于 for 语句的说法不正确的是( A )。
A. for循环只能用于循环次数已经确定的情况B. for循环是先判断表达式,后执行循环体语句C. for循环中,可以用 break 跳出循环体D. for循环体语句中,可以保含多条语句,但要用花括号括起来3、若 i和 k 都是 int 类型变量,有以下 for语句for(i=0,k=-1;k=1;k++) printf("*****\n");下面关于语句执行情况的叙述中正确的是(d)。
A. 循环体执行两次B.循环体执行一次C.循环体一次也不执行D. 构成无限循环4、以下程序程序的执行后的输出结果是(c)。
main(){int i,t[][3]={9,8,7,6,5,4,3,2,1};for(i=0;i<3;i++) printf(“%d”,t[2 -i][i]);}A.753B.357C.369D.7515、以下程序运行后的输出结果是( A )。
void fun(char*s){ while(*s){ if(*s%2==0)printf(“%c”,*s);s++;}}main(){ char a[]={“good”};fun( a) ;printf(“ n”);}注意:字母 a 的 ASCⅡ码值为 97A.dB.goC.godD.good6、已知 int t=0 ; while ( t=1 ){...}则以下叙述正确的是( B)。
A)循环控制表达式的值为 0B)循环控制表达式的值为 1C)循环控制表达式不合法D)以上说法都不对7、设有以下程序段 Bint x=0,s=0;while (!x!=0 ) s+=++x;printf ( "%d",s );则A)运行程序段后输出0B)运行程序段后输出 1C)程序段中的控制表达式是非法的D)程序段执行无限次8、设 i ,j ,k 均为 int型变量,则执行完下面的 for 语句后, k 的值为( C)。
实验3、循环结构程序设计(有答案)
循环结构程序设计1.程序填空下面程序的功能为:计算1~100之间的偶数之和,完成以下的程序并运行出正确的结果。
# include <stdio.h>void main(){int i,s=0;/**************found*************/i=2 ;while(i<=100){s=s+i;/**************found**************/i+=2 ;}printf(“s=%d”,s);}运行结果:S=25502.程序改错(1) 下面程序的功能为:计算10!,修改以下的程序并上机运行通过。
#include <stdio.h>void main(){int n,t;for(n=1,t=1,t<10,t++);n=n*t;printf(“10!=%d\n”,n);}正确的程序:#include <stdio.h>void main(){int n,t;for(n=1,t=1;t<=10;t++) //句尾不能有“;”n=n*t;printf(“10!=%d\n”,n);}运行结果:10!=3628800(2) 下面程序的功能为:计算1~100之间能被3和7整除的数之和,修改以下的程序并上机运行通过。
#include <stdio.h>void main(){int i,s;s=0;while(i<=100);{if(i%3==0||i%7==0)s+=i;i=i+1;}printf(“s=%d”,s);}正确的程序:#include <stdio.h>void main(){int i,s;s=0; i=1;while(i<=100) //句尾不能有“;”{if(i%3==0&&i%7==0)s+=i;i=i+1;}printf(“s=%d”,s);}运行结果:S=2103、有一个分数序列:2/1、3/2、5/3、8/5、13/8、……,编写一个C程序,求出这个数列的前30项之和。
循环结构程序设计作业
1.(英里与千米的互换)编写一个程序,并排显示下列连个表格。
(1英里为1.609千米)
英里千米千米英里
1 1.609 20 12.430
2 3.218 25 15.538
…
9 14.481 60 37.290
10 16.090 65 40.398
2.(显示金字塔)编写程序,提示用户输入一个在1到15之间的整数,然后显示一个金字塔形状的图案。
运行示例如下所示:
Enter the number of lines:4 enter↙
1
2 1 2
3 2 1 2 3
4 3 2 1 2 3 4
3.(显示闰年)编写程序,显示21世纪(2001年-2100年)中所有的闰年,每行显示10个。
4.(数列求和)编写程序,计算下列数列的和:
1/3+3/5+5/7+7/9+……+97/99
5.(最大数的出现次数)编写程序读取整数,找出它们的最大数,并统计该数出现的次数。
假设输入是以0结束的。
例如,假如输入的是3 5 2 5 5 5 0,程序找出的最大数是5,而5出现的次数是4。
运行示例如下:
Enter numbers:3 5 2 5 5 5 0 enter↙
The largest number is 5
The occurrence count of the largest number is 4。
python循环结构例题
python循环结构例题下面是一些Python循环结构的例题,用于训练学生对循环控制结构的理解和应用。
题目1:计算1到100的累加和。
要求:使用循环结构实现。
```pythonsum = 0for i in range(1, 101):sum += iprint(sum)```题目2:求100以内的所有偶数之和。
要求:使用while循环实现。
```pythonsum = 0i=0while i <= 100:if i % 2 == 0:sum += iprint(sum)```题目3:求1000以内所有能被3和5整除的数字之和。
要求:使用for循环实现。
```pythonsum = 0for i in range(1, 1001):if i % 3 == 0 and i % 5 == 0:sum += iprint(sum)```题目4:判断一个数是否为素数。
要求:使用循环结构实现。
```pythonnum = int(input("请输入一个正整数:"))is_prime = Trueif num <= 1:is_prime = Falsefor i in range(2, num):if num % i == 0:is_prime = Falsebreakif is_prime:print(num, "是素数")else:print(num, "不是素数")```题目5:打印九九乘法表。
要求:使用双重循环实现。
```pythonfor i in range(1, 10):for j in range(1, i + 1):print("%d*%d=%d" % (j, i, j * i), end="\t") print```题目6:用嵌套循环输出直角三角形。
```pythonfor i in range(1, 6):for j in range(1, i + 1):print("*", end="")print```题目7:用嵌套循环输出等腰三角形。
循环结构程序设计习题及答案
第6章循环结构程序设计6-1.比较while语句、do–while语句和for语句的异同。
答:(1)while语句、do-while语句用于条件循环,for语句用于计数循环。
(2)while语句、for语句是先判断循环条件,后执行循环体,如果循环条件一开始就不成立,则循环体一次也不被执行;而do-while语句是是先执行循环体,后判断循环条件,所以循环体至少被执行一次。
(3)知道循环的次数可选用for语句实现循环,不知道循环的次数可选用while语句或do-while语句实现循环.(4)一般而言,三种循环语句可等价实现.6-2 仔细阅读下面的程序,指出程序的运行结果.#include<>void main(){ int i;for(i=0;++i;i<5){ if(i==3){printf("%d\n",++i);break;}printf("%d\n",++i);}}答:24思考:语句“for(“i=0;++i;i<5”)在编译时为何会给出语法警告错误当将其改为“for(i=0;i<5;++i)”时,运行结果又将如何6-3 仔细阅读下面的语的程序,指出程序的运行结果。
#include""void main(){ int i, a=0;for(i=1;i<=5;i++){do{i++;a++;} while(i<3);}i++;printf("a=%d,i=%d",a,i);}答:a=3,i=7思考:在for循环中嵌套着do-while循环,那么do-while循环中对i的修改会对for循环产生影响吗6-4编写程序,用1000个单词”computer”填充屏幕,每行60个.解:#include<>void main(){ int i;for(i=1;i<=1000;i++){ printf("computer.");if(i%60==0)printf("\n");}}思考:在for循环中,”if(i%60==0)printf(“\n”);”语句的作用是什么没有此语句将会是什么状况6-5输入一行字符(以$结束),统计其中的数字字符、空格字符出现的次数。
C语言各章节单元测试题及答案——循环结构程序设计
第3章循环结构程序设计3.1 典型考试题剖析3.1.1 选择题【例1】若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c 均已赋值(c大于0)s=a;for(b=1;b<=c;b++) s=s+1;则与上述程序段功能等价的赋值语句是_______。
A)s=a+b; B)s=a+c; C)s=s+c; D)s=b+c;✧考点:本例考查for循环。
✧分析:初始赋值时s=a,那么s的值一定与a有关,C、D答案中不含a所以排除掉。
只用清楚for循环的次数,不管b以前的值为多少,第一次循环时b=1,当b>c时循环结束,那么显然s要加c次1。
所以s的值为a与c的和。
✧答案:B【例2】设x和y均为int型变量,则执行下面的循环后,y值为。
for(y=1,x=1;y<=50;y++){if(x>=10) break;if(x%2==1){x+=5;continue;}x-=3;}A) 2 B) 4 C) 6 D) 8✧考点:本例考查for循环中break和continue的用法,以及区别。
✧分析:break用在循环中,只能退出一层循环。
尤其是在嵌套循环中,只能退出它所在的那一层循环。
不能期望用break从最内层循环一下子退出最外层循环(可以用goto实现)。
continue语句只能用在循环中,它的作用是跳过其后面的语句,直接将控制转移到下一轮循环条件的测试。
语句“if(x>=10) break;”中的break只有当x>=10时,才会执行,并且跳出for循环;语句“x+=5;continue;”是每次执行完一次跳过其后面的语句,直接将控制转移到下一轮循环条件的测试for(y=1,x=1;y<=50;y++)中。
✧答案:C【例3】以下程序中,while循环的循环次数是_______。
main(){ int i=0;while(i<10){ if(i<1) continue;if(i==5) break;i++;}......}A) 1 B) 10 C) 6 D) 死循环,不能确定次数✧考点:本例考查while循环的用法,以及continue和break的分别。
C语言全国试题(五-循环结构程序设计)
A) f=0; for (i=1; i<=n; i++) f*=i; B) f=1; for (i=1; i<n; i++) f*=i; C) f=1; for (i=n; i>1; i++) f*=i; D) f=1; for (i=n; i>=2; i--) f*=i;
printf("\n"); } }
A) 2 3 4 B) 4 3 2
C) 2 3 D) 4 5
345
543
34
34
45
23
填空题(全国二级C 2008Q2-8)
1 执行下述程序的输出结果是___________。
#include <stdio.h> main( ) { int i,j,sum;
for(i=3; i>=1; i--) { sum=0;
。
#include <stdio.h>
main( )
{ int i;
for ( i=1 ; i<=40; i++)
{ if (i++%5==0)
if (++i%8==0)printf("%d ",i); }
printf("\n"); }
A) 5
B) 24
C) 32
D) 40
选择题(全国二级C 2005Q1-27)
选择题(全国二级C 2003Q1-22)
若有如下程序段,其中s,a,b,c 均已定义为整型变量,且a,c均已赋值 (c大于0)。
s=a; for(b=1;b<=c;b++) s=s+1; 则与上述程序段功能等价的赋值语句
循环结构程序设计练习题 内含问题详解
第三单元循环结构练习题选择题:1、有以下程序执行后的输出结果是( D )。
main( ){ int i,s=0;for(i=1;i<10;i+=2) s+=i+1;printf("%d\n",s);}A.自然数1~9的累加和 B.自然数1~10的累加和C.自然数1~9中的奇数之和 D.自然数1~10中的偶数之和2、以下关于for语句的说法不正确的是( A )。
A. for循环只能用于循环次数已经确定的情况B. for循环是先判断表达式,后执行循环体语句C. for循环中,可以用break跳出循环体D. for循环体语句中,可以保含多条语句,但要用花括号括起来3、若i和k都是int类型变量,有以下for语句for(i=0,k=-1;k=1;k++) printf("*****\n");下面关于语句执行情况的叙述中正确的是( d )。
A.循环体执行两次B.循环体执行一次C.循环体一次也不执行D.构成无限循环4、以下程序程序的执行后的输出结果是( c )。
main(){int i,t[][3]={9,8,7,6,5,4,3,2,1};for(i=0;i<3;i++) printf(“%d”,t[2-i][i]);}A.7 5 3B. 3 5 7C.3 6 9D.7 5 15、以下程序运行后的输出结果是( A )。
void fun(char*s){ while(*s){ if(*s%2==0) printf(“%c”,*s); s++;}}main(){ char a[]={“good”};fun(a);printf(“\n”);}注意:字母a的ASCⅡ码值为97A.dB.goC.godD.good6、已知 int t=0; while(t=1){...} 则以下叙述正确的是( B )。
A)循环控制表达式的值为0B)循环控制表达式的值为1C)循环控制表达式不合法D)以上说法都不对7、设有以下程序段 Bint x=0,s=0;while(!x!=0)s+=++x;printf("%d",s); 则A)运行程序段后输出0B)运行程序段后输出1C)程序段中的控制表达式是非法的D)程序段执行无限次8、设i,j,k均为int型变量,则执行完下面的for语句后,k的值为( C )。
C语言程序设计习题集第4章 循环结构(答案)
第4章循环结构一、选择题1、有以下程序段int k=0;while(k=1)k++;while 循环执行的次数是( A)A) 无限次B) 有语法错,不能执行C) 一次也不执行D) 执行1次2、t为int类型,进入下面的循环之前,t的值为0while( t=1){ …… }则以下叙述中正确的是( B)A) 循环控制表达式的值为0B) 循环控制表达式的值为1C) 循环控制表达式不合法D) 以上说法都不对3、在C程序中,与while(m)中表达式m完全等价的是(B )A) m==0 B) m!=0 C) m==1 D) m!=14、有以下程序,程序运行后的输出结果是(C )。
main(){int i=1,sum=0;while(i<=4){sum=sum+i;i=i+1;}printf(“%d\n”,sum);}A)4 B)5 C)10 D)死循环5、有以下程序,程序运行后的输出结果是(D )。
main(){ int i=1,sum=0;while(i<=4)sum=sum+i;i=i+1;printf(“%d\n”,sum);}A)4 B)5 C)10 D)死循环6、有如下程序main(){int n=9;while(n>6){n--;printf(“%d”,n);}}该程序段的输出结果是(B)A) 987 B) 876 C) 8765 D) 98767、以下程序的输出结果是( B )main(){ int num= 0;while(num<=2){ num++; printf(“%d\n”,num);}}A) 1 B) 1 C)1 D) l2 2 23 348、有以下程序,若运行时输入3.6 2.4<回车>,则输出的结果是( B)。
main(){float x,y,z;scanf(“%f%f”,&x,&y);z=x/y;while(1){if(fabs(z)>1.0){x=y;y=z;z=x/y;}elsebreak;}printf(“%f\n”,y);}A)1.500000 B)1.600000 C)2.000000 D)2.4000009、执行以下程序段时x=-1;do{ x=x*x; }while(! x);则下面描述正确的是(A )A) 循环体将执行一次B) 循环体将执行两次C) 循环体将执行无限次D) 系统将提示有语法错误10、有以下程序段其输出结果是(C )int x=3;do{ printf("%d",x-=2); }while (!(--x));A) 1 B) 3 0 C) 1 -2D) 死循环11、有如下程序main(){int x=23;do{printf(“%d”,x);x--;}while(!x);}该程序的执行结果是(B )A) 321 B) 23 C) 不输出任何内容D) 陷入死循环12、有以下程序段int n=0,p;do{scanf(“%d”,&p);n++;}while(p!=12345 &&n<3);此处do—while循环的结束条件是( D)A) P的值不等于12345并且n的值小于3B) P的值等于12345并且n的值大于等于3C) P的值不等于12345或者n的值小于3D) P的值等于12345或者n的值大于等于313、以下不构成无限循环的语句或语句组是(A)A) n=0;do {++n;}while(n<0);B) n=0;while(1){n++;}C) n=10;while(n);{n--;}D) for(n=0,i=1; ;i++)n+=i;14、若i为整型变量,则以下循环执行的次数是(B)for(i=2;i= =0;) printf(“%d”,i--);A)无限次B)0次C)1次D)2次15、执行语句for(i=1;i++<4;)后,变量i的值是(C)A) 3 B) 4 C) 5 D) 不定16、有以下程序main(){int y=9 ;for( ; y>0 ; y--)if(y%3==0 ) printf("%d" , --y) ;}程序的运行结果是(C)A) 741 B)963 C)852 D)87542117、以下程序执行后sum的值是( C)A)15 B)14 C) 不确定D)0main(){ int i , sum;for(i=1;i<6;i++) sum+=i;printf(“%d\n”,sum);}18、有如下程序{ int i,sum=0;for(i=1;i<=3;sum++) sum+=i;printf(“%d\n”,sum);}该程序的执行结果是(C)A) 6 B) 3 C) 死循环D) 019、执行语句for(i=3;i>0;i--);i--;后,变量i的值是(C )A)0 B)10 C)-1 D)120、执行下面程序片段的结果是(A )。
顺序结构、选择结构和循环结构的程序设计典型例题分析与解答
顺序结构、选择结构和循环结构的程序设计典型例题分析与解答1 在三种选择结构中,能用2个条件,控制从3个操作中选择一个操作执行的选择结构是______选择结构【分析】能用1个条件,控制某个操作做或不做的选择结构是单分支结构;能用1个条件,控制从2个操作中选择一个操作执行的选择结构是双分支结构;能用n(n>l)个条件,控制从n+ l个操作中选择一个操作执行的选择结构是多分支结构。
【答案】多分支2 在三种循环结构中,先执行循环操作内容(即循环体),后判断控制循环条件的循环结构是______循环结构。
【分析】当型循环结构是先判断控制循环的条件,条件成立,执行循环体;条件不成立,则退出循环体。
次数型循环结构也是先判断是否达到循环次数,没有达到循环次数,执行循环体;达到循环次数的,退出循环。
只有直到型循环结构才是先执行循环体,然后再判断控制循环的条件,如果条件成立,进行循环;条件不成立,退出循环。
【答案】直到型3 使用“getchar( )”函数时,程序的开头必须写一条包含命令为____________。
【分析】凡是使用系统函数的程序,都要在程序的开头写一条包含命令,包含命令中的“头函数.h”是一个文件,其中有关于该系统函数的定义。
系统函数“getchar( )”是在名为“stdio.h(标准输入输出函数)”的头函数文件中定义的。
【答案】#include"stdio.h"或#include<stdio.h>4 执行输入语句“scanf("x=%c,y=%d",&x,&y);”,要使字符型变量X的值为'A'、整型变量y的值为12,则从键盘上正确的输入是( )①'A'/②A/③x=A/ ④x=A,y=12/12/ 12/ y=12/ 说明:备选答案中的"/"表示回车换行键【分析】输入语句的格式控制符串中的“x=”、“,”、“y=”都是非格式控制符,在输入时必须原样位置输人,所以只有备选答案④才符合这个要求。
while循环结构例题
引子#include "stdio.h"main(){ int i=1;for(i=1;i<=10000;i++)printf(“%d\t”,i);}题型1 输入输出多个数据eg1、输出1~10000之间所有的整数#include "stdio.h"main(){ int i=1;while(i<=1000){printf(“%d\t”,i);i++;}}拓展:1、换成所有的奇数2、换成所有的偶数题型2 有限个数连加和连乘eg2.1、求1+2+3+4+………+100的值#include "stdio.h"main(){ int i=1,s=0;while(i<=100){s=s+i;i++;}printf(“%d\n”,s);}拓展:1、求1+2+3+4+………+n的值2、求12+22+32+………+n2的值3、求1+1/2+1/3+………+1/n的值eg2.2、求n!的值#include "stdio.h"main(){ int i=1,n,p=1;scanf(“%d”,&n);while(i<=n){p=p*i;i++;}printf(“%d\n”,p);}拓展:求1!+2!+3!+………+n!的值#include "stdio.h"main(){ int i=1,n,p=1,s;scanf(“%d”,&n);while(i<=n){p=p*i;s=s+p;i++;}printf(“%d\n”,s);}题型3 无限个数连加eg3、求1-1/3+1/5-1/7+………的近似值,要求精度要达到10-4#include "stdio.h"#include "math.h"main(){ float n=1,s=0,f=1,t=1;while(fabs(t)>=1e-4){t=f/(2*n-1);s=s+t;f=-f;n++;}printf(“%f\n”,s);}拓展:求1-1/2+1/4-1/6+………的近似值,要求精度要达到10-4题型4 统计eg4.1、输入20个数,统计其中正数、负数和零的个数。
循环结构程序设计练习题
循环结构程序设计练习题1、运行以下语句后,A的值为______。
Dim A As IntegerA=1Do Until A=100 A) 99 B) 100A=A+2 C) 溢出D) 101Loop2、以下程序运行结果是()。
S=0For H=1 T o 10 A)15 B)25If Int(H/2)<>H/2 Then C)35D)45S=S+HEnd IfNext HPrint S3、在窗体上画一个command1的命令按钮,然后编写如下事件过程:X = 0N = Inputbox("")For I = 1 T o NFor J = 1 T o IX = X + 1Next JNext IPrint X程序运行后单击命令按钮,如果输入3,则在窗体上显示的内容是( )A) 3 B) 4C) 5 D) 64、设有以下循环结构Do循环体Loop While <条件>则以下叙述中错误的是( )A)"条件"是一个为0的常数,则一次也不执行循环体B)"条件"可以是关系表达式、逻辑表达式或常数C)循环体中可以使用exit Do语句D)如果"条件"总是为true,则不停地执行循环体5、下面程序的循环次数是()For J=8 T o 35 Step 3Print J A)7B)8Next J C)9D)106、对正实数x 的第四位小数四舍五入的vb表达式是()。
A) 0.001*Int(X+0.005) B ) 0.001*(1000*X+0.5)C) 0.001*Int(1000*X+5) D) 0.001*Int(1000*(X+0.0005))7、下面程序运行后在文本框中的结果是()For K=1 T o 3For M=1 T o K A)12B)14For N=M T o 3 C)18D)24X=X+1Next N,M,KT ext1.T ext=X8、下面程序运行后的输出结果是()For H=1 T o 13 Step 2H=H+1 :Print H;A)2 4 6 8 10 12B)1 3 5 7 9 11 13 Next H C)2 5 8 D)2 5 8 11 14 9、下面程序的作用是什么()M=0:N=0For H=1 T o 10X=Val(Inputbox(“请输入数据”,””,0))If X<0 ThenM=M+XElseif X>0 ThenN=N+1End IfNext HPrint M,NA)计算从键盘上输入的数据之和,并统计输入数据的数目B) 分别计算从键盘上输入的正数之和与负数之和C) 分别统计从键盘上输入的正数和负数的数目D) 计算从键盘上输入的负数之和,并统计正数的数目10、下列关于for循环的叙述中,正确的是()A) 循环体至少被执行一次B) 循环体有可能不被执行C) 步长不允许是小数D) 循环初值等于终值时循环体不被执行11、下列程序的输出结果是哪一个()Do While X<20X=X+1:X=X*X A)36B)25Loop C)16 D)12Print X12、下面程序的运行结果是()A=1:B=1DoA=A+1:B=B+1Loop Until B>5Print "K=";A;Spc(3);"B=",B+AA)K=7 B=14B)K=5 B=10C)K=6 B=6 D)K=6 B=1213、下面语句组中,不能实现20次循环的有()A) N=0 B) N=0Do DoN=N+1 N=N+1Loop Until N>=20Loop Until N<20C) N=0 D) N=0Do Do Whle N <20N=N+1 N=N+1Loop While N<20 Loop14、下面程序能计算1+(1+2)+(1+2+3)+…+(1+2+3…+9)的是()A) S=0 B) S=0:T=0For H=1 T o 9 For H=1 T o 9S=S+1 S=S+TNext H Next HC) S=0 D) S=0For H=1 T o 9 For H=1 T o 9T=0 For J=1 T o HFor J=1 T o H T=T+HT=T+J Next JNext J S=S+TS=S+T Next HNext H15、下面程序的运行结果是()Dim X(1 T o 10)As IntegerMax=1e-30For H=1 T o 10X(H)=HIf X(H)>=Max Then Max=X(H)1Next HErase XPrint “Max=”;Max;“X(10)=”;X(10)A) Max=10 X(10)=10B)Max=10 X(10)=0C) Max=0 X(10)=10 D)Max=0 X(10)=016、阅读以下程序,执行该程序后,数组a和数组b的值是()Dim A(50),B(50)For N=1 T o 50:A(N)=N:Next NFor N=1 T o 50B(N)=A(N)+A(N-1)Print B(N);Next NA) 数组a和数组b各存储1~50的自然数B) 数组a存储1~50的自然数,数组b存储1~99的自然数C) 数组a存储1~50的自然数,数组b存储1~99的奇数D) 数组a存储1~50的自然数,数组b存储2~100的偶数17、运行下面程序后的输出结果是()For H=1 T o 4 A) 1 2 3 4Print H;B) 1 2 3 4 5Next H C) 1 2 3 4 4Print H D) 1;2;3;4;518、判断下面程序是计算哪一个数学式子的()N=Val(Inputbox(“请输入n的值”)T=1:S=0For H=1 T o 2*N+1 Step 2T=T*H:S=S+TNext HPrint SA) 1+3+5+…+2n+1B) 1*3*5*…*(2n+1)C) 1!+3!+5!+…+(2n+1)! D) 1+1*3+1*3*5+…+1*3*..*(2n+1)19、运行以下程序后,显示的结果是()Dim D(6,6)For H=1 T o 6For J=1 T o 6D(H,J)=6*H*H*JNext J,HFor H=1 T o 6Print D(H,H);Next HA) 1 2 3 4 5 6 B) 1 4 9 16 25 36C) 6 48 162 384 750 1296D) 1 2 3 4 5 62 4 6 8 10 123 6 9 12 15 184 8 12 16 20 2420、运行以下程序后,显示的结果是()Dim N(5) As IntegerN(0)=2For H=2 T o 5 A)1 2 3 4 5N(H)=N(H-2)*H*H B)1 2 6 24 120Print N(H);C)8 0 128 0Next I D)2 4 12 48 24 21、当x的值分别为5,9,8,2,-999时,下面程序运行后的结果是()B=0X= Val(Inputbox(“请输入一个数”))Do While X<>-999 And D<>2If X>B Then B=XX= Val(Inputbox(“请输入一个数”))LoopPrint B A)9 B)8 C)2 D)-99922、有如下事件过程,其运行结果是()For I=1 T o 4Print T ab(2*I+1);11*I;Next IA) 11 22 33 44 B)11 C) 11 D) 1122 22 2233 33 3344 44 4423、有如下事件过程,其运行结果是()Private Sub Form_Click()A=0For h=1 T o 10A=A+1B=0For J=1 T o 10 A) 10 20 B) 20 110A=A+1 C) 110 20 D) 200 110B=B+2Next J,hPrint A;BEnd Sub24、有如下事件过程,程序运行三次当N分别为2、4、6时,其第二次的结果是()Private Sub Form_Click()N= Val(Inputbox(“请输入一个数”))For h=1 T o NJ=1J=J*hNext hPrint h,JEnd SubA) 5 24 B) 4 24 C) 5 4 D) 4 425、有如下事件过程,其运行结果是()Private Sub Form _Click()For I=0 T o List1.Listcount-1If I Mod 2=0 ThenPrint List1.List(I)End IfNextEnd SubPrivate Sub Form _Load()List1.Additem “中国”List1.Additem “日本”A)中国韩国B) 日本新加坡List1.Additem “韩国”C) 中国韩国香港List1.Additem “新加坡”D) 中国日本韩国新加坡香港List1.Additem “香港”End Sub二、填空题1、下面语句循环的次数是(7 )For X=-0.5 T o -3.5 Step -0.52、运行下面程序后,显示结果是(225 )Dim A(15)For H=1 T o 15A(H)=H^2Next HPrint A(H-1)3、下面程序运行后的输出结果是(160 )For J=1 T o 202If J Mod 5<>0 Then A=A+JNext JPrint A4、以下程序是找出50以内的所有能构成直角三角形的整数组,请补充完整该程序.For A=1 T o 50For B=A T o 50C=Sqr(A*A+B*B)If ()Then Print A;B;CNext BNext A5、下面程序运行后文本框中的输出结果是()K=1For J=1 T o 6K=K*JNext JT ext1.T ext=K+J6、以下程序是计算(1+1/2)*(1+1/3)*…*(1+1/10),阅读该程序,请将程序补充完整S=1()S=()Next YPrint S7、以下程序是用随机数模拟掷,统计掷50次出现的个点数的次数。
第五章-循环结构程序设计编程题(参考答案)
第五章循环结构程序设计1.用for循环语句编程输出1~20之间的所有整数,两数之间以空格分隔。
#include<stdio.h>void main(){int i;for(i=1;i<=20;i++)printf("%d ",i);printf("\n");}2.用for循环语句编程输出20~1之间的所有整数,两数之间以空格分隔。
#include<stdio.h>void main(){int i;for(i=20;i>=1;i--)printf("%d ",i);printf("\n");}3.用for循环语句编程输出A~Z之间的所有字符,两字母之间以空格分隔,要求一行输出8个字符。
#include<stdio.h>void main(){char c;for(c='A';c<='A'+25;c++){putchar(c);}}4.输出100~200之间所有能被3和7整除的数(每行输出4个数)。
#include<stdio.h>void main(){int i,j=0;for(i=100;i<=200;i++){if(i%21==0){ j++;printf("%12d",i);if(j%4==0) printf("\n");}}}5.输出1至1000之间所有满足用3除余2、用5除余3、用7除余2的数(要求每行只输出5个数)。
#include<stdio.h>void main(){for(i=1;i<=1000;i++){if((i%3==2)&&(i%5==3)&&(i%7==2)){ j++;printf("%12d",i);if(j%5==0) printf("\n");}}}6.先读入一个正整数n,然后计算并显示前n个偶数的和。
循环结构(50题) - 副本
固定循环1.画出打印前10个偶数乘积的流程图2.画出流程图:接受50个数,还显示奇数和偶数的总个数3.画出显示键入的任何10个数中最大者的流程图4.绘制流程图以生成前10奇数,并显示这些数值的平均值?5.绘制流程图以显示前100个自然数的平方根6.绘制流程图生成Fibonacci数列。
前两个数应是0和1,最后一个数应是89。
提示:Fibonacci数列的数为:01 1 2 3 5 8 13 21 34 55 89。
除了前两个数0和1,数列中的每个数是前两个数之和。
7.办公室电话都有两个分机,分机号为1和2。
在任何时间点,只有一个分机忙。
以下给出的序列显示了分机1和分机2接收来电的顺序。
1、1、1、1、2、2、2、1、2、1、2、1、2、2、2、1、2具体某一天接收来电的总数为200。
绘制流程图以显示分机1和分机2接收来电的总数。
8.对以下情形绘制流程图:接受的100本书包括了书数、书名、书类和销售价。
显示以下详细信息:序列号No书数BookNo书名BookName销售价NetPrice类别Cat折扣SP净价(净价=销售价-折扣)Discount根据书的类别给出书的折扣,如下表所示:9.一个班级有20名学生。
每个学生参加5个测验。
每测验满分为100分。
计算并显示每个学生的平均分。
提示:创建模块计算平均得分。
10.求100~150之间和400~500之间能被9整除的数,将结果输出到屏幕上11.任意输入10个数,对这10个数按从小到大排列显示。
画出流程图12.已知XYZ+YZZ=532,其中X,Y,Z为0~9的数字,求出X,Y,Z,且显示出来。
画出流程图13.设有计算阶乘的函数f(n)=n!,试设计一个计算阶乘的方法和相应的类,并利用这个类计算f(5)和f(17)的值!画出流程图14.从键盘逐个输入字符,直到输入‘!’时结束,输出字符的个数(不包括‘!’)。
15.输出所有在正整数200和300之间能被6整除、但不能被4整除的数。
C语言循环结构程序设计习题与答案
一、单选题1、计算1!+2!+3!+4!+5!编程如下,程序中下划线处应填写#include <stdio.h>void main(){int i;int t= z s=;for(i=l;i<6;i++){t=t*i;s=s+t;)printf("l!+2!+3!+4!+5!=%d\n"z s);)A.l 1B.O 0C.O 1D.l 0正确答案:D2、下面代码段的输出是一int k,m;for(k=0;k<10;k++ ){if(m>50) continue;m=k*k;)printf("%d,%d\n”,k,m);A. 10,64B.9,81C.10,81D.8,64正确答案:A3、对于以下代码:int i;for(i=0;i<10;i++)pnntf("%d",i);for循环结束后,i的值是—A.llB.10C.9D.i不再存在了正确答案:B4、对于以下代码:int i=6;do{printf("%d", i-);}while(i-);正确的是—A,输出6420-2-4…,程序无法停机B,输出6420C.输出6420-2D输出642正确答案:A5、对于以下代码:int i=6;do{printf("%d", i-);}while(i);最后一个输出的值是—A.2B.3C.OD.l正确答案:D6、在代码:while(e)中,e等价于_A.e == 0B.e != 1C.e == 1D.e!=0正确答案:D7、在代码:while© |1)中,e等价于_A.e!=0B.e == 1C.e取任何值D.e == 0正确答案:C8、设有程序段int k=5;while(k=0) k=k-l;则下面描述中正确的是A,循环体语句一次也不执行B.while循环执行5次C.循环体语句执彳亍一次D彳盾环是无限循环正确答案:A9、下面程序段的运行结果是int n=0;while(n++<=2);printf("%d",n);A.有语法错B.2C.4D.3正确答案:C10、若有如下语句int x=3;do{ printf("%d\n"z x -=2);} while(!(-x));则上面程序段—A,是死循环B,输出的是1C.输出的是3和0D,输出的是1和・2正确答案:D11、下面程序的功能是计算正整数2345的各位数字平方和,请选择填空,答案是#includemain()int n,sum=0;n=2345;sum=sum+(n%10)*(n%10);n=_;}while(n);printf("sum=%d"/sum);}A.n/10B.n%10C.n/100D.n/1000正确答案:A12、下面程序段—for(t=l;t< = 100;t++){scanf("%d",&x);if(x<0) continue;printf("%3d",t);)A.最多允许输出100个非负整数B.x>=0时什么也不输出C.printf函数永远也不执行D・当x<0时整个循环结束正确答案:A13、下列运算符中结合方向与其他不同的是A.+=B.< =c.>D.+正确答案:A14、下列运算符中结合方向与其他不同的是A.&&B.?:c.||D.+正确答案:B15、以下代码输出结果是—int x=0,y=20,z=30 ;if ( x||(y=50)>z ) printf("y=%d"z y); else printf("y=%d",y);A.代码错误,不能输出B.y=50C.y=20D,不确定正确答案:B16、以下代码输出结果是—int x=0z y=20,z=30if ( x||(y=50)>z ) printf("y=%d"z y); else printf("y=%d",y);A.y=20B.代码错误,不能执行C.y=50D,不确定正确答案:B17、下列程序段的输出结果是一int a=3,b=15;a+=b;b=b/2;}while(b>l);printf("%d\rT,a);正确答案:28二、多选题1、在c语言中,叙述正确的是()。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
特别注意此题中变量不能定义成
此题可做改进,在循环时确保
for(a=1;a<=99;a++)
for(b=1;b<=99;b++)
for(c=1;c<=99;c++)
if(a>b&&b>c&&a+b+c<100
&&c*c* (a*a+b*b)==a*a*b*b)
n++;
例6:e=1+1/1!+1/2!+….+1/n!(精度为1e-6)
分析:用变量a从1至U sqrt( 2698)-1循环。变量s初值为6000。若2698%a==0,则b=2698/a,若s>a+b,则s=a+b,并保存b的值在变量t.
mai n()
{int a,b,s=6000,t;
for( a=1;a<sqrt(2698);a++)
{if(2698%a==0)
for(a=n; a<=m;a++)
if(a%3==0)
{ x=a;
while(x>0)
{i=x%10;
if(i==5){printf (“%ld”,a);break;}
x=x/10;
}
}
}
问:能把
例
算法分析:
1.
2.
3.若a%i==0,结束i的循环,执行第4步
4.若i==a,把a累加到s上。
5.
注意:此题中执行第
float s=0;
for(n=1; n<=30 ;n++)
{ s=s+(float)i/j;
c=i;
i=j+1; j=c+j;
}
printf( "n%f”,s);
}
此题中的n与循环体中的执行语句没有数值上的联系,仅仅用做决定循环执行的次数。
例2:下面这个程序,想想它实现的是什么功能?
#in clude<stdio.h>
i
程序:
#in clude<stdio.h>
mai n()
{ int a,s=0,i;
for(a=3;a<=150;a++)
{for(i=2;i<=a-1;i++)
if(a%i==O) break;
if(a==i) s=s+a;
}
printf( n“d' ,s)
}
求素数的方法很多,大同小异。此题可以做一些改动。如:i的值可以是从2取到sqrt(a);
{ float x=2. 5,x0,f,f2;
do{ x0=x;
f=2*x0*x0*x0-4*x0*x0+3*x0-7;
f2=6*x0*x0-8*x0+3;
x=x0-f/f2;
}while(fabs(x-x0)>=10e-6);
printf(f %f” ,x);
}
例
分析:用变量
mai n()
{int a,s=0,I=0, j;
项的分子加分母。解题思路是用循环语句求各项,并把值累加,因为是求前30项的和,循
环执行30次。
1.初值i=2,j=3,s=0;
2.用n从1到30循环
3.s=s+ i/j;
4.c=i; i=j+1; j=c+j;
5输出s;
程序:
#in clude<stdio.h>
mai n() {int i=2,j=3, n,c;
for( a=10;a<=200;a++)
{c=0;
for(I=1;I<=a;I++)
if( a%I==0) c++;
if(a%c==0) n++;
}
printf( nn=%d" ,n);
}
例
分析:用变量
于其真因子的和:用变量
mai n()
{ int a,I,s;
for(a=1000;a>=1;a--)
分析:用变量
环,t=t*i,e=e+1.O/t。
#in clude<stdio.h>
void mai n()
{ int i=1;
long t=1;
float e=1;
while(e-(i nt)e>=1e-6)
{ t=t*i;
e=e+1.0/t;
i++;}
printf( n“.10f”,e);
}
例7:数列1,1,2,3,5,8….有f(n)=f(n-1)+f(n-2),f(1)=1,f(2)=1,求f(40)。
{s=0;
for(l=1;l<a;l++)
lf(a%l==O) s=s+l;
if(a==s) break;
}
printf( n“d' ,a);
}
思考:求
例14:S=sqrt(ln(1)+ln(2) +…+ln(n)),n=50(结果保留6位小数)
分析:开平方数及自然对数都是
求得。注意函数定义的数据类型。
循环结构程序设计典型例题
例1有数列2/3、4/5、6/9、10/15……求此数列前30项的和。
算法分析:
对于数列的题,首先要找出通项公式,或前后项的计算关系公式,根据公式求所需。
由于数列的题一般执行次数能确定,用for语句来编写比较方便。
此题,前后项的关系是:后一项的分子是前一项的分母加1,后一项的分母是前一
{b=2698/a;
if(s>(a+b))
{s=a+b;
t=b;
}
}
}
printf( n“d' ,b);
}
分析:用 变量
f=f1+f2,f1=f2,f2=f.
#in clude<stdio.h>
mai n()
{ long f1=1,f2=1,f, n;
for( n=3;n<=40 ;n++)
{f=f1+f2;
f1=f2; f2=f;
}
printf( nf=%ld”,f);
}
思考:求
例8:Sn=1-1/3+1/5-1/7+…1/(2n-1)求s(100)(保留4位小数)
}
例9:用牛顿迭代法求方程f(x)=2x3-4x2+3x-7=0在x=2.5附近的实根,直到满足|xn-xn-1|<10-6为止。
牛顿迭代公式为:xn=xn-1-f(xn- 1)/f'-xn
算法分析:
牛顿迭代法认为,以任意一个
#in clude<stdio.h>
#in clude<math.h> mai n()
可以不用最后察看i的值,而是通过在发现因子时改动标志变量,最后根据标志变量的值判 断是否是素数。
例5:有一个八层高的灯塔,每层所点灯数都等于上一层的两倍,一共有765盏灯,求塔底
灯数。
算法分析:
此题的关键在于塔顶的灯数,只要知道了塔顶的灯数,就可知道塔底灯数。这里采 取试探的方法来求塔顶灯数。
设塔顶灯数为x,x的初值从1开始循环,每次值加1。求出相应的灯的总数,总
for( a=1000;a>=1;a--) {for( j=2;j<a;j++) if(a%j==0) break;
if( j==a)
{ s=s+a; I++; }
if(l==20) break;
}
printf( n“d' ,s);
}
例
分析:用变量
果
mai n()
{int a,b,n=0,1;
for(a=200;a<=998;a++)
{for(I=2;I<a;I++)
if(a%I==0) break;
if(a==I )
{b=a+2;
for(I=2;I<b;I++)
if(b%I==0) break;
if(b==I ) n++;
}
}printf( n%'d' ,n);
}
例
分析:用变量
因子的个数,
mai n()
{int a,c ,n=0,1;
程序:
#in clude<stdio.h>
mai n()
{ int x,s,i,k;
for(x=1;;x++)
{s=0;
k=x;
for(i=1;i<=8;i++)
{s=s+k;k=k*2;}
if(s==765) break;
}
printf( n“d' ,k/2);
}例5:已知a>b>c>0,a、b、c为整数,且a+b+c<100,求满足1/a2+1/b2=1/c2的a、b、c共有 多少组?
例3:输出n~m中(0<*m)能被3整除,且至少有一个数字是5的所有数。
算法分析:
1
2
3•
4令整型变量x=a
5•
6.i=x%10
7•
8.x=x/10,并返回第5步
9•