程序题(100分)
1、一组数,2/1,3/2,5/3,8/5,13/8…………,后一个数的分子是前一个数分子分母的和,后一个数的分母是前一个数前一个数的分子,编写程序,求前50个数的和(25分)
#include
#include
#define N 50
int main(){
int i,m=2,n=1;//m分子 n分母
int count=0;
double sum=0.0,temp=0.0;
for(i=0;i
2、如果一个素数,加2后还是素数,如(3,5),(11,13),则称为孪生素数对,编写程序,输出前20个孪生素数对(25分)
#include
#include
#include
#define N 20
int isprime(int n){
if(n<2){
return 0;
}
int i;
for(i=2;i<=sqrt(n);i++){
if(n%i==0){
return 0;
break;
}
}
return 1;
}
int main(){//如果一个素数,加2后还是素数,如(3,5),(11,13),则称为孪生素数对,编写程序,输出前20个孪生素数对(25分)
int i=0,j=2;//m分子 n分母
double sum=0.0,temp=0.0;
while(i!=N){
if(isprime(j)&&isprime(j+2)){
printf("%d:(%d,%d)\n",i+1,j,j+2);
i++;j++;
}
else{
j++;
}
}
return 0;
}
3、如果一个数A的约数和等于B,B的约数和等于A,则A和B友好,编写布尔型函数,参数为两个正整数,问两个数
是否友好(25分)
#include
#include
int main(){
int i,j;
int m,n;
int sum1,sum2;
while(scanf("%d%d",&m,&n)!=EOF)
{
sum1=0,sum2=0;
for(i=1;i<=m;i++)
{
if(m%i==0){
sum1+=i;
}
}
for(j=1;j<=n;j++){
if(n%j==0){
sum2+=j;
}
}
printf("%d--%d\n",sum1,sum2);
if(sum2==sum1){
printf("Friendless!");
}
else{
printf("No!");
}
}
return 0;
}
4、数组A的容量为200,里面存储了各种整数,编写函数(不必完整程序),输出以下内容:每一行有两个数,分别是A中存储的整数以及它在A中出现的次数,下一行是另一个数和出现的次数,依次输出(25分)
#include
#include
#include
#define N 100000
//数组A的容量为200,里面存储了各种整数,编写函数(不必完整程序),
//输出以下内容:每一行有两个数,分别是A中存储的整数以及它在A中出现的
//次数,下一行是另一个数和出现的次数,依次输出(25分)
int main(){//假设没个数大小都不超过100000
int i,j,m,n;
int A[10],array[N];
memset(A,0,sizeof(int)*10);
memset(array,0,sizeof(int)*N);
for(i=0;i<200;i++)
{
scanf("%d",&(A[i])) ;
array[A[i]]++;
}
for(j=0;j