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

欢迎各位网友批评指正! 

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

欲游山河十万里

你的鼓励是我们创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值