pta乙级题1001--1014

  1. 害死人不偿命的(3n+1)猜想
#include<stdio.h>
int main()
{
    int num=0,step=0;
    scanf("%d",&num);
    while(num != 1)
    {
        if(0==num%2)
        {
            num=num/2;
        }
        else
        {
            num=3*num+1;
            num=num/2;
        }
        step++;
    }
   printf("%d",step);
}
  1. 写出这个数
#include<stdio.h>
int choose(int num)
{
	int a[10]={},count=0;
	while(num)
	{
		a[count++]=num%10;
		num /=10;
	}
	for(int i=count-1;i>=0;i--)
	{
		if(0 != i)
		{
			if(0==a[i])	printf("ling ");
			if(1==a[i])	printf("yi ");
			if(2==a[i])	printf("er ");
			if(3==a[i])	printf("san ");
			if(4==a[i])	printf("si ");
			if(5==a[i])	printf("wu ");
			if(6==a[i])	printf("liu ");
			if(7==a[i])	printf("qi ");
			if(8==a[i])	printf("ba ");
			if(9==a[i])	printf("jiu ");
		}
		else
		{
			if(0==a[i])	printf("ling");
			if(1==a[i])	printf("yi");
			if(2==a[i])	printf("er");
			if(3==a[i])	printf("san");
			if(4==a[i])	printf("si");
			if(5==a[i])	printf("wu");
			if(6==a[i])	printf("liu");
			if(7==a[i])	printf("qi");
			if(8==a[i])	printf("ba");
			if(9==a[i])	printf("jiu");
		}
	}
}
int str_to_int(char* str)
{
	int add=0;
	if(NULL==str) return 0;
	for(int i=0;str[i];i++)
	{
		add += str[i]-'0';
	}
	choose(add);
}
int main()
{
	char str[100];
	scanf("%s",str);
	str_to_int(str);
}
  1. 我要通过!
#include <stdio.h>
#include <string.h>
int main()
{
    char a[105];
    int i,j,n,len,P,A,T,x,y;
    scanf("%d\n",&n);
    for(i=0;i<n;i++)
    {
        gets(a);
        len=strlen(a);
        P = 0;
        A = 0;
        T = 0; 
        x= 0;
        y= 0;
        for(j=0;j<len;j++)
        {
            if(a[j]=='P')
            {
            	P++;
                x= j;
            }
            if(a[j]=='A')
            A++;
            if(a[j]=='T')
            {
                T++;
                y= j;
            }
        }
        if (P+A+T!=len||y-x<=1||P>1||T>1||x*(y-x-1)!=len-y-1)
            printf("NO\n");
        else
            printf("YES\n");
    }
} 

  1. 成绩排名
#include <stdio.h>
#include <string.h>
int main()
{
	int n;
	char maxname[20],maxid[20],minname[20],minid[20],t1[20],t2[20];
	int score=0,max=0,min=100;
	scanf("%d",&n);
	for (int i=0;i<n;i++)
	{
		scanf("%s%s%d",t1,t2,&score);
		if (score>max)
		{
			max=score;
			strcpy(maxname,t1);
			strcpy(maxid,t2);
		}
		if (score<min)
		{
			min=score;
			strcpy(minname,t1);
			strcpy(minid,t2);
		}
	}
	printf("%s %s\n%s %s",maxname,maxid,minname,minid);
}

  1. 继续(3n+1)猜想
#include<stdio.h>  
#include<string.h>  
int main()  
{  
  int a[100];  
  int b[100][100];  
  int i,j,k,n,q;  
  memset(b,0,sizeof(b));  
  scanf("%d\n",&n);  
  for(i=0;i<n;i++)  
  {  
    scanf("%d",&a[i]);  
  }  
  for(i=0;i<n;i++)  
  {  
    k=a[i];  
    j=0;  
    while(k!=1)  
    {  
      if(k%2==0)  
        k=k/2;  
      else  
        k=(3*k+1)/2;  
      b[i][j]=k;  
      j++;  
    }  
  }  
  for(i=0;i<n;i++)  
  {  
    for(j=0;b[i][j]!=0;j++)  
    {  
      for(q=0;q<n;q++)  
      if(a[q]==b[i][j])  
        a[q]=0;  
    }  
  }  
  for(i=0;i<n-1;i++)  
    for(j=i;j<n;j++)  
      if(a[i]<a[j])  
      {  
        int temp;  
        temp=a[i];  
        a[i]=a[j];  
        a[j]=temp;  
      }  
  for(i=0;i<n-1;i++)  
    for(j=i;j<n;j++)  
    {  
      if(a[i]==0&&a[j]!=0)  
      {  
        a[i]=a[j];  
        a[j]=0;  
      }  
    }  
    q=0;  
    for(i=0;i<n;i++)  
      if(a[i]>0)  
        q++;  
  for(i=0;i<q-1;i++)  
    if(a[i]>0)  
      printf("%d ",a[i]);  
    printf("%d",a[q-1]);  
    return 0;  
}

1006.换个格式输出整数

#include<stdio.h>
int main()
{
    int a,b,c,n;
    scanf("%d",&n);   
    b=(n/10)%10;
  	 a=n/100;
    c=n%10;
    for (int i=a;i>0;i--)
    printf("B");
    for (int i=b;i>0;i--)
    printf("S");
    for (int i=1;i<=c;i++)
    {
        printf("%d",i);
    }
    return 0;
}
  1. 素数对猜想
#include<stdio.h>
#include<math.h>
int main()
{
    int i,j,k,temp,n=0;
    int s=2;
    scanf("%d",&k);
    if(k==1) return 0;
    else
        for(i=2;i<=k;i++)
        {
            temp=sqrt(i);
            for(j=2;j<=temp;++j)
                if(i%j==0) break;
            if(j>=temp+1)
            {
                if((i-s)==2)
                    n++;
                s=i;
            }
        }
        printf("%d",n);
        return 0;
}
  1. 数组元素循环右移问题
#include<stdio.h>
int main()
{
    int n,i,x,a;
    scanf("%d %d",&n,&x);
    int ch[n];
    for (i=0;i<n;i++)
    scanf("%d",&ch[i]);
    if (x!=n&&x%n!=0)
    {
        x%=n;
        for (i=n-x;i<n;i++)
        printf("%d ",ch[i]);
        for (i=0;i<n-x;i++)
        {
            printf("%d",ch[i]);
            if (i!=(n-x-1))
            printf(" ");
        }
    }
    else
    {

        for (i=0;i<n;i++)
        {
            printf("%d",ch[i]);
            if (i!=(n-1))
            printf(" ");
        }
    }
    return 0;
}
  1. 说反话
#include <stdio.h>

int main()
{
	char arr[80][80],a=' ';
	int count=0;
	for(int i=0;a != '\n';i++)
	{
		scanf("%s%c",arr[i],&a);
		count++;
	}
	for(int i=count-1;i>=0;i--)
	{
		printf("%s",arr[i]);
		if(i != 0) printf(" ");
	}
	return 0;
}
  1. 一元多项式求导
#include<stdio.h>
int main()
{
    int a,b;
    int flag=0;
    while (scanf("%d %d",&a,&b)!=EOF)
    {
        if (a*b!=0)
        {
            if (flag!=0)
            printf(" ");
            printf("%d %d",a*b,b-1);
            flag++;
        }
        if (flag==0)
        printf("0 0");
    }
    return 0;
}
  1. A+B 和 C
#include <stdio.h>

int main()
{
	int n = 0;
	scanf("%d",&n);
    long long int arr[n][3];
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<3;j++)
		{
			scanf("%lld",&arr[i][j]);
		}
	}
	for(int i=0;i<n;i++)
	{
		if(arr[i][0]+arr[i][1]>arr[i][2])
			printf("Case #%d: true\n",i+1);
		else
			printf("Case #%d: false\n",i+1);
	}
	return 0;
}
  1. 数字分类
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int cnt;
    scanf("%d",&cnt);
    int array[5] = {0};
    int i;
    int num,temp,temp1=1,cnt3=0,max = 0;
    int flag1 = 0, flag2 = 0, flag3= 0,flag4 = 0, flag5 = 0;
    for(i = 1; i <= cnt; i++){
        scanf("%d",&num);
        temp = num % 5;
        if(temp == 0 && num % 2 == 0)
            {flag1 = 1; array[0] += num;}
        if(temp == 1) {
            flag2 = 1;
            array[1] += ((temp1 % 2 != 0)? num:(-1*num));
            temp1++;
        }
        if( temp == 2){
            flag3 = 1;
            array[2]++;
        }
        if( temp == 3){
            flag4 = 1;
            cnt3++;
            array[3]+=num;
        }
        if( temp == 4){
            flag5 = 1;
            if(num > max) max = num;
        }
    }
    int h;
    if(flag1) printf("%d ",array[0]); else printf("N ");
    if(flag2) printf("%d ",array[1]); else printf("N ");
    if(flag3) printf("%d ",array[2]); else printf("N ");
    if(flag4) printf("%.1f ",1.0*array[3]/cnt3); else printf("N ");
    if(flag5) printf("%d",max);else printf("N");
    return 0;
}
  1. 数素数
#include <stdio.h>

#include <stdbool.h>
#include <math.h>

bool is_prime(int num)
{
	for(int j=2;j<=sqrt(num);j++)
	{
		if(0 == num%j) return false;
	}
	return true;
}

int main()
{
	int n=0,m=0,count=0;
	scanf("%d %d",&n,&m);
	if(n<=m)
	{
    	for(int i=2;;i++)
		{
			if(is_prime(i))
			{
				count++;
				if(n<=count && count<=m)
				{
					if(0 != (count-n+1)%10  && count!=m)	printf("%d ",i);
					else printf("%d\n",i);
				}
				if(count>m) return 0;
			}
		}
	}
	else return 0;
}
  1. 福尔摩斯的约会
#include <stdio.h>

int main()
{
	char a[61]={},b[61]={},c[61]={},d[61]={};
	int flag=0;
	gets(a);
	gets(b);
	gets(c);
	gets(d);
	for(int i = 0;a[i] != '\0' && b[i] != '\0';i++)
	{
		if(a[i] == b[i] && a[i]>='A' && a[i]<='G' && 0 == flag)
		{
			flag=1;
			if('A' == a[i]) printf("MON ");
			if('B' == a[i]) printf("TUE ");
			if('C' == a[i]) printf("WED ");
			if('D' == a[i]) printf("THU ");
			if('E' == a[i]) printf("FRI ");
			if('F' == a[i]) printf("SAT ");
			if('G' == a[i]) printf("SUN ");
			continue;
		}
		if(a[i] == b[i] && 1 == flag)
		{
			if(a[i]>='0' && a[i]<='9')
			{
				printf("%02d:",a[i]-'0');
				break;
			}
			if(a[i]>='A' && a[i]<='N')
			{
				printf("%02d:",a[i]-'A'+10);
				break;
			}
		}
	}
	for(int i=0;c[i] != '\0' && d[i] != '\0';i++)
	{
		if(c[i] == d[i] && (c[i]>='a' && c[i]<='z')||(c[i]>='A'&&c[i]<='Z'))
		{
			printf("%02d",i);
			break;
		}
	}
	return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值