为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

C5

2013-08-04 39页 ppt 180KB 40阅读

用户头像

is_532675

暂无简介

举报
C5null第5章 循环结构程序设计第5章 循环结构程序设计 循环语句 break 和 continue 语句 循环嵌套5.1 循环语句5.1 循环语句问题 打印整数1~10 打印整数1~100 打印整数1~nprintf("%d", 1); printf("%d", 2); …… printf("%d", 10);i=1; printf("%d", i); i++; printf("%d", i); i++; …… printf("%d", i); i++;i=1; while(i sum ...
C5
null第5章 循环结构程序设计第5章 循环结构程序设计 循环语句 break 和 continue 语句 循环嵌套5.1 循环语句5.1 循环语句问题 打印整数1~10 打印整数1~100 打印整数1~nprintf("%d", 1); printf("%d", 2); …… printf("%d", 10);i=1; printf("%d", i); i++; printf("%d", i); i++; …… printf("%d", i); i++;i=1; while(i<=10){ printf("%d", i); i++; }while 语句while 语句 while (表达式) 语句; 语 句表达式非00i=1; while(i<=10){ printf("%d", i); i++; }循环体 循环不变式 改变循环条件null 10 求 sum=  i i=1 sum=0 sum+1 —> sum sum+2 —> sum sum+3 —> sum …… sum+10 —> sumsum=sum+?sum=0; i=1; while(i<=10){ sum=sum+i; i++; }循环不变式for 语句for 语句for (exp1; exp2; exp3) 语句; exp3exp2非00 exp1 语 句循环体while 和 forwhile 和 for while (表达式) 语句;for (exp1; exp2; exp3) 语句;exp1; while(exp2){ 语句; exp3; }while 和 forwhile 和 forwhile (表达式) 语句;for (exp1; exp2; exp3) 语句;exp1; while(exp2{ 语句; exp3; }sum=0; i=1; while(i<=10){ sum=sum+i; i++; }sum=0; for(i=1; i<=10; i++) sum=sum+i;程序举例程序举例例T1-1 求1+2+3+4+……+ n 例T1-2 求1+1/2+1/3+1/4+……+ 1/n 例T1-3 求1-1/2+1/3-1/4+…… 1/n 例T1-4 求1-1/3+1/5-1/6+…… 前n项之和 例T2-1 求n! 例T2-2 求xn 例T3-1 求1-1/3+1/5-1/7+…… ,直到最后1项的绝对值<10-5 例T4-1 输入100个整数,求其中正数之和 例T4-2 输入一个正整数n, 再输入n个数,输出最大值 例T5 输出Fibonacci序列前20个数例T1-1 求1+2+3+4+……+ n例T1-1 求1+2+3+4+……+ n算法: i =1 to n s=s+t t++ i++程序段: s=0; for(i=1; i<=n; i++) s=s+i;算法: i =1 to n s=s+i i++例T1-2 求1+1/2+1/3+……+ 1/n例T1-2 求1+1/2+1/3+……+ 1/n算法: i =1 to n s=s+t t=1.0/i i++程序段: s=0; for(i=1; i<=n; i++) s=s+1.0/i;算法: i =1 to n s=s+t t++ i++例T1-3 求1-1/2+1/3-1/4+…… 1/n例T1-3 求1-1/2+1/3-1/4+…… 1/ni =1 to n s=s+t t=1.0/i i++程序段: s=0; flag=1; for(i=1; i<=n; i++){ s=s+1.0/i*flag; flag=-flag; }算法: i =1 to n s=s+t t=1.0/i*flag flag=-flag i++ 例T1-4 求1-1/3+1/5-…… 前n项和例T1-4 求1-1/3+1/5-…… 前n项和算法: i =1 to n s=s+t t=1.0/i*flag flag=-flag i++程序段: s=0;flag=1;tt=1; for(i=1; i<=n; i++){ s=s+1.0/tt*flag; tt+=2; flag=-flag; }算法: i =1 to n s=s+t t=1.0/tt*flag flag=-flag tt=tt+2 i++例T2-1 求n!例T2-1 求n!算法: i =1 to n f=f*t t++ i++程序段: f=1; for(i=1; i<=n; i++) f=f*i;算法: i =1 to n f=f*i i++例T2-2 求xn例T2-2 求xn算法: i =1 to n f=f*t t++ i++程序段: f=1; for(i=1; i<=n; i++) f=f*x;算法: i =1 to n f=f*t t=x i++例T3-1 求1-1/3+1/5-…直到最后1项的绝对值<10-5例T3-1 求1-1/3+1/5-…直到最后1项的绝对值<10-5i =1 to n s=s+t t=1.0/tt*flag flag=-flag tt=tt+2 i++程序段: s=0; flag=1; tt=1; t=1; while(fabs(t) >= 1E-5){ s = s+t; flag = -flag; tt += 2; t = 1.0/tt*flag; }算法: while |t|>=1E-5 s=s+t flag=-flag tt=tt+2 t=1.0/tt*flag 例T4-1 输入100个整数,求其中正数之和例T4-1 输入100个整数,求其中正数之和# include void main() { int i , sum=0, x; for (i=0; i<100; i++){ scanf("%d", &x); if (x>0) sum=sum+x; } printf("%d",sum); }例4-7 求最大值例4-7 求最大值输入3个数,输出其中的最大值。 #include void main( ) { int a, b, c, max; printf("input a, b, c:\n"); scanf("%d%d%d", &a, &b, &c); max = a; if(max < b) max = b; if(max < c) max = c; printf("max is %d\n", max); }a max b cmaxmax例T4-1输入一个正整数n, 再输入n个数,输出最大值例T4-1输入一个正整数n, 再输入n个数,输出最大值void main() { int i , max, n, x; scanf("%d", &n); if(n>=1){ scanf("%d", &x); max=x; for (i=1; i0); printf("sum=%d", sum); }void main( ) { int x, sum=0; scanf("%d", &x); while (x>0){ sum + = x; scanf("%d", &x); }; printf("sum=%d", sum); }输入 1 2 5 -10输入 -10 1 2 5sum-x5.2 break 和 continue 语句5.2 break 和 continue 语句#include "stdio.h" void main( ) { char c; int i=0; for (i=0; i<10;i++) { c=getchar(); if (c=='\n') break; putchar(c); } }循环何时结束? c=getchar(); for (i=0; i<10 && c! ='\n'; i++){ putchar(c); c=getchar(); } for (i=0; ;i++) { c=getchar(); if ( i >= 10 || c == '\n) break; putchar(c); }1break 流程break 流程结束循环 while(exp){ 语句1 if (expb) break; 语句2 } continue 流程 continue 流程跳过continue后面的语句,继续下一次循环 while(exp){ 语句1 if (expc) continue; 语句2 }break 和 continuebreak 和 continue#include "stdio.h" void main( ) { char c; int i=0; for (i=0; i<10;i++) { c=getchar(); if (c=='\n') break; putchar(c); } }#include "stdio.h" void main( ) { char c; int i=0; for (i=0; i<10;i++) { c=getchar(); if (c=='\n') continue; putchar(c); } }输入:abc ↙ efgh ↙ 123 ↙输出:abcefgh1输出:abc例T6 输入m,判断m是否为素数例T6 输入m,判断m是否为素数算法:除了1和m,不能被其它数整除。 m %2 %3 %4 %5 不是素数 || =0 =0 是素数 && !=0 !=0 程序段: n=sqrt(m); for(i=2; i<=n; i++) if(m%i==0) break; if(i>n) printf("yes\n") else printf("no\n”);例T7 将一个正整数逆序输出例T7 将一个正整数逆序输出确定:循环条件和循环不变体 12345 5 4 3 2 1 12345 % 10 = 5 12345 / 10 = 1234 1234 % 10 = 4 1234 / 10 = 123 123 % 10 = 3 123 / 10 = 12 12 % 10 = 2 12 / 10 = 1 1 % 10 = 1 1 / 10 = 0 结束循环不变式 x%10 x=x/10 循环条件 x==0scanf( “%d”, &x); while (x!=0){ digit = x %10; x = x/10 ; printf( “%d ”, digit); }例4-10例4-10# include void main( ) { char c; printf("Please input a character:\n"); c = getchar(); if(c>='a' && c <= 'z' || c>='A' && c <= 'Z') printf("This is a letter.\n"); else if(c>='0' && c <= '9') printf("This is a digit.\n"); else printf("This is an other character. \n"); } 输入一行字符,统计英文字母、数字和其他字符。例T8 输入一行字符,统计英文字母、数字和其他字符例T8 输入一行字符,统计英文字母、数字和其他字符# include void main( ) { char c; int letter=0, digit=0, other=0; c = getchar(); while(c!='\n'){ if(c>='a' && c <= 'z' || c>='A' && c <= 'Z') letter++; else if(c>='0' && c <= '9') digit++; else other++; c=getchar(); } printf("%d %d %d", letter, digit, other); } while((c = getchar())!='\n')5.3 循环嵌套5.3 循环嵌套 while (表达式) 语句;例T9-1.1 1!+2!+……+n! 例T9-1.1 1!+2!+……+n! 算法: k=1 to n s = s + f f = k! k++s=0; for(k=1; k<=n; k++){ s=s+f; } f=1; /* n! */ for(i=1; i<=n; i++) f=f*i;f=1; for(i=1; i<=k; i++) f=f*i;例T9-1.2 1!+2!+……+n! 例T9-1.2 1!+2!+……+n! 算法: k=1 to n s = s + f f = k! k++s=0;f=1; for(k=1;k<=n;k++){ f=f*k; s=s+f; } 算法: k =1 to n s = s+f f = f*k k++例T9-2 兑换零钱例T9-2 兑换零钱将10元钱换成5角、2角、1角的零钱(至少各一枚),列出所有可能的。 c5: 5角的数量, [1, 20) c2: 2角的数量, [1, 50) c1: 1角的数量, [1, 100) 5*c1+2*c2+c5==100null将10元钱换成5角、2角、1角的零钱 c5: 5角的数量, [1, 20) c2: 2角的数量, [1, 50) c1: 1角的数量, [1, 100) 5*c5+2*c2+c1==100for (c5=1; c5<20; c5++) for (c2=1; c2<50; c2++) for (c1=1; c1<100; c1++) if (5*c5+2*c2+c1==100 ) printf("%d %d %d\n", c5, c2, c1);c5=1 c2=1 c1=1 992 492 19null将10元钱换成5角、2角、1角的零钱 c5: 5角的数量, [1, 20) c2: 2角的数量, [1, 50) c1: 1角的数量, [1, 100) 5*c5+2*c2+c1==1000for (c5=1; c5<20; c5++) for (c2=1; c2<50; c2++) for (c1=1; c1<100; c1++) if (5*c5+2*c2+c1==1000 ) printf("%d %d %d\n", c5, c2, c1);for (c5=1; c5<20; c5++) for (c2=1; c2<50; c2++) printf("%d %d %d\n", c5, c2, 1000- 5*c5+2*c2);例T9-3 输出100~200间所有素数例T9-3 输出100~200间所有素数算法: m =100 to 200 if m是素数 print mn=sqrt(m); for(i=2; i<=n; i++) if(m%i==0) break; if(i>n) printf("yes\n") else printf("no\n”);for(m=100; m<=200; m++){ n=sqrt(m); for(i=2; i<=n; i++) if(m%i==0) break; if(i>n) printf("%d",m) }5.3 循环嵌套5.3 循环嵌套循环嵌套均是大循环嵌小循环 绝对不允许循环体交叉! for ( ){ ......... do { .......... } } while(....) for ( ) { ......... do { } while( ) }5.3 循环嵌套5.3 循环嵌套break 与循环 for ( ){ ......... while( ){ .......... break; .......... } ......... }
/
本文档为【C5】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索