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復習》

歡迎各位網友批評指正! 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM