C语言循环结构程序设计课件_第1页
C语言循环结构程序设计课件_第2页
C语言循环结构程序设计课件_第3页
C语言循环结构程序设计课件_第4页
C语言循环结构程序设计课件_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

循环结构循环练习例1、以下的for循环()。for(x=0,y=0;(y!=123)&&(x<4);x++);是无限循环B)循环次数不定C)执行4次D)执行3次答案:C例2、以下程序的输出结果是()。#include"stdio.h"main(){

inti;for(i=1;i<=5;i++){if(i%2==1)printf("*");elsecontinue;

printf("#");}

printf("$\n");return0;}A)*#*#*#$B)#*#*#*$C)*#*#$D)#*#*$答案:A循环练习例3、有以下程序:#include"stdio.h"main(){

intc;while((c=getchar())!='\n'){

switch(c-'2'){case0:case1:putchar(c+4);case2:putchar(c+4);break;case3:putchar(c+3);case4:putchar(c+2);break;}}

printf("\n");return0;}从第一列开始输入以下数据2743<CR>程序的输出结果是()A)66877B)66866C)6677877D)6688766答案:A循环练习例4、有以下程序:#include"stdio.h"main(){

int

a,b=1;

for(a=1;a<=100;a++){

if(b>=20)break;

if(b%3==1){b+=3;continue;}b-=5;}

printf("%d\n",a);return0;}上面程序的输出结果是A)7B)8C)9D)10答案:B循环练习例5、有以下程序:inty=9;

for(;y>0;y--){

if(y%3==0){

printf("%d",--y);continue;}}

printf("\n");上面程序的输出结果是A)741B)852C)963D)875421答案:B例6、以下程序段中内循环体的总的执行次数是int

i,j;for(i=5;i>0;i--)

for(j=0;j<4;j++){...}A)20B)25C)24D)30答案:A循环练习例7、有以下程序:#include"stdio.h"main(){

int

i,j;

for(j=10;j<11;j++){

for(i=9;i<j;i++)if(j%i!=0)break;

if(i=j-1)printf("%d",j);}return0;}上面程序的输出结果是A)11B)10C)9D)1110答案:B循环练习例3-21:计算1-1/2+1/3-1/4+1/5-...+1/(n-1)-1/n的值;(保留5位小数)注意:数据类型#include"stdio.h"main(){longi,n;doubles=0.0;

scanf("%ld",&n);

for(i=1;i<=n;i++)if(i%2==1)s=s+1.0/i;elses=s-1.0/i;

printf("s=%.5lf\n",s);return0;}循环练习例3-22:输出如下图形,输入行数n(n为奇数)。算法思路:利用分治的思想,分成两部分;上三角行共n/2+1行,下三角行共n/2行例如n=9,共9行,上三角行共5行,下三角行共4行上三角:行数i:1~n/2+1空格数:n/2~0与行数关系:n/2+1-i;*号数:1~2*n-1与行数关系:2*i-1;下三角:i:n/2~1空格数:行数i:1~n/2与行数关系:n/2+1-i;*号数:2*n-3~1与行数关系:2*i-1;本题的解题思路与程序实现不止一种。例如:for(i=1;i<=n/2+1;i++){}for(i=1;i>=n/2;i++){}再如:-n/2~n/2for(i=-n/2;i<=n/2;i++){}*****************************************#include<stdio.h>main(){

int

i,j,n;

scanf("%d",&n);for(i=1;i<=n/2+1;i++){for(j=1;j<=n/2+1-i;j++)printf("");for(j=1;j<=2*i-1;j++)printf("*");

printf("\n");}for(i=n/2;i>=1;i--){for(j=1;j<=n/2+1-i;j++)printf("");for(j=1;j<=2*i-1;j++)printf("*");

printf("\n");}return0;}循环练习例3-23:输出如下图形,输入行数n(n为奇数)。算法思路:利用分治的思想,分成两部分;上三角行共n/2+1行,下三角行共n/2行例如n=9,共9行,上三角行共5行,下三角行共4行上三角:行数i:1~n/2+1空格数:0~n/2与行数关系:i-1;*号数:n~1与行数关系:n-2*i+2;下三角:行数i:n/2~1空格数:n/2-1~0;与行数关系:i-1;*号数:3~n;与行数关系:n-2*i+2;本题的解题思路与程序实现不止一种。例如:下三角:1~n/2for(i=1;i<=n/2+1;i++){}for(i=1;i>=n/2;i++){}再如:-n/2~n/2for(i=-n/2;i<=n/2;i++){}*************************************************#include<stdio.h>main(){

int

i,j,n;

scanf("%d",&n);for(i=1;i<=n/2+1;i++){for(j=1;j<=i-1;j++)printf("");for(j=1;j<=n-2*i+2;j++)printf("*");

printf("\n");}for(i=n/2;i>=1;i--){for(j=1;j<=i-1;j++)printf("");for(j=1;j<=n-2*i+2;j++)printf("*");

printf("\n");}return0;}循环练习例3-24:输出如下图形,输入行数n。算法思路:第i行有i列;#include"stdio.h"main(){

int

i,j,n;

scanf("%d",&n);for(i=1;i<=n;i++){for(j=1;j<=i;j++)printf("*");

printf("\n");}return0;}*********************n=6123456789012345678901例3-25:输出如下图形,输入行数n。算法思路:第i行有i列;#include"stdio.h"main(){

int

i,j,n,m=1;

scanf("%d",&n);for(i=1;i<=n;i++){for(j=1;j<=i;j++){

printf("%d",m);if(m==9)m=0;elsem++;}

printf("\n");}return0;}循环练习例3-26:密码(数字)的输入(要求在三次之内输入密码,并给出提示);要求:1、程序中给出常量key=12345为密码;2、三次之内输入错误给出提示“pleaseinput:”,继续输入;3、只要在三次之内输入正确密码给出提示“welcome!”,并退出程序;4、输入三次后密码仍不对,给出提示“error!”并退出程序;程序实现:可以使用for,while,do...while三种形式;#include"stdio.h"#definekey12345main(){...return0;}关键:不能对输入次数进行判断是否提示“error!”。想一想为什么?循环练习例3-26:密码(数字)的输入(要求在三次之内输入密码,并给出提示);要求:1、程序中给出常量key=12345为密码;2、三次之内输入错误给出提示“pleaseinput:”,继续输入;3、只要在三次之内输入正确密码给出提示“welcome”,并退出程序;4、输入三次后密码仍不对,给出提示“error!”并退出程序;程序实现(for):

int

n,i;//flag=0for(i=1;i<=3;i++){

printf("pleaseinput:");

scanf("%d",&n);if(n==key){

printf("welcome!\n");//flag=1;break;}}

程序实现(while):i=1;while((i<=3)&&(!flag)){

printf("pleaseinput:");

scanf("%d",&n);if(n==key){

printf("welcome!\n");flag=1;//break;}i++;}//if(!flag)printf("error!\n");if(n!=key)printf("error!\n");程序实现(do...while):i=1;do{

printf("pleaseinput:");

scanf("%d",&n);if(n==key){

printf("welcome!\n");flag=1;//break;}i++;}while((i<=3)&&(!flag));循环练习例3-27:求整数n与m的最大公约数(1<=n,m<=1011)。辗转相除算法:如果n>m,则令n=n-m,直到n<=m。一旦n==m,则运算结束,此时的n就是最大公约数。当n<m时,交换n和m,重复上面的步骤。#include"stdio.h"main(){longn,m,temp;

printf("n,m=");

scanf("%ld%ld",&m,&n);while(n!=m){while(n>m)n=n-m;if(n<m){temp=n;n=m;m=temp;}}

printf("result=%ld\n",n);return0;}循环练习例3-28:求整数n与m的最大公约数(1<=n,m<=1011)。欧几里德算法:

第一步:以m除以n,令R为余数;第二步:如果R=0,该算法结束,n为答案;第三步:若R≠0,将n→m,r→n,返回第一步;

#include"stdio.h"main(){

int

m,n,r;

printf("pleaseinputtwonumbers:\n");

scanf("%d%d",&m,&n);r=m%n;

while(r!=0){m=n;n=r;r=m%n;}

printf("gongyueshu:%d\n",n);return0;}循环练习例3-29:从n个数中选取最大数。算法步骤:1)读第一个数放在变量max中,并设一计数器m,2)读下一个数;将下一个数与max中的数进行比较,大数放在max中,3)使m的值加1,4)重复执行第2)步,直至读入n个数;否则执行下一步,5)输出max的值,结束。程序实现:#include"stdio.h"main(){

int

n,max,num,_________;

printf("n=");

scanf("%d",&n);

printf("num=");________________while________{

printf("num=");

scanf("%d",&num);if_____________max=num;__________}

printf("max=%d\n",max);return0;}(m<n)(num>max)m++;scanf("%d",&max);m=1循环练习例3-30:一群猴子吃桃,第一天吃了一半零一个,第二天吃了剩余的一半零一个,第三天又吃了剩余桃子的一半零一个,如此下去,第n天吃完后还剩余一个桃子。求最初猴子摘了几个桃子;若要第n天正好吃完,最初应该摘几个桃子?(1<=n<=26)解题思路:从后向前推导。1)a=1;{第n天的桃子数,a的初值}

i=n;{计数器初值为n}2)a=2*(a+1)。{计算当天的桃子数}3)i=i-1。4)若i>=1,转2)。5)输出a的值。#include"stdio.h"main(){longa,i,n;

scanf("%ld",&n);a=1;//a=0;for(i=n;i>=1;i--){a=(a+1)*2;

printf("NO.%ld

day:%ld\n",i,a);}return0;}例3-32:有一批家禽分批销售,第一天卖出全部的1/2再加上1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论