换个格式输出整数

1006 换个格式输出整数 (15 分)

题目:
让我们用字母B来表示“百”、字母S表示“十”,用12...n来表示不为零的个位数字n(<10),换个格式来输出任一个不超过3位的正整数。例如234应该被输出为BBSSS1234,因为它有2个“百”、3个“十”、以及个位的4
输入格式:
每个测试输入包含 1 个测试用例,给出正整数 n(<1000)。
输出格式:
每个测试用例的输出占一行,用规定的格式输出 n。
输入样例1:

234

输出样例1:

BBSSS1234

输入样例2:

23

输出样例2:

SS123

 这道题目很尴尬,一开始把题意理解错了,以为在BS过后是一个数字1加原数字,然后用string库里面的strcat函数来实现,但是提交会报错,后来就自己实现了一个strcat函数,但是还是一样是本地运行成功无误,但是一提交就报错!

我的代码:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
void strcat(char *ch, char w);
int main()
{
    int n;
    char str1[50] = "", str2[50] = "", str[50] = "";
    scanf("%d", &n);
    int b = n / 100, s = (n - (b * 100)) / 10, num = n % 10;
    for (int i = 0; i < b; i++)
    {
    strcat(str1,'B');
    }
    for (int i = 0; i < s; i++)
    {
    strcat(str2, 'S');
    }
    sprintf(str, "%s%s%d%d%s", str1, str2, 1, n, "\0");
    printf("%s\n", str);
    system("pause");
    return 0;
}
void strcat(char *ch, char w)
{
    while (*ch++ != '\0');
    *--ch = w;
    *++ch = '\0';
}

 后来又仔细看了几遍题目,才发现原来是题意理解错了。

改正后的代码:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int n;
    scanf("%d", &n);
    int b = n / 100, s = (n - (b * 100)) / 10, num = n % 10;
    for (int i = 0; i < b; i++)
    {
        printf("B");
    }
    for (int i = 0; i < s; i++)
    {
        printf("S");
    }
    for (int i = 1; i <= num; i++)
    {
        printf("%d", i);
    }
    printf("\n");
    system("pause");
    return 0;
}

标准答案:

没找到标准答案!

最后修改:2019 年 04 月 25 日 12 : 51 PM

发表评论