nullnull第5章循环结构程序设计null思考求1~100的累加和。
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
换一种思路:sum=1+2+…+100;首先设置一个累计器sum,其初值为0,利用sum += n来计算(n依次取1、2、……、100),只要解决以下3个问
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
即可: (1)将n的初值置为1; (2)每执行1次“sum += n;”后,n增1; (3)当n增到101时,停止计算。此时,sum的值就是1~100的累计和。sum=sum+n;null一、goto语句
二、while语句
三、do-while语句
四、for语句
五、break、continue语句
六、几种循环的比较主要内容null格式goto 语句标号说明(1) 与if 语句一起构成循环结构。
(2) 不符合结构化程序设计原则,一般不用。#include
void main()
{ int n=1, sum=0;
loop: sum += n; n++;
if (n<=100) goto loop;
printf(“sum=%d\n”, sum);
} 举例使用goto语句与分语句配合构成循环结构,实现求1~100的累加和。作用:使系统转向标号所在的语句行执行。标号的定名规则与变量名相同。一、goto语句null格式while (
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
达式) 循环体语句 说明1。循环体如果包含一个以上的语句,必须使用复合语句形式。
2。在循环体中,必须有使循环条件趋向于不满足(假)的语句。
3。先判断表达式,后执行语句。 ?含义当表达式为真(非0值)时,执行while语句中的内嵌语句。执行过程二、while语句nullsum= 55举例求1~10的累加和。 #include
void main()
{
int i,sum;
i=1; sum=0;
while (i<=10)
{
sum=sum+i;
i++;
}
printf(“sum=%5d\n”,sum);
}思考1。如果去掉循环体中的大括号,执行过程将会怎样变化?
2。在循环体中,使循环条件趋向于不满足(假)的语句是哪条??1 求1~5的累加和.
2 求1~10的奇数和.
3 求1~10的偶数和.二、while语句null格式do
循环体语句
while (表达式);说明1。循环体如果包含一个以上的语句,必须使用复合语句形式。
2。在循环体中,必须有使循环条件趋向于不满足(假)的语句。
3。先执行循环体语句,后判断表达式的值。 ?含义执行do-while语句中的内嵌语句,直到表达式为假(0)才跳出循环。执行过程至少执行一次三、do-while语句nullsum= 55举例求1~10的累加和。 #include
void main()
{
int i,sum;
i=1; sum=0;
do
{
sum=sum+i;
i++;
} while (i<=10);
printf(“sum=%5d\n”,sum);
}思考1。如果去掉循环体中的大括号,执行过程将会怎样变化?
2。在循环体中,使循环条件趋向于不满足(假)的语句是哪条?三、do-while语句null举例while和do-while循环的比较。 #include
void main()
{
int i,sum;
scanf(“%d”,&i);
while(i<=10)
{
sum=sum+i;
i++;
}
printf(“sum=%d\n”,sum);
}#include
void main()
{
int i,sum;
scanf(“%d”,&i);
do
{
sum=sum+i;
i++;
} while(i<=10)
printf(“sum=%d\n”,sum);
}输入:1 输入:11 sum=55输出:sum=55sum=0输出:sum=11此程序的功能?什么情况下两者结果相同?三、do-while语句null格式for (表达式1;表达式2;表达式3) 语句 for (循环变量赋初值;循环条件;循环变量增值) 语句 执行过程(1)先求解表达式1;
(2)求解表达式2,若其值为真,则 执行循环体语句,然后执行第(3)步;若为假,则结束循环,转到第(5)步;
(3)求解表达式3;
(4)转向步骤(2);
(5)循环结束,执行for语句下面的一个语句。四、for语句nullsum= 55举例求1~10的累加和。 #include
void main()
{
int i,sum;
sum=0;
for (i=1;i<=10;i++)
sum=sum+i;
printf(“sum=%5d\n”,sum);
}?1 求1~5的累加和.
2 求1~10的奇数和.
3 求1~10的偶数和.四、for语句nullfor (表达式1;表达式2;表达式3) 语句 说明三个表达式都可以省略。四、for语句null说明1i=1;
for(; i<=10;i++)
sum=sum+i; 2for (i=1; ;i++)
sum=sum+i; ?3for (i=1;i<=10 ;)
{
sum=sum+i;
i++;
}
for(i=1; i<=10;i++)
sum=sum+i; 表达式1可以省略,但其后的分号不可以省略。没有循环结束条件,构成了死循环
for(i=1; i<=10;i++)
sum=sum+i; 四、for语句null说明45for( ; ; )
sum=sum+i; 6表达式1和表达式3可以是与循环变量无关的表达式。for( ;i<=10 ; )
{
sum=sum+i;
i++;
} 7表达式2一般是关系表达式,也可以是数值或字符表达式。while(i<=10)
{
sum=sum+i;
i++ ;
} while (1)
sum=sum+i; 表达式1和表达式3可以同时省略,此时等同于while语句。for(sum=0,i=1;i<=100,i++)
sum=sum+i; 建议:for语句中只放与
循环控制有关的语句。四、for语句null格式while (表达式1)
{…
if (表达式2) break;
…
} 举例 … ...
sum=0;
for (i=1;i<=10;i++)
{
if (i>5) break;
sum=sum+i;
}
printf(“sum=%5d\n”,sum);
… ...while (表达式1)
{…
if (表达式2) conitue;
…
} 结束整个循环结束本次循环 … ...
sum=0;
for (i=1;i<=10;i++)
{
if (i<=5) continue;
sum=sum+i;
}
printf(“sum=%5d\n”,sum);
… ...五、break\continue语句null说明1、 三种循环语句在处理循环问题时,一般可以相互替代。2、 对于循环次数固定的问题,用for语句实现比较简单。3、 对于循环次数不确定的问题,可用while语句或do-while语句实现。4、 while语句:先判断,后执行。
do-while语句:先执行,后判断。六、几种循环语句的比较null概念一个循环体内又包含另一个完整的循环结构,称为循环嵌套。 1 2 3 4
2 4 6 8
3 6 9 12
4 8 12 16举例打印乘法口诀表。 #include
void main()
{
int i,j;
for (i=1;i<=4;i++)
{
for (j=1;j<=4;j++)
printf(“%4d”,i*j);
printf(“\n”);
}
}i=1, j=1 1*1
j=2 1*2
j=3 1*3
j=4 1*4
i=2, j=1 2*1
j=2
……
i=3
i=4七、循环嵌套null 1
2 4
3 6 9
4 8 12 16#include
void main()
{
int i,j;
for (i=1;i<=4;i++)
{
for (j=1;j<=i;j++)
printf(“%4d”,i*j);
printf(“\n”);
}
}(一)循环嵌套思考1null#include
void main()
{
int i,j;
for (i=1;i<=4;i++)
{
for (j=1;j<=5-i;j++)
printf(“%4d”,i*j);
printf(“\n”);
}
}(一)循环嵌套思考2 1 2 3 4
2 4 6
3 6
4null#include
void main()
{
int i,j;
for (i=1;i<=4;i++)
{
for (j=1;j<=4-i;j++) printf(“ ” );
for (j=5-i;j<=4;j++)
printf(“%4d”,i*j);
printf(“\n”);
}
}(一)循环嵌套思考3 4
6 8
6 9 12
4 8 12 16null#include
void main()
{
int i,j;
for (i=1;i<=4;i++)
{
for (j=1;j<=i-1;j++) printf(“ ” );
for (j=i;j<=4;j++)
printf(“%4d”,i*j);
printf(“\n”);
}
}(一)循环嵌套思考4 1 2 3 4
4 6 8
9 12
16null例1利用公式:/4=1-1/3+1/5-1/7+…
求 的近似值,直到某一项的绝对值小于10-6为止。#include
#include
void main()
{
int s;
float n,t,pi;
t=1;pi=0;n=1.0;s=1;
while((fabs(t))>1e-6)
{ pi=pi+t;
n=n+2;
s=-s;
t=s/n;}
pi=pi*4;
printf("pi=%10.6f\n",pi);
} 思考:使用那一种循环控制语句?(二)程序举例pi=1-1/3+…
输出4* pi
s=1(-1)
n=1,3,5,7…
t=s/nnull例2求Fibonacci数列的前40个数。#include
void main()
{
long int f1,f2;
int i;
f1=1;f2=1;
for(i=1;i<=20;i++)
{
printf("%12ld%12ld",f1,f2);
if(i%2==0) printf("\n");
f1=f1+f2;
f2=f2+f1;
}
}特点:第1、2个数为1、1。从第三个数开始,该数是其前面两个数之和。
F1=1 (n=1)
F2=2 (n=2)
Fn=Fn-1+Fn-2 (n>=3) 1 1 2 3
5 8 13 21
34 55 89 144
… …(二)程序举例null例3判断m是否为素数。素数(质数): 只能被1和它本身整除的数。判别方法:
57:若2~56之间的每一个数都除不开56,则56为素数,否则56不是素数。
m, k=m-1,i=2~k :
若每一个 i 的值都除不开m,则m为素数,否则m不是素数。flag=1;
k=sqrt(m);
for (i=2;i<=k;i++)
if (m%i==0) flag=0;
if (flag==1) printf(“yes!”);
else printf(“no!”);
k=sqrt(m);
for (i=2;i<=k;i++)
if (m%i==0) break;
if (i>=k+1) printf(“yes!”);
else printf(“no!”);k=m-1;
k=[m/2];[(m+1)/2];
k=[sqrt(m)];[sqrt(m+1)](二)程序举例null例3输出 101~200之间的全部素数。#include
#include
void main()
{
int m,k,i,n=0;
for(m=101;m<=200;m=m+2)
{
k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0) break;
if(i>=k+1)
{ printf("%d ",m); n=n+1; }
if(n%10==0) printf("\n");
}
printf("\n");
}(二)程序举例null例4译密码。输入一行字符,输出其相应的密码。
译码规律:将字母变成其后的第4个字母,非字母字符不变。#include
void main()
{
char c;
while((c=getchar())!='\n')
{
if((c>'a'&&c<='z')||(c>'A'&&c<='Z'))
{
c=c+4;
if((c>'Z'&&c<='Z'+4)||c>'z') c=c-26;
}
printf("%c\n",c);
}
}(二)程序举例