PTA | 1006 换个格式输出整数 15分 知识点:整数转换

90 阅读1分钟

PTA | 1006 换个格式输出整数

case:

#include<stdio.h>
int main()
{
    int n,i=0,j;
    int a[100];
    scanf("%d",&n);
    while(n>0)
    {
        a[i]=n%10;
        n=n/10;
        i++;
    }
    switch (i)
    {
    case 1:
        for(int k=1;k<=a[0];k++)
        {
            printf("%d",k);
        }
        break;
    case 2:
        for(int k=1;k<=a[1];k++)
        {
            printf("S");
        }
        for(int k=1;k<=a[0];k++)
        {
            printf("%d",k);
        }
        break;
    case 3:
        for(int k=1;k<=a[2];k++)
        {
            printf("B");
        }
                for(int k=1;k<=a[1];k++)
        {
            printf("S");
        }
        for(int k=1;k<=a[0];k++)
        {
            printf("%d",k);
        }
        break;
    }
    return 0;
}

image.png

二刷

没看题解,独立完成:

if else

#include<iostream>
#include<vector>
using namespace std;

int main()
{
    int x=0;cin>>x;

  vector<int>a; 
    while(x)
    {
        a.push_back(x%10);
        x/=10;
    }

  if(a.size()==1)
  {
      int ge=a[0];
      for(int i=1;i<=ge;i++)
      {
          cout<<i;
      }
  }
    else if(a.size()==2)
    {
        int shi=a[1];
        int ge=a[0];
      for(int i=0;i<shi;i++)
      {
          cout<<'S';
      }
         for(int i=1;i<=ge;i++)
      {
          cout<<i;
      }
    }
       else if(a.size()==3)
       {
           int bai=a[2];
           int shi=a[1];
           int ge=a[0];
           for(int i=0;i<bai;i++)
           {
            cout<<'B';   
           }
           for(int i=0;i<shi;i++)
          {
              cout<<'S';
          }
             for(int i=1;i<=ge;i++)
          {
              cout<<i;
          }   
       }
    return 0;
}

image.png

不知道为什么这样写就错了:

#include<bits/stdc++.h>
using namespace std;


void sovel(vector<int>ans)
{
    if (ans.size() == 1)
    {
        
        int ge = ans[ans.size() - 1];
        for (int i = 1; i <= ge; i++)cout << i;
    }
    else if (ans.size() == 2)
    {
        int shi = ans[1];
        while (shi--)cout << "S";

        int ge = ans[ans.size() - 1];
        for (int i = 1; i <= ge; i++)cout << i;
    }
    else if (ans.size() == 3) {
        int bai = ans[0];
        while (bai--)cout << "B";

        int shi = ans[1];
        while (shi--)cout << "S";

        int ge = ans[ans.size() - 1];
        for (int i = 1; i <= ge; i++)cout << i;

    }
}
int main()
{
    vector<int>ans;
    int x; cin >> x;
    if (x == 0)
    {
        cout << 0;
        return 0;
    }
        while (x)
    {
        ans.push_back(x % 10);
        x /= 10;
    }

    reverse(ans.begin(), ans.end());
    sovel(ans);
    return 0;
}

image.png