break和return

声明:这些内容主要是面向C语言的初学者,尤其是正在学习C语言的学生。

 

    在C语言中,break语句有两个作用:一是终止switch语句,二是终止循环语句。return语句也是两个作用:一是返回值,二是终止函数的执行。在上课的过程中,发现有些同学对这两个语句的使用还不是很熟练。本文以求两个正整数的最小公倍数为例,学习break和return语句的使用。

例:编写求两个正整数的最小公倍数的函数,在主函数中调用该函数。

    下面是一位同学写的程序:


#include "stdio.h"

int lowestCommonMultiple( int m,int n)
{
	int i,result;
	for(i=1;i<=m*n;i++)
	{
		if(i%m==0 && i%n==0) 
		{
			result=i;
		}
	}
	return result;
}

int main()
{	
	int num1,num2,result;
	printf("please input two numbers:");
	scanf("%d%d",&num1,&num2);
	result=lowestCommonMultiple(num1,num2);
	printf("the number is %d",result);
	return 0;
}

    这个程序运行结果有错误。不管num1和num2的值为多少,每次结果都是num1和num2的乘积。我们分析一下错误的原因,两个正整数的公倍数可能有很多个,用穷举法从1到n*m去测试,当找到第一个能同时被n和m整除的数时,该数即为n和m的最小公倍数,这时候就应该停止测试。上面的程序就错在没有停止测试,虽然可能已经找到了最小公倍数,并且赋值给了result,但是后面发现的公倍数会覆盖已经找到的最小公倍数。在1到n*m之间,最后一个公倍数一定是n*m,它会覆盖前面发现的公倍数,所以,每次的结果都是n*m。

    穷举测试时用for循环来实现的,要停止测试,就应该在发现第一个能同时被n和m整除的数时,终止for循环的执行,这可以用break来实现。下面的程序是修改后的程序,在if语句中加上了break。


#include "stdio.h"

int lowestCommonMultiple( int m,int n)
{
	int i,result;
	for(i=1;i<=m*n;i++)
	{
		if(i%m==0 && i%n==0) 
		{
			result=i;
			break;
		}
	}
	return result;
}

int main()
{	
	int num1,num2,result;
	printf("please input two numbers:");
	scanf("%d%d",&num1,&num2);
	result=lowestCommonMultiple(num1,num2);
	printf("the number is %d",result);
	return 0;
}

 

    在这个例子中,当我们找到了最小公倍数以后,需要终止for循环,然后返回这个数,这时函数也结束执行。for循环终止后,除了return语句也没有别的语句要执行。这种情况下,我们完全可以用return语句来替代break的功能。下面的程序是对学生写的程序的第二种修改:


#include "stdio.h"

int lowestCommonMultiple( int m,int n)
{
	int i,result;
	for(i=1;i<=m*n;i++)
	{
		if(i%m==0 && i%n==0) 
		     return i;
	}
	
}

int main()
{	
	int num1,num2,result;
	printf("please input two numbers:");
	scanf("%d%d",&num1,&num2);
	result=lowestCommonMultiple(num1,num2);
	printf("the number is %d",result);
	return 0;
}

 

    lowestCommonMultiple函数中的return语句返回最小公倍数,同时终止函数的执行,当然也就终止了for循环,也就是说return语句也涵盖了break的作用。在编写函数时,return语句的这种用法是很常见的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值