第一题:
#include <stdio.h>
double fun(double x,int n){
if(n==0) return 1;
else if(n==1) return x;
else return x*fun(x,n-1);
}
int main(){
printf("请输入实数x和整数n,计算x的n次方:");
double x,s;
int n;
scanf("%lf%d",&x,&n);
s=fun(x,n);
printf("x=%lf,n=%d时s=%lf\n",x,n,s);
return 0;
}
第二题:
#include <stdio.h>
int main(){
int card[53];//1-52代表卡片
int i,j;
for(i=1;i<=52;i++) card[i]=1;
for(i=2;i<=52;i++){
for(j=2;j<=52;j++){
if(j%i==0){
if(card[j]==0) card[j]=1;
else card[j]=0;
}
}
}
printf("正面朝上的扑克是:\n");
for(i=1;i<=52;i++){
if(card[i]==1) printf("%5d",i);
}
return 0;
}
第三题:
#include <stdio.h>
#include <math.h>
int isprism(int n){
int i,j,k=sqrt(n);
for(i=2;i<=k;i++){
if(n%i==0) break;
}
if(i>k) return 1;
else return 0;
}
int main(){
int i,j,k=0,a[300]={0};
FILE *fp;
for(i=2;i<=300;i++){
if(isprism(i)) a[k++]=i;
}
if((fp=fopen("prime.txt","w+"))==NULL){
printf("cannot open the file:\n");
return 0;
}
//写入文件;
for(i=0;i<k;i++){
fprintf(fp,"%5d",a[i]);
}
int max1,max2,count=0;//记录最大双胞胎数以及计数有多少对;
for(i=0;i<k-1;i++){
if(a[i+1]-a[i]==2){
count++;
max1=a[i];
max2=a[i+1];
}
}
printf("一共有%d对双胞胎数,最大的双胞胎数是%d和%d\n",count,max1,max2);
fclose(fp);
return 0;
}
第三题参考答案:
#include <stdio.h>
#include <stdlib.h>
#define MAX(a,b) ((a)>(b)?(a):(b))
int isPrime(int num){
int i;
if(num<2) return 0;
for(i=2;i<=(num/2);i++){
if(num%i==0) return 0;
}
return 1;
}
int main(){
FILE *fp=fopen("prime2.txt","w+");
int sval=2,eval=300,cnt,cv,prime=3,max1,max2;
cnt=0;
cv=sval;
for(;cv<=eval;){
if(isPrime(cv)){
fprintf(fp,"%d\n",cv);
if(cv-prime==2){
printf("%d&%d\n",prime,cv);
max1=prime;
max2=cv;
cnt++;//数量+1;
}
prime=cv;
}
if(cv&1) cv+=2;
else cv++;
}
printf("总对数有:%d\n",cnt);
printf("最大的双胞胎数为:%d&%d",max1,max2);
fclose(fp);
return 0;
}
欢迎各位网友批评指正!