一、问题及代码
项目1:素数和回文
编制2个返回值为int型的函数,用于判断参数是否为素数和回文,调用函数回答以下问题(请包括在一个main()函数中完成,输出时,用明显的提示语,说明正在完成哪个任务。)
(1)输出300以内的所有素数。
(2)输出300以内的所有回文数。
(3)输出300以内的所有回文素数。
(4)若一个素数的反序数仍为素数,则称它为可逆素数。求300以内的所有可逆素数。
/*
* 文件名称:略
* 作 者: 刘梦燕
* 完成日期: 2016 年 6 月 4日
* 版 本 号:v1.0
* 对任务及求解方法的描述部分:
* 输入描述:略
* 问题描述: 略
* 程序输出: 略
* 问题分析: 略
* 算法设计: 略
*/
#include<iostream.h>
int isPrimer(int n) //判断素数函数
{
for(int i=2;i<n;i++)
{
if(n%i==0) //判断是否能整除
break;
}
if(i==n) //若i==n,则之内整除1和其本身,为素数
return 1; //标记为1
else
return 0; //否则标记为0
}
int isPalindrome(int n) //生成回文数函数
{
int m=0;
while(n) //当n不等于0时执行循环
{
m=m*10+n%10; //m逐步进位
n/=10; //n除以10直到等于0
}
return m; //返回回文数
}
void main()
{
int i,j=0,k=0,m=0,n=0,s,h,g;
int a[100],b[100],c[100],d[100]; //定义四种情况的数组
for(i=2;i<=300;i++) //2~300依次判断
{
s=isPrimer(i); //取素数标记
h=isPalindrome(i); //除去回文数
g=isPrimer(h); //判断回文数是否为素数
if(s==1) //为素数,存入a数组
{
a[j]=i;
j++;
}
if(h==i) //为回文数,存入b数组
{
b[k]=i;
k++;
}
if(h==i&&s==1) //为回文素数,存入c数组
{
c[m]=i;
m++;
}
if(g==1&&s==1) //为可逆数组,存入d数组
{
d[n]=i;
n++;
}
}
cout<<"300以内所有素数为:"<<endl;
for(i=0;i<j;i++) //输出素数
cout<<a[i]<<" ";
cout<<endl;
cout<<"300以内所有回文数为:"<<endl;
for(i=0;i<k;i++) //输出回文数
cout<<b[i]<<" ";
cout<<endl;
cout<<"300以内所有回文素数为:"<<endl;
for(i=0;i<m;i++) //输出回文素数
cout<<c[i]<<" ";
cout<<endl;
cout<<"300以内所有可逆素数为:"<<endl;
for(i=0;i<n;i++) //输出可逆素数
cout<<d[i]<<" ";
cout<<endl;
}
二、运行结果
三、心得与体会
函数这一章老师上的很快,我要及时做好课后的复习
四、知识点总结
函数的传值调用和引用调用