PTA-练习2

目录

实验4-1-5 统计素数并求和

实验4-1-8 求给定精度的简单交错序列部分和

实验4-1-9 猜数字游戏

实验4-1-10 兔子繁衍问题

实验4-1-11 高空坠球

实验4-1-12 黑洞数


实验4-1-5 统计素数并求和

//实现一个函数,int su(int n);如果n是素数,则返回这个素数;如果不是则返回0;
//注意:素数的定义:大于1的自然数,只有1和本身是因数(两个因数)的数才是素数。
//1不是素数

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>

int su(int n){
    if(n==1){
        return 0;
    }
    for(int i=2;i<n;i++){
        if(n%i==0){//2~n-1之间有其他因数
            return 0;
        }
    }
    return n;
    
}
int main(){

    int M,N;
    int sum=0,num=0;
    scanf("%d %d",&M,&N);

    for(int i=M;i<=N;i++){
        if(su(i)){//i是素数
            num++;
            sum=sum+i;
        }
    }
    printf("%d %d",num,sum);
    return 0;
}

实验4-1-8 求给定精度的简单交错序列部分和

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>

//每一位=1/(3*n-2)*pow(-1,n-1);1/(3*n-2)*pow(-1,n-1)
int main(){

    double eps;
    scanf("%lf",&eps);
    double num,sum=0.0;
    int n=1;
    num=1.0;
    if(eps>1){
        sum=1.0;
        printf("sum = %.6lf",sum);
    }else{
        while(fabs(num)>=eps){//浮点数的绝对值fabs

        sum=sum+num;
        n++;
        num=1.0/(3*n-2)*pow(-1,n-1);
        
    }
        
    printf("sum = %.6lf",sum);
    }
    
    return 0;
}

实验4-1-9 猜数字游戏

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>

//第一眼,卧槽好复杂a
//第二眼,分好类
int main(){

    int x,N;
    scanf("%d %d",&x,&N);
    int num,sum=0;
    int i;
    for(i=1;i<=N+1;i++){
        scanf("%d",&num);
        if(num<0||i==1+N){
            i=-1;
            printf("Game Over\n");
            break;
        }else{

            if(num>x){
                printf("Too big\n");
            }else if(num<x){
                printf("Too small\n");
            }else{
                break;
            }
        }
        
    }
    if(i==1){
        printf("Bingo!\n");
    }else if(i>1&&i<=3){
        printf("Lucky You!\n");
    }else if(i>3&&i<=N){
        printf("Good Guess!\n");
    }
    
    return 0;
}

实验4-1-10 兔子繁衍问题

//1.先长两个月,然后每月生一对兔子。
//2.然后计算后面每个月可以生几对兔子
//第1,2个月还在长大总数:1
//第3个月:1+1//出生1,总个数:2
//第4个月:1+1+1//出生1   总个数:3
//第5个月:1+1+1+2//出生2  总个数:5
//第6个月:1+1+1+2+3//出生3 总个数:8
//第7个月:1+1+1+2+3+5//出生5  总个数:13
//第8个月:1+1+1+2+3+5+8//出生8  总个数:21
//规律就是:啥

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
//实现一个函数,返回对应月数的兔子总数

int sum(int n){
    if(n==1||n==2){
        return 1;
    }
    return sum(n-1)+sum(n-2);
}
int main(){

    int N;
    scanf("%d",&N);
    int month=1;

    while(sum(month)<N){
        month++;
    }
    
    printf("%d",month);
    return 0;
}

实验4-1-11 高空坠球

//第一次落地:33
//第二次落地:16.5+16.5=33
//第三次落地:16.5
//第四次:8.25
//第五次:4.125,谈起高度:2.06
//第n次谈起高度:h/pow(2,n+1)

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
int main(){
    double h,n;
    scanf("%lf %lf",&h,&n);
    
    double hn=h/pow(2,n);
    double s=0.0;
    if(n==0){
        s=0;
        h=0;
        printf("%.1lf %.1lf",s,h);
    }else{
        for(int i=1;i<=n;i++){
            if(i==1){
                s=h*1.0;
            }else{
                s=h+s;
                h=h/2;
            }
        }
        printf("%.1lf %.1lf",s,hn);
    }//of if-else
    
    return 0;
}

实验4-1-12 黑洞数


//实现一个函数:输入三位数,返回重排差
int cha(int n){
    int a=n/100;
    int b=n%100/10;
    int c=n%10;
    int max,min,mid;
    if(a>b&&a>c){
        max=a;
        if(b>c){
            mid=b;
            min=c;
        }else{
            min=b;
            mid=c;
        }
    }
    if(b>a&&b>c){
        max=b;
        if(a>c){
            mid=a;
            min=c;
        }else{
            min=a;
            mid=c;
        }
    }
    if(c>b&&a<c){
        max=c;
        if(b>a){
            mid=b;
            min=a;
        }else{
            min=b;
            mid=a;
        }
    }
    int zhi=100*max+10*mid+min-(100*min+10*mid+max);
    printf("%d - %d = %d\n",100*max+10*mid+min,100*min+10*mid+max,zhi);
    return zhi;
}

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
int main(){

    int N;
    scanf("%d",&N);
    int i=1;
    if(N==495){
        printf("1: 954 - 459 = 495");
    }
    while(N!=495){
        printf("%d: ",i);
        N=cha(N);
        i++;
    }
    
    return 0;
}
#include<stdio.h>
void sort(int *a,int *b,int *c){
	if(*a>*b){
 		int t=*a;
 		*a=*b;
 		*b=t;
	}
	if(*b>*c){
	 	int t=*b;
	 	*b=*c;
	 	*c=t;
	}
	if(*a>*b){
 		int t=*a;
 		*a=*b;
 		*b=t;
	}
 }//冒泡排序
int main()
{
	int num,cnt=0;
	scanf("%d",&num);
	do{
		int a=num/100;
		int b=num%100/10;
		int c=num%10;
		sort(&a,&b,&c);
		int min=a*100+b*10+c;
		int max=c*100+b*10+a;
		num=max-min;
		cnt++;
		printf("%d: %d - %d = %d\n",cnt,max,min,num);
	}while(num!=495&&num!=0);
	return 0;
 } 
 

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

西柚小萌新

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值