如何在软件开发中合理的设计函数来解决实际问题
1. 一个函数的功能尽量独立,单一
2. 多学习,多模仿牛人的代码
举例:
输出从1~某个数(包括这个数)之间的素数
写法一:
#include <stdio.h>
int main()
{
int val;
int i,j;
scanf("%d",&val);
for(i=2;i<=val;i++)
{
//判断是否是素数,是输出,不是不输出
for(j=2;j<i;j++)
{
if(0==i%j)
break;
}
if(j==i)
printf("%d",i);
}
return 0;
}
二.写成函数:
include <stdio.h>
bool IsPrime(int m)//bool类型只表示真或假两种情况
{
int i;
for(i=2;i<m;i++)
{
if(m%i==0)
break;
}
if(i==m)
return true;
else return false;
}
int main()
{
int val;
int i;
scanf("%d",&val);
for(i=2;i<=val;i++)
{
if(IsPrime(i))
printf("%d",i);
}
return 0;
}
用1个函数来判断一个数字是否是素数
优点:
- 代码比写法一更容易理解
- 代码的重用性比写法一高
缺点:
- 可重用性仍然不是非常高
比如求1000个数字,它们每个数字从1到它们本身的素数
则:
for(i=2;i<=val;i++)
{
if(IsPrime(i))
printf("%d",i);
}
要写1000次
#include <stdio.h>
//本函数功能是把1到n之间所有的素数在显示器上输出
void TraverseVal(int n)
{
int i;
for(i=2;i<=n;i++)
{
if(IsPrime(i))
printf("%d",i);
}
}
//本函数的功能是判断m是否是素数,是就返回true,不是返回false
bool IsPrime(int m)//bool类型只表示真或假两种情况
{
int i;
for(i=2;i<m;i++)
{
if(m%i==0)
break;
}
if(i==m)
return true;
else return false;
}
int main()
{
int val;
int i;
scanf("%d",&val);
TraverseVal(val);
return 0;
}