用的c,平台评测全RE,样例本地测试没问题
查看原帖
用的c,平台评测全RE,样例本地测试没问题
799400
kimikaZakuro楼主2024/5/14 20:48
#include <stdio.h>
#include <string.h>

char s[80];//存储输入串
char a[15];//存储每个单词
int b[9];//存储所有数字
int cnt = 0;//记录一共多少个数

char num1[30][20] = { "zero","one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen", "twenty","a","both","another","first","second","third" };
int num2[30]={0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 00, 21, 44, 69, 96, 25, 56, 89, 24, 61, 0, 1, 4, 1, 1, 4, 9};
void judge()
{
    for (int i = 0; i < 27; i++)
    {
        if (strcmp(&*num1[i],a)==0)
            //犯错:strcmp比较字符串,不能用==
            //犯错:strcmp返回负数、0、正数
            //犯错:二维数组指针有两层
            b[cnt++] = num2[i];
    }
}

void sort()//冒泡排序
{
    int flag = 0;
    for (int i = 0; i < cnt; i++)//i为已排好的个数
    {
        
        for (int j =0;j<cnt-i-1;j++)
            
            //犯错:j+1越界
            //for (int j =0;j<cnt-i;j++)
        {
            if (b[j] > b[j + 1])
            {
                int temp = b[j];
                b[j] = b[j + 1];
                b[j + 1] = temp;
                flag = 1;
            }
        }
        if (!flag)//效率优化
            break;
        else
            flag = 0;
    }
}

int main()
{
    fgets(s, sizeof(s), stdin);
    s[strlen(s) - 2] = '\0';//覆盖'.'
    for (int i=0;i<strlen(s);i++)
    {
        if (s[i] != ' ')
        {
            int j = i;
            while (s[j] != ' ')
                j++;

            strncat(a, &s[i], j - i);
            judge();
            memset(a, 0, sizeof(a));
            i = j;
        }
        else
            ;
    }

    sort();
    //处理b中的数据,排列输出

    int sign = 1;
    //控制第一个输出<10的数字,消去0
    for (int i = 0; i < cnt; i++)
    {
        if (b[i] == 0)
            continue;
        else if (b[i] < 10)
        {
            if (sign)
            {
                printf("%d", b[i]);
                sign = 0;
            }
            else
                printf("%02d", b[i]);
        }
        else
            printf("%d", b[i]);
    }
    return 0;
}
2024/5/14 20:48
加载中...