2019年江苏大学885编程大题

 

 第一题:

#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;
} 

 收录于《考研计算机885复习》

欢迎各位网友批评指正! 

 

posted @ 2020-10-06 23:52  薄眠抛却陈年事。  阅读(579)  评论(0编辑  收藏  举报