c语言控制语句3

 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.函数需要返回一个运算结果值

根据定义的返回值类型,存储、返回值。 传值要注意类

型一致,或主动强制转换。

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学习嵌入式学习每一天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值