c语言控制语句-辅助循环语句
1. break语句
用于从循环体内跳出循环体,即提前结束循环。break只能用在循环语句和switch语句中。
练习:求素数(在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数)
#include <stdio.h>
#include <math.h>
int main()
{
int i,n,tmp;
printf("请输入一个大于三正整数:");
scanf("%d",&n);
tmp=sqrt(n);
for(i=2;i<=tmp;i++)
{
if(n%i==0)
break;
}
if(i<=tmp)
printf("NO\n");
else
printf("YES\n");
return 0;
}
2. continue语句
结束本次循环,接着判定下一次是否执行循环。
注意:continue与break的区别:continue直结束本次循环,而break终止本层循环
练习:对判断素数的程序进行完善,若用户输入的不是整数,重新输入。
首先要判断用户输入的是不是整数,scanf(“格式控制串”,地址表)的返回值有两种情况,如果输入的地址表的数据类型和格式控制符一致就返回1,不一致就返回0。
当运行的时候,输入一个字母然后回车程序进入了死循环,并没有让自己再次重新输入。这是因为当我们输入一个数据时,这个数据会被放到一个叫做输入缓冲区的里面,(当这个缓冲区里面没有数据时会进入休眠状态)。然后按下回车系统准备在输入缓冲区取走数据时发现是一个字母时不会取走,然后再次循环后因为这个缓冲区已经有一个数据了,所以并不会提醒用户输入,而是会直接取走这个值,但是取走的时候会发现这个数据并不是自己要的类型,这个值不会被取走。然后程序会继续前面的操作最后进入死循环。
加一个getchar()就可以了。
对代码再优化一下
#include <stdio.h>
#include <math.h>
int main()
{
int i,n,tmp,ch;
while(1)
{
printf("请输入一个大于三正整数:");
if(scanf("%d",&n)==0)
{
if((ch=getchar())=='@')
break;
printf("输入错误请重新输入\n");
continue;
}
tmp=sqrt(n);
for(i=2;i<=tmp;i++)
{
if(n%i==0)
break;
}
if(i<=tmp)
printf("NO\n");
else
printf("YES\n");
}
return 0;
}
continue与break
continue直结束本次循环,而break终止本层循环。
continue是循环控制语句,不能实现跳出条件语句if、switch。
总结:break、continue区别
解决方法:
1)break语句
用于从循环体内跳出循环体,即提前结束循环。
break只能用在循环语句和switch语句中.
2)continue语句
结束本次循环,接着判定下一次是否执行循环。
3)continue与break的区别:
continue直结束本次循环,而break终止本层循环.
continue不能在判断语句里用,break语句可以在判断语句里使用;
3. return语句
eturn语句的一般形式: return ( 表达式> )
主要用于终止包含它的函数的执行
若终止的为主函数,则主程序结束
return 表达式的结果可以被返回到调用函数接收存储。
return的值一般有以下几种含义:
1.函数是否正常执行的反馈
库函数常用0表示正常结束,非0有异常情况。
2.函数需要返回一个运算结果值
根据定义的返回值类型,存储、返回值。 传值要注意类
型一致,或主动强制转换。