C语言低级讲座之转移语句
当前位置:以往代写 > C/C++ 教程 >C语言低级讲座之转移语句
2019-06-13

C语言低级讲座之转移语句

C语言低级讲座之转移语句

副标题#e#

措施中的语句凡是老是按顺序偏向,或按语句成果所界说的偏向执行的。假如需要改变措施的正常流向,可以利用本小节先容的转移语句。在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);
} 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);
    }
}


#p#副标题#e#

输出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);
}

#p#分页标题#e#

本例措施中,第一层轮回暗示对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%2d",n);
    }
}

    关键字:

在线提交作业