VC课程设计—判断可逆素数
编号:14
计算机软件技术基础(VC)
2011年课程设计报告
一、题目:设计一个判断某数是否为可逆素数的程序 二、设计思路
1总体设计
1)分析程序的功能
通过此程序可判断一个数字是否为可逆素数
2)系统总体结构
本程序总共用到了3个文件
1、myfunction.h 作用是:
(1)获得逆序数,通过函数int Reverse(int inNum);
(2)判断是否为素数,通过bool isPrime(int inNum);
2、myfunction.cpp 作用是:实现上述两个函数。
3、Main.cpp通过调用myfunction.h中的两个函数,从而形成一个判断可逆素数的函数void
ReversePrime.()。
1
编号:14
2 各功能模块的设计
所用到的函数有:
1、int Reverse(int inNum);用来获得逆序数。实现方法是:从整数的末尾依次截取最后一位数字,每截取一次后整数缩小10倍,将截取的数字作为新的整数的最后一位(新的整数扩大10倍后加上被截取的数字)。这样原来的整数的数字从低到高被不断地截取,依次作为新的整数从高到低的各位数字 2、bool isPrime(int inNum); 用来判断数inNum是否为素数。实现方法是:遍历2以上N的平方根以下的每一个整数,是不是能整除N。若能整除,返回false,即不是素数;若遍历完没有数能整除,则返回false,N是素数。
3、void ReversePrime.(); 用来判断可逆素数。实现方法是:用户输入某4位数,若既满足isPrime又满足reverse,则为可逆素数。
4、void main();实现程序功能。通过main函数将上述函数组织起来,并有是否继续输入新的4位数等功能。
3、设计中的主要困难及解决
1)困难1:判断一个四位数是否为素数
解决方案:遍历2以上N的平方根以下的每一个整数,是不是能整除N。若能整除,返回false,即不是素数;若遍历完没有数能整除,则返回false,N是素数。
2)困难2:求一个整数的反序数
解决方案:求反序数的方法是从整数的末尾依次截取最后一位数字,每截取一次后整数缩小10倍,将截取的数字作为新的整数的最后一位(新的整数扩大10倍后加上被截取的数字)。这样原来的整数的数字从低到高被不断地截取,依次作为新的整数从高到低的各位数字。
4、你所设计的程序最终完成的功能
1)说明你编制的程序能完成的功能:输入一个数字,判断其是否为一个四位可逆素数;
2)准备的测试数据及运行结果:
2
编号:14
三、程序清单
1(文件myFunction.h
//获得逆序数
int Reverse(int inNum); //判断是否为素数
bool isPrime(int inNum); //myFunction.cpp
#include
#include
int Reverse(int inNum) { int res=0;
char ch[4]={0};
//倒序
for (int i=0; inNum!=0; i++)
{
ch[i] = inNum%10;
inNum /= 10;
}
//类型转换
res = atoi(ch);
return res;
}
bool isPrime(int inNum) {
bool primes;
for(int i=2; i<=sqrt(inNum+1); i++)
3
编号:14
{
if(inNum%i == 0)
{
primes=false;
break;
}
else
primes=true;
}
return primes;
}
2(文件main.cpp
#include #include "myFunction.h" void ReversePrime(); void main()
{
ReversePrime();
char i;
cin>>i;
while(i=='1')
{ ReversePrime();
cin>>i;
}
}
void ReversePrime()
{
int inNum=0;
cout<<"请输入要判断的4位数:";
cin>>inNum;
//对输入进行判断
while ((inNum/1000)>=10||(inNum/1000)==0)
{
cout<<"您输入的不是4位数,请重新输入."<>inNum;
}
//判断是否为可逆素数
if (isPrime(inNum) && isPrime(Reverse(inNum)))
cout<心得体会
C++的学习,已经有一个学期了,许多知识都存在似懂非懂的现象,这种现象通过这次课程设计,已经减少了许多问题。对这些不明白的知识也有了更深的理解和很好的掌握。有些理论上说得过去的代码,到了实际操作,却是行不通的。这种困惑,在这次的设计中得到了解决,并能够深刻认识。我觉得写程序,应该先找到该程序中的核心地方,用多种方法来实现该核心,这才可能避免逻辑上或者编译器不支持上的错误。这样花费大量时间在改程序上是很不值得的。实践是检验真理的唯一
,这句话很正确,如果没有实践,就不会发现和深刻体会它的真实所在。只有通过检验的真理,在自己的心里,才会认可它的真实性。面向对象程序设计的完成,使我们懂得了真理的重要性,理论和实际的相结合,才能真正把握所学和所掌握的知识。感谢老师的指导和帮助,您们辛苦了~
埋头苦干的过程是苦涩的,在书山中查找资料的过程是疲倦的,但当课程设计完成时,那感觉是甜蜜的,没有耕耘,哪来得收获的喜悦,不懂付出怎么能知道回报的快乐,一分耕耘一分收获,有付出才会有回报,就在这样的痛与快乐的交换中,我学到了知识,学到了道理,学到了做人的道理。 总之,在这次的课程设计过程中,我收获了很多,既为我的以后学习设计有很大的帮助,也为将来的人生之路做好了一个很好的铺垫。
5