C言语教程第三章: C言语步伐料理开端(8)

转移语句

步伐中的语句通常老是按次序标的目的, 或按语句遵从所定义的标的目的实行的。要是需求变化步伐的正常流向, 可以运用本小节引见的转移语句。在C言语中供给了4种转移语句:
goto,break, continue和return。
其中的return语句只能出目前被调函数中, 用于前去主调函数,我们把在函数一章中详细引见。 本小节引见前三种转移语句。

1.goto语句

goto语句也称为无前提转移语句,其一样伟大花样如下: goto 语句标号; 其中语句标号是按标识符划定书写的标记, 放在某一语句行的
前面,标号后加冒号(:)。语句标号起标识语句的劝化,与goto 语句合营运用。
如: label: i ;
loop: while(x<7);
C言语不限定步伐中运用标号的次数,但各标号不得重名。goto语句的语义是变化步伐流向, 转去实行语句标号所标识的语句。
goto语句通常与前提语句合营运用。可用来完成前提转移, 构成轮回,跳出轮回体等遵从。
但是,在结构化步伐料理中一样伟大不主张运用goto语句, 以免构成步伐流程的混乱,使熟悉探询和调试步伐都发生艰难。
统计从键盘输出一行字符的个数。
#include"stdio.h"
void main(){
int n=0;
printf("input a string\n");
loop: if(getchar()!='\n')
{ n ;
goto loop;
}
printf("%d",n);
}
本例用if语句和goto语句构成轮回结构。当输出字符不为'\n'时即实行n 举行计数,然后转移至if语句轮回实行。直至输出字符为'\n'才停止轮回。

break语句

break语句只能用在switch 语句或轮回语句中, 其劝化是跳出switch语句或跳出本层轮回,转去实行前面的步伐。由于break语句的转移标的目的是相识的,以是不需求语句标号与之合营。break语句的一样伟大体式款式为: break; 上面例题中区分在switch语句和for语句中运用了break 语句作为跳转。运用break语句可以使轮回语句有多个出口,在一些场合下使编程愈加迅速、随意。

continue语句

continue语句只能用在轮回体中,其一样伟大花样是:
continue;
其语义是:终了本次轮回,即不再实行轮回体中continue 语句之后的语句,转入下一次轮回前提的判别与实行。应注重的是, 本语句只终了本层本次的轮回,并不跳出轮回。
void main(){
int n;
for(n=7;n<=100;n )
{
if (n%7!=0)
continue;
printf("%d ",n);
}
}
输出100以内能被7整除的数。
int n;
for(n=7;n<=100;n )
{
if (n%7!=0)
continue;
printf("%d ",n);
}
本例中,对7~100的每一个数举行测试,如该数不克不及被7整除,即模运算不为0,则由continus语句转去下一次轮回。只需模运算为0时,才干实行前面的printf语句,输出能被7整除的数。
#include"stdio.h"
void main(){
char a,b;
printf("input a string:\n");
b=getchar();
while((a=getchar())!='\n'){
if(a==b){
printf("same character\n");
break;
}b=a;
}
}
反省输出的一行中有无相邻两字符不异。
char a,b;
printf("input a string:\n");
b=getchar();
while((a=getchar())!='\n'){
if(a==b){
printf("same character\n");
break;
}b=a;
}
本例步伐中,把第一个读入的字符送入b。然落伍入轮回,把下一字符读入a,比拟a,b能否相等,若相等则输出提示串并间断轮回,若不相等则把a中的字符赋予b,输出下一次轮回。
输出100以内的素数。素数是只能被1 和自己整除的数。可用穷举法来判别一个数能否是素数。
void main(){
int n,i;
for(n=2;n<=100;n ){
for(i=2;i<n;i )
if(n%i==0) break;
if(i>=n) printf("\t%d",n);
}
} int n,i;
for(n=2;n<=100;n ){
for(i=2;i<n;i )
if(n%i==0) break;
if(i>=n) printf("\t%d",n);
}
本例步伐中,第一层轮回暗示对1~100这100个数逐一判别能否是素数,共轮回100次,在第二层轮回中则对数n用2~n-1逐一去除,若某次除尽则跳出该层轮回,分析不是素数。 要是在全部的数都是未除尽的环境下终了轮回,则为素数,此时有i>=n, 故可经此判别后输出素数。然后转入下一次大轮回。实践上,2以上的全部偶数均不是素数,因此可以使轮回变量的步长值改为2,即每次增加2,此外只需对数n用2~n去除就可判别该数能否素数。如许把大大增加轮回次数,增加步伐运转时分。
#include"math.h"
void main(){
int n,i,k;
for(n=2;n<=100;n =2){
k=sqrt(n);
for(i=2;i<k;i )
if(n%i==0) break;
if(i>=k) printf("\t-",n);
}
}


版权声明: 原创作品,赞同转载,转载时请务必以超链接体式款式标明文章 原始来由 、作者信息和本声明。否则将穷究规律责任。

原文地址:https://www.cnblogs.com/zgqjymx/p/1975615.html