您的位置:首页 > 编程语言 > C语言/C++

C++第七次实验-素数和回文

2016-06-02 16:07 316 查看
一、上机目的

掌握函数的应用

二、问题及代码

编制2个返回值为int型的函数,用于判断参数是否为素数和回文,调用函数回答以下问题

(1)输出300以内的所有素数。

(2)输出300以内的所有回文数。

(3)输出300以内的所有回文素数。

(4)若一个素数的反序数仍为素数,则称它为可逆素数。求300以内的所有可逆素数。
/*
* 文件名称:素数和回文
* 作    者:  吴奇峰
* 完成日期:  2016  年  6  月  2 日
* 版 本 号:v1.0
* 对任务及求解方法的描述部分:函数、循环、数组。
* 输入描述: 无
* 问题描述: 求素数、回文数、回文素数、可逆素数
* 程序输出: 输出300以内所有素数、回文数、回文素数、可逆素数
* 问题分析: 略
* 算法设计: 略
*/
#include<iostream.h>
int sushu(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 huiwenshu(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=sushu(i);                                  //取素数标记
h=huiwenshu(i);                              //取回文数
g=sushu(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
=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;
}
三、运行结果



四、知识点总结

函数的传值调用和引用调用

五、心得体会

感觉前面循环和数组的知识非常重要也非常有用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: