第一题:
#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 ",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("正面朝上的扑克是: "); 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: "); 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 ",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 ",cv); if(cv-prime==2){ printf("%d&%d ",prime,cv); max1=prime; max2=cv; cnt++;//数量+1; } prime=cv; } if(cv&1) cv+=2; else cv++; } printf("总对数有:%d ",cnt); printf("最大的双胞胎数为:%d&%d",max1,max2); fclose(fp); return 0; }
欢迎各位网友批评指正!