Presentation is loading. Please wait.

Presentation is loading. Please wait.

请编写程序在屏幕上打印出一个“*”? printf(”*\n”); 请编写程序在屏幕上打印四行,每行一个“*”?

Similar presentations


Presentation on theme: "请编写程序在屏幕上打印出一个“*”? printf(”*\n”); 请编写程序在屏幕上打印四行,每行一个“*”?"— Presentation transcript:

1 请编写程序在屏幕上打印出一个“*”? printf(”*\n”); 请编写程序在屏幕上打印四行,每行一个“*”? printf(”*\n”); 请编写程序在屏幕上打印100行,每行一个“*”?

2 循环结构

3 FOR循环格式 格式: for(循环变量=初值;条件表达式;增量表达式) { 语句组; } 编程序在屏幕上输出四行”*” { int i;
printf(“*\n”); ++i; T F 编程序在屏幕上输出四行”*” { int i; for(i=1;i<=4;++i) printf(”*\n”); return 0; }

4 for(循环变量=初值;条件表达式;增量表达式)
语句组; 循环变量=初值 条件表达式是否成立? 语句组(循环体) 增量表达式 T F

5 请编程序输出100行,每行一个“*”。 编程序在屏幕上输出四行”*” { 100 int i; for(i=1;i<=4;++i)
printf(”*\n”); return 0; } 100 请编程序输出100行,每行一个“*”。

6 例:输出100以内所有的偶数 #include<cstdio> using namespace std; int main()
{ int i; for(i=2;i<=100;i+=2) printf("%d ",i); return 0; } 练习: 1、输出100以内所有的奇数。

7 例:求1+2+…+4的和 F i<=4? T #include<cstdio> using namespace std;
int main() { int i,s=0; for(i=1;i<=4;++i) s+=i; printf("s=%d",s); return 0; } F 累加器 输出s=?;

8 练习 1、请编程序求s=1+4+…+100的值. 2、编程求100以内所有偶数之和。 3、请编程序求s=1*2*3*…*6的值.
称为6的阶乘,表示为6!

9 递推 例:求n!(n!=1*2*…*n) S1=1 (n=1) Sn=sn-1*n (n>1)
#include<cstdio> using namespace std; int main() { int i,s=1,n; scanf("%d",&n); for(i=1;i<=n;++i) s*=i; printf("%d",s); return 0; } 递推 S1= (n=1) Sn=sn-1*n (n>1)

10 例:请编程序求s=1+1/2+1/3+…+1/99+1/100的值.
#include<cstdio> using namespace std; int main() { float i,s=0; for(i=1;i<=100;++i) s+=1/i; printf("s=%f",s); return 0; } 练习: 1、编程求s= … 2、编程求S=1*2+2*3+3*4+…+n*(n+1)

11 例:打印出字母串:”abcd…xyz”. #include<cstdio> using namespace std;
int main() { char ch; for(ch='a';ch<='z';++ch) printf("%c",ch); return 0; } 练习: 1、按字母表顺序,从A开始,每隔一个字母打印输出,即ACE… 2、打印出字母串:”zyx…cba”.

12 例:求斐波拉契数列a1、 a2… a20。 a1=1, a2=1; a3= a1+a2,…… an= an-2+an-1;如1,1,2,3,5,8,13……
#include<cstdio> using namespace std; int main() { int i,a1=1,a2=1,an; printf("%d %d",a1,a2); for(i=3;i<=20;++i) an=a1+a2; printf(" %d",an); a1=a2; a2=an; } return 0; if(i%5==0) printf("\n"); 练习:已知一对兔子,每个月可以生一对小兔,而小兔过一个月后也可生一对小兔。即兔子的对数是:第一个月1对,第二个月2对,第三个月3对,第四个月5对,……,假设兔子的生育期是12个月,并且不死,问一年后,这对兔子有多少对活着的后代?

13 例:读入十个正数,求其中的最大值。 #include<cstdio> using namespace std;
int main() { float x,maxn=0;int i; for(i=1;i<=10;++i) scanf("%f",&x); if(maxn<x) maxn=x; } printf("%f",maxn); return 0; 练习: 1、输入十个不超过1000的数,求其中的最小值。 2、输入二十个数,求它们的和及平均值。

14 例:一个两位数x,将它的个位数字与十位数字对调后得到一个新数y,此时y恰好比x大36,请编程求出所有这样的两位数。
#include<cstdio> using namespace std; int main() { int x,a,b,y; for(x=10;x<=99;++x) a=x/10; b=x%10; y=b*10+a; if((y-x)==36) printf("%d\n",x); } return 0; 练习:把整数3025从中剪开分成30和25两个数,此时这两个数之和的平方(30+25)2=3025等于原数。求所有符合这样条件的四位数。

15 穷举法 例:水仙花数,如153,其中13+53+33=153,则153被称为水仙花数,求100到999间所有的水仙花儿数。
#include<cstdio> using namespace std; int main() { int x,a,b,c,y; for(x=100;x<=999;++x) a=x/100; b=(x/10)%10; c=x%10; y=c*c*c+b*b*b+a*a*a; if(y==x) printf("%d\n",x); } return 0; 穷举法 1、穷举变量的范围。 2、条件成立的表达式

16 break 退出当层循环; continue 退出当次循环; #include<cstdio>
using namespace std; int main() { int i; for(i=1;i<=100;++i) if(i>5) break; printf("%d",i); return 0; } #include<cstdio> using namespace std; int main() { int i; for(i=1;i<=100;++i) if(i>5) continue; printf("%d",i); return 0; }

17 例:判断n是否为素数,如果是就输出yes,否则输出no。
#include<cstdio> using namespace std; int main() { int i,n; scanf("%d",&n); for(i=2;i<=n-1;++i) if(n%i==0) break; if(i>n-1) printf("yes"); else printf("no"); return 0; } #include<cstdio> #include<cmath> using namespace std; int main() { int i,n,k; scanf("%d",&n);k=sqrt(n); for(i=2;i<=k;++i) if(n%i==0) break; if(i>sqrt(n)) printf("yes"); else printf("no"); return 0; }

18 例:根据公式 ,计算圆周率π的值。 #include<cstdio> #include<cmath> using namespace std; int main() { float i,s=0; scanf("%d",&n); for(i=1;i<=n;++i) s+=1/(i*i); printf("%f",sqrt(6*s)); return 0; }

19 While条件循环格式 例: ,求当s>10时最小的n值。 格式 while(条件) 条件 语句1; while(条件) { 语句1;
语句2; } 条件 语句 F T ①判断条件(条件表达式)是否成立,如果为真,则执行步骤② ,否则执行步骤④ ②执行语句1或多条语句 ③返回步骤① ④结束循环,执行while语句的后面语句

20 例: ,求当S>10时最小的n值。 #include<cstdio> #include<cmath>
using namespace std; int main() { float i=0,s=0; while(s<=10) ++i; s+=1/i; } printf("%.0f",i); return 0; 练习: 1、s=1+2+3+…+n,求s>100时最小的n值? 2、编程求s=1+1/2+1/3+…+1/100;

21 例:求两个正整数m和n的最大公约数。 练习: #include<cstdio> using namespace std;
int main() { int m,n,r; scanf("%d%d",&m,&n); r=m%n; while(r!=0) m=n; n=r; } printf("%d",n); return 0; 辗转相除法: ①求m/n的余数r; ②若r=0,则n为最大公约数;若r<>0,则执行第③步。 ③将n的值赋给m,将r的值赋给n ④返回重新执行第①步。 练习: 1、输入任意自然数A,B,求A,B的最小公倍数。

22 例:利用格里高公式求π。 ,直到最后一项的值小于10-6为止。
例:利用格里高公式求π。 ,直到最后一项的值小于10-6为止。 #include<cstdio> using namespace std; int main() { float s=1,i=1,fu=1; while(1/i>=1E-6) i+=2; fu=(-1)*fu; s=s+fu*(1/i); } s=s*4; printf("%f",s); return 0; 练习: 1、小球从100高处自由落下,着地后又弹回高度的一半再落下。求第20次着地时,小球共通过多少路程?

23 例:输入若干字符,以“$”作为终止符号,计算输入字符的个数。
#include<cstdio> using namespace std; int main() { int s=0; char ch; scanf("%c",&ch); while(ch!='$') s++; } printf("%d",s); return 0;

24 例:输入一个正整数,输出其位数 练习: #include<cstdio> using namespace std;
int main() { int x,num=0; scanf("%d",&x); while(x>0) num++; x/=10; } printf("%d",num); return 0; 练习: 1、输入一个正整数,输出其每位数的数字之和。如输入243,输出和9(注:和9=百位2+十位4+个位3)

25 do---while条件循环格式 格式 格式 do do { 语句1; 语句1; … while(条件表达式); 语句n;}
{ 语句1; 语句n;} while(条件表达式); 语句1…语句n 条件表达式 F T ①执行语句1,…,语句n ②判断条件(布尔表达式)是否成立,如果成立,则执行步骤③ ,如果不成立执行步骤④ ③返回步骤① ④结束循环,执行while语句的下 一条语句

26 例:求两个正整数m和n的最大公约数。 #include<cstdio> using namespace std;
int main() { int m,n,r; scanf("%d%d",&m,&n); do r=m%n; m=n; n=r; } while(r!=0); printf("%d",m); return 0; 辗转相除法: ①求m/n的余数r; ②若r=0,则n为最大公约数;若r<>0,则执行第③步。 ③将n的值赋给m,将r的值赋给n ④返回重新执行第①步。

27 例:利用格里高公式求π。 ,直到最后一项的值小于10-6为止。
例:利用格里高公式求π。 ,直到最后一项的值小于10-6为止。 #include<cstdio> using namespace std; int main() { float s=1,i=1,fu=1; do i+=2; fu=(-1)*fu; s=s+fu*(1/i); } while(1/i>=1E-6); s=s*4; printf("%f",s); return 0; 练习: 1、s=1+2+3+…+n,求s>100时最小的n值? 2、找出被2、3、5除时余数为1的最小的十个数。

28 多重循环

29 例:求1!+2!+3!+…+10!的值。 练习: 1、求s=11+22+33+…+nn 。 #include<cstdio>
using namespace std; int main() { int s=0,m,i,j; for(i=1;i<=10;++i) m=1; for(j=1;j<=i;++j) m*=j; s+=m; } printf("%d",s); return 0; 练习: 1、求s= …+nn 。

30 i每变化一次, j变化一轮 例:观察下面程序中i和j的变化规律 #include<cstdio>
#include<cmath> using namespace std; int main(){ int i,j; for(i=1;i<=5;++i) { for(j=1;j<=4;++j) printf("(i:%d,j:%d) ",i,j); printf("\n"); } return 0; i每变化一次, j变化一轮

31 例:编程输出以下图形 * ** *** **** ***** 练习: 1、编程输出右边的图形。 * ** *** **** *****
#include<cstdio> using namespace std; int main() { int s=0,m,i,j; for(i=1;i<=10;++i) for(j=1;j<=i;++j) printf("*"); printf("\n"); } printf("%d",s); return 0; 练习: 1、编程输出右边的图形。 * ** *** **** *****

32 例:编程输出九九乘法表 #include<cstdio> using namespace std; int main() {
int i,j; for(i=1;i<=9;++i){ for(j=1;j<=i;++j) printf("%d*%d=%d ",i,j,i*j); printf("\n"); } return 0;

33 例:输入自然数n,输出1~n之间的全部质数
#include<cstdio> #include<cmath> using namespace std; int main(){ int i,j,n,k; scanf("%d",&n); for(i=2;i<=n;++i) { k=sqrt(i); for(j=2;j<=k;++j) if(i%j==0) break; if(j>k) printf("%d ",i); } return 0;

34


Download ppt "请编写程序在屏幕上打印出一个“*”? printf(”*\n”); 请编写程序在屏幕上打印四行,每行一个“*”?"

Similar presentations


Ads by Google