初识函数调用(2)

        昨天学习了函数调用,今天继续深入学习敲函数调用的内容。一方面了解了被调函数和主函数的位置关系及如何声明,另一方面学习了递归函数的使用方法。

练习一道函数调用的题      

         首先了解题目要求。在主函数内实现输入数的功能,交由被调函数进行运算输出结果。

#include <stdio.h>
void p(int x);
 
int main()
{
	int a;
	printf("请输入一个数:\n");
	scanf("%d",&a);
	p(a);
	
	return 0;
}

void p(int x)
{
	int y;
	
	for(y=2;y<x;y++)
	{
		if(x%y!=0)
		{
			printf("这个数是素数。\n");
			break;	
		}
		else
		{
			printf("这个数不是素数。\n");
			break;
		}
	}

}

         这是我最开始写的内容,主函数直接调用无返回值的被调函数,实现主函数输入,被调函数输出的功能。然而这段代码运行的结果是偶数都是合数,奇数都是素数。经过printf的打印排查,是判断条件出现了问题。

#include <stdio.h>
void p(int x);
 
int main()
{
	int a;
	printf("请输入一个数:\n");
	scanf("%d",&a);
	p(a);
	
	return 0;
}

void p(int x)
{
	int y;
	
	for(y=2;y<x;y++)
	{
		if(x%y==0)
		break;
	}
	 	if(y<x)
		   printf("这个数不是素数。\n");	
		else
			printf("这个数是素数。\n");

}

素数的判断条件是因数只有1和它本身,那么在循环内先进行合数判断,如果x%y==0,那么意味着从1-x的范围内,有一个数y可以被x整除。所以在for循环内如果出现了一个数y能被x整除,那么就会跳出循环此时,y是<x的,所以在判断语句中当y<x时,输入的数不是素数。跳出循环的第二个条件是,当y++无法满足y<x这个条件时,也会终止循环。所以当y>=x时,循环结束。也意味着循环内没有一个数能被x整除,所以此时的x就是素数。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值