上机习题
CH6PI 已知π/2=(2/1)(2/3)(4/3)(4/5)(6/5) (6/7)…,取前1000项的积求π的近似值。
CH6E 已知e=1+1/1!+1/2!+…,求满足当通项>10-5时各项的和。
CH6EX6 打印出所有“水仙花数”——三位数其各位数字的立方和等于该数本身。153=13+53+33
CH6MULTI 打印如下页格式的九九乘法表:
7/14/2017
1
许创制作
1*1= 1
1*2= 2 2*2= 4
1*3= 3 2*3= 6 3*3= 9
1*4= 4 2*4= 8 3*4=12 4*4=16
……
1*8= 8 2*8=16 3*8=24 …… 8*8=64
1*9= 9 2*9=18 3*9=27 …… 8*9=72 9*9=81
第6章练习:CH6FACT: 求出一个给定整数的所有因子,形式为 72=2*2*2*3*3。 CH6EX8
7/14/2017
2
许创制作
第6章循环控制
循环是结构化程序设计的基本控制结构之一
大部分程序都涉及循环结构
循环结构的构成:
⒈用if语句和goto语句(非结构化)
⒉用while语句
⒊用do-while语句
⒋用for语句
此外,在结构化循环语句的循环体中还可以包含break和continue语句
7/14/2017
3
许创制作
for语句
for语句格式:
for (初始化表达式;条件表达式;修正表达式)
S
⒈先计算初始化表达式
⒉若条件表达式为真则执行S,否则结束循环
⒊执行S之后,计算修正表达式
⒋重新执行⒉
⒌循环结束则执行for下面的语句
7/14/2017
4
许创制作
例1 求1+1/2+1/3+…+1/10
程序如下:
#include ""
void main()
{ int i; /* 计数器*/
float sum=0; /* 累加器*/
for(i=1; i<=10; i++)
sum=sum+1./i;
printf("sum=%f\n", sum);
}
输出:
sum=
7/14/2017
5
许创制作
例2 求n!,n从终端输入。
void main()
{int n, i;
long factorial=1;
printf("Input an integer(<13):");
scanf("%d", &n);
for(i=1; i<=n; i++)
factorial*=i; /* 乘法器*/
printf("%d!=%ld\n", n, factorial);
}
Input an integer(<13):10
10!=3628800
7/14/2017
6
许创制作
例3 求1!+2!+3!+…+20!
#include ""
void main()
{ int i;
float s=0., t=1.;
for(i=1; i<=20; i++)
{t*=i;
s+=t;
}
printf("1!+2!+3!+…+20!=%-\n", s);
}
输出:
1!+2!+3!+…+20!=2561327455189073920
7/14/2017
7
许创制作
例4 求和:1-1/2+1/3-1/4+……-1/100
void main()
{float sum, t;
int s=1, i; /* s为正负1 */
for(i=1,sum=0; i<=100; i++)
{t=s*1./i;
sum+=t;
s=-s;
}
printf("sum=%f\n",sum);
}
输出:
sum=
7/14/2017
8
许创制作
i序列前n个数
1,1,2,3,5,8,13,21……
其规律为: fib1=fib2=1
fibn=fibn-1+fibn-2
用循环移位算法,其循环体为:
fib1 fib2 fib3 fib3=fib1+fib2;
1 + 1 → 2 fib1=fib2 ;
1 + 2 → 3 fib2=fib3;
2 + 3 → 5
程序见下页:
7/14/2017
9
许创制作
void main()
{int n, i;
long fib1=1, fib2=1, fib3;
scanf("%d", &n);
for (i=1; i<=n; i++)
{printf("%12ld", fib1);
if(i%4==0) putchar('\n');
fib3=fib
C语言课件-PPT 来自淘豆网m.daumloan.com转载请标明出处.