若将某一素数的各位数字的顺序颠倒后得到的数仍是素数,则此素数称为可逆素数。
#include <stdio.h>
#include <math.h>
int getrnum(int num){
int rnum=0;
do{
rnum *= 10;
rnum = rnum + num%10;
}while((num/=10)!=0);
return rnum;
}
int sushu(int num){
int i,k;
k = (int)sqrt((double)num);
for(i=2;i<=k;i++){
if(num%i==0)
break;
}
if(i<k)
return 0;//返回值为0表示不为素数
else
return 1;
}
void keni(int num){
int flag,rnum;
flag = sushu(num);
if(flag == 0)
printf("no\n");
else{
rnum = getrnum(num);
flag = sushu(rnum);
if(flag == 0)
printf("no\n");
else
printf("yes\n");
}
}
int main(){
int num,rnum;
scanf("%d",&num);
keni(num);
getchar();
return 0;
}
在不知道位数的情况下得到一个整数的逆序数。
int getrnum(int num){
int rnum=0;
do{
rnum *= 10;
rnum = rnum + num%10;
}while((num/=10)!=0);
return rnum;
}
判断某整数是否为素数。
//头文件<math.h>
int sushu(int num){
int i,k;
k = (int)sqrt((double)num);
for(i=2;i<=k;i++){
if(num%i==0)
break;
}
if(i<k)
return 0;//返回值为0表示不为素数
else
return 1;
}
运用数组,可以取数字的每位数。
#include <iostream>
using namespace std;
int sum(int x)
{
int i=0,s[8],sum=0;
do
{
s[i++]=x%10;
}
while((x/=10)>0);
for(;i>0;i--)
sum+=s[i-1];
return sum;
}
int main()
{
int num;
cin>>num;
cout<<sum(num);
}
输入一个正整数n(1 <n≤10),再输入n 个整数,将最小值与第一个数交换,最大值与最后一个数交换,然后输出交换后的n 个数。
#include <iostream>
using namespace std;
int main()
{
int i,n;
int a[10];
cout<<"Input n: ";
cin>>n;
cout<<"Input "<<n<<" integers: ";;
for(i=0; i<n; i++)
{
cin>>a[i];
}
int s,p,j;
s=a[0];
p=0;
for(j=1; j<n; j++)
{
if(s<a[j])
{
s=a[j];
p=j;
}
}
a[p]=a[n-1];
a[n-1]=s;
s=a[0];
p=0;
for(j=1; j<n; j++)
{
if(s>a[j])
{
s=a[j];
p=j;
}
}
a[p]=a[0];
a[0]=s;
cout<<"After swapped: ";
for(i=0; i<n; i++)
{
cout<<a[i]<<" ";
}
return 0;
}
同构数是其平方数的尾数等于该数自身的自然数,例如:25×25=625。从键盘输入一个不大于10000的自然数,判断其是否是同构数并按样例格式输出。
#include <iostream>
using namespace std;
int main()
{
int a;
cin>>a;
int b=a*a-a;
int c=a,d=b;
while((c=c/10)!=0)
{
if(d%10!=0)
{
cout<<a<<" no,"<<a<<"*"<<a<<"="<<a*a;
return 0;
}
d=d/10;
}
if(d%10!=0)
cout<<a<<" no,"<<a<<"*"<<a<<"="<<a*a;
else
cout<<a<<" yes,"<<a<<"*"<<a<<"="<<a*a;
return 0;
}
将一个整数中的每一位上为奇数的数依次取出,构成一个新数并输出。高位仍在高位,低位仍在低位。
#include <iostream>
using namespace std;
void function(int x)
{
if(x==0)
return;
function(x/10);
if(x%2!=0&&x>0)
cout<<x%10;
else if(x%2!=0&&x<0)
cout<<-x%10;
}
int main()
{
int x;
cin>>x;
if(x>0)
function(x);
else
{
cout<<"-";
function(x);
}
}#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char s1[100],s2[10];
int i,j,k,len1,len2,b[10];
gets[s1];
gets[s2];
len1=strlen(s1);
len2=strlen(s2);
for(i=0,k=0; i<len1; i++)
{
for(j=0; j<len2; j++)
if(s1[i+j]!=s2[j])
break;
if(j>=len2)
b[k++]=i+1; //i从0开始计数的,所以位置是i+1
}
cout<<k<<endl; //k为s2在s1中出现的次数
for(i=0; i<k; i++)
cout<<b[i]<<" "; //返回s2在s1中的位置,可能有多个
cout<<endl;
return 0;
}
在一个字串s1中查找一子串s2,若存在则返回s1中s2的个数和位置。
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char s1[100],s2[10];
int i,j,k,len1,len2,b[10];
gets[s1];
gets[s2];
len1=strlen(s1);
len2=strlen(s2);
for(i=0,k=0; i<len1; i++)
{
for(j=0; j<len2; j++)
if(s1[i+j]!=s2[j])
break;
if(j>=len2)
b[k++]=i+1; //i从0开始计数的,所以位置是i+1
}
cout<<k<<endl; //k为s2在s1中出现的次数
for(i=0; i<k; i++)
cout<<b[i]<<" "; //返回s2在s1中的位置,可能有多个
cout<<endl;
return 0;
}
用exp(x)的泰勒级数前15项之和近似计算并输出exp(x)的值,实数x从键盘输入。级数表达式如下:
#include <iostream>
using namespace std;
int main()
{
float result=1,u=1,x;
int i=1;
cin>>x;
while(i<=14)
{
u=u*x/i;
result=result+u;
i++;
}
cout<<result;
}
从键盘输入一个正整数,将该数乘2的积按3位一逗的格式输出。
#include <stdio.h>
#include <stdlib.h>
main()
{
unsigned long n;
int a[10],i;
scanf("%ld",&n);
n*=2;
for(i=0; n>0; i++)
{
a[i]=n%1000;
n/=1000;
}
for(i--; i>=0; i--)
printf("%d%c",a[i],i!=0?',':' ');
}
输入一行文字,统计其中的大写字母、小写字母、空格、数字以及其他字符的个数。
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
char s[100],a;
int i,b,c,d,e,f;
i=0;
b=0;
c=0;
d=0;
e=0;
f=0;
cout<<"Input a string:";
gets(s);
while(s[i]!='\0')
{
a=s[i];
if(a>='A'&&a<='Z')
b=b+1;
else if(a>='a'&&a<='z')
c=c+1;
else if(a==' ')
d=d+1;
else if(a>='1'&&a<='9')
e=e+1;
else
f=f+1;
i=i+1;
}
cout<<"Number of uppercase letters is :"<<b<<endl;
cout<<"Number of lowercase letters is :"<<c<<endl;
cout<<"Number of spacebars is :"<<d<<endl;
cout<<"Number of digits is :"<<e<<endl;
cout<<"Number of other characters is :"<<f<<endl;
}
输入2个正整数a和n,求a+aa+aaa+aa…a(n个a)之和。
#include <iostream>
using namespace std;
int main()
{
int a,n,s=0;
cout<<"Input a, n: ";
cin>>a>>n;
while(n>=0)
{
s=a*n+s;
a=a*10;
n--;
}
cout<<"s="<<s<< endl;
return 0;
}
从键盘输入一个大于2的正整数n,求解并输出大小最接近n的素数(不包括n)。
#include <iostream>
#include <cmath>
using namespace std;
//判断素数
int isprime(int x)
{
int i;
if(x<2)
return 0;
for(i=2; i<sqrt(x); i++)
if(x%i==0)
return 0;
return 1;
}
int main()
{
int i,a,b,n;
cin>>n;
for(a=n+1; !isprime(a); a++); //不是素数就跳过,是素数就结束循环。
for(b=n-1; !isprime(b); b--);
if(a-n<n-b)
cout<<a<<endl;
else if(a-n==n-b)
cout<<a<<" "<<b<<endl;
else
cout<<b<<endl;
return 0;
}
除特别注明外,本站所有文章均为慕白博客原创,转载请注明出处来自https://cloud.tencent.com/developer/article/1176131