![]() ![]() |
|
二级C语言考试辅导教程第三章:C语言程序设计初步[7] | |
作者:佚名 文章来源:不详 点击数 更新时间:2008/4/18 13:58:05 文章录入:杜斌 责任编辑:杜斌 | |
|
|
程序中的语句通常总是按顺序方向, 或按语句功能所定义的方向执行的。如果需要改变程序的正常流向, 可以使用本小节介绍的转移语句。在C语言中提供了4种转移语句: 1.goto语句 goto语句也称为无条件转移语句,其一般格式如下: goto 语句标号; 其中语句标号是按标识符规定书写的符号, 放在某一语句行的 break语句 break语句只能用在switCh 语句或循环语句中, 其作用是跳出switCh语句或跳出本层循环,转去执行后面的程序。由于break语句的转移方向是明确的,所以不需要语句标号与之配合。break语句的一般形式为: break; 上面例题中分别在switCh语句和for语句中使用了break 语句作为跳转。使用break语句可以使循环语句有多个出口,在一些场合下使编程更加灵活、方便。 Continue语句 Continue语句只能用在循环体中,其一般格式是:
本例中,对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 if(i>=n) printf("\t%d",n); } } int n,i; for(n=2;n<=100;n++){ for(i=2;i 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 if(i>=k) printf("\t-",n); } } |
|
![]() ![]() |