1. | 满足条件的素数 【问题描述】寻找n以内符合特定条件的素数。各位之和依然为素数的数 【输入形式】一个大于1的正整数n |
---|
代码如下
#include<bits/stdc++.h>
using namespace std;
int he(int x)
{
int s=0;
while(x)
{
s+=x%10;
x/=10;
}
return s;
}
int judge(int x)
{
int i;
for(i=2;i<x;i++)
if(x%i==0) break;
if(i==x) return 1;
else return 0;
}
int main()
{
int n,i,j,k;
cin>>n;
for(i=2;i<=n;i++)
{
if(judge(i)&&judge(he(i))) cout<<i<<' ';
}
return 0;
}
【问题描述】寻找n以内的亲密数对。如果a的所有正因子和等于b,b的所有正因子和等于a,因子包括1但不包括本身,且a不等于b,则称a,b为亲密数对。
【输入形式】一个正整数n
【输出形式】1-n之间的亲密数对,每行输出一对
【样例输入】300
【样例输出】220<-->284
【样例说明】
【评分标准】
代码如下
#include<bits/stdc++.h>
using namespace std;
int a[30000]={0};
int main()
{
int n;
cin>>n;
int i,j,sum;
for(i=1;i<=n;i++)
{
sum=0;
for(j=1;j<i;j++)
{
if(i%j==0) sum+=j;
}
a[i]=sum;
}
for(i=1;i<=n;i++)
{
for(j=i+1;j<=n;j++)
{
if(a[i]==j&&a[j]==i&&i<j)
{
cout<<i<<"<-->"<<j<<endl;
break;
}
}
}
return 0;
}
3. | 鸡兔同笼 【问题描述】已知鸡和兔的总数量为n,总腿数为m。输入n和m,依次输出鸡和兔的数目,如果无解,则输出“No answer”(不要引号)。 【输入形式】第一行输入一个数据a,代表接下来共有几组数据,在接下来的(a<10) 【输出形式】输出鸡兔的个数,或者No answer 【样例输入】 2 14 32 10 16 【样例输出】 12 2 No answer 【样例说明】 |
---|
代码如下
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a[10][2];
int i,j,k,n,flag;
cin>>n;
for(i=0;i<n;i++)
cin>>a[i][0]>>a[i][1];
for(i=0;i<n;i++)
{
flag=0;
for(j=0;j<=a[i][0];j++)
{
k=a[i][0]-j;
if(j*2+k*4==a[i][1])
{
cout<<j<<' '<<k<<endl;
flag=1;
}
}
if(flag==0) cout<<"No answer"<<endl;
}
return 0;
}
4. | "水仙花数"问题 【问题描述】输出所有的"水仙花数".所谓"水仙花数"是指这样的一个三位数:其各位数字的立方和等于该数本身。例如:371是一个"水仙花数",371=3^3+7^3+1^3. 【输入形式】无 【样例输入】 |
---|
代码如下
#include <stdio.h>
#include <math.h>
int main()
{
int a,b,c,i;
for(i=100;i<=999;i++){
a=i%10;
b=i/10%10;
c=i/100;
if(i==pow(a,3)+pow(b,3)+pow(c,3)){
printf("%d ",i);
}
}
printf(" ");
return 0;
}
5. | 乘积尾数0的个数 题目描述对于以下10个数: 1,2,3,4,5,6,7,8,9,10 他们的乘积为3628800,它的尾数有两个连续的0。 现在给你十个10000以内(含)的整数,求他们的积的尾数有几个连续的零。 输入10个正整数,每一个数不超过10000,每个数之间用空格隔开。 输出一个整数,表示十个数乘积结尾有几个连续的0。 样例输入1 2 3 4 5 6 7 8 9 10 样例输出2 |
---|
代码如下
#include<stdio.h>
int main()
{
int a[10],i,c1=0,c2=0;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
{
while(a[i]%2==0)
{
c1++;
a[i]/=2;
}
while(a[i]%5==0)
{
c2++;
a[i]/=5;
}
}
if(c1>c2) printf("%d",c2);
else printf("%d",c1);
}
6. | 3个数的最大公约数 题目描述请计算并输出给定的3个数的最大公约数。 三个数的最大公约数为能够整除这三个数的最大值。 如 3,6,9 的最大公约数为3。 输入3个整数,以空格隔开。每个数的范围均在int型范围之内 输出一个整数,即所求的输入三个数的最大公约数 样例输入3 6 9 样例输出3 |
---|
代码如下
#include<bits/stdc++.h>
using namespace std;
int judge(int m,int n)
{
int r=m%n;
while(r)
{
r=m%n;
m=n;
n=r;
}
return m;
}
int main()
{
int a,b,c,j,k;
cin>>a>>b>>c;
j=judge(a,b);
k=judge(j,c);
cout<<k;
return 0;
}
7. | 【循环】【字符】C语言程序设计教程(第三版)课后习题9.10 输入一行电报文字,将字母变成其下一字母(如’a’变成’b’……’z’变成’a’其它字符不变)。 a b
b c |
---|
代码如下
#include<bits/stdc++.h>
using namespace std;
int main()
{
string a;
getline(cin,a);
int gg=a.size();
int i,j,k,b[gg];
for(i=0;i<gg;i++)
{
if(a[i]>='A'&&a[i]<='Y'||a[i]>='a'&&a[i]<='z') a[i]=a[i]+1;
else if(a[i]=='Z'||a[i]=='z') a[i]-=25;
}
cout<<a;
return 0;
}