getchar 虽好,有时也误国啊

时间:2021-01-26
本文章向大家介绍getchar 虽好,有时也误国啊,主要包括getchar 虽好,有时也误国啊使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

先看题目:

有时,像"本地化"或"国际化"这样的词太长,在一个文本中多次书写是相当令人厌烦的。

如果一个单词的长度严格超过10个字符,那么让我们考虑一个单词太长。所有太长的单词都应替换为一个特殊的缩写。

这个缩写是这样的:我们写下单词的第一个字母和最后一个字母,在它们之间,我们写第一个字母和最后一个字母之间的字母数。该数字在十进制系统中,不包含任何前导零。

因此,[ 本地化] 将被拼写为[l10n],和[ 国际化] 将被拼写为[i18n].

建议您自动使用缩写更改单词的过程。此时,所有太长的单词都应该用缩写替换,不长的单词不应发生任何更改。

输入

第一行包含整数n ( 1 ≤ n ≤ 100。以下 n 行中每行都包含一个单词。所有单词都由小写拉丁字母组成,长度从1到100个字符。

输出

打印n行。 i-th 行应包含从输入数据替换i-th 字的结果。

例子
输入
复制
4
word
localization
internationalization
pneumonoultramicroscopicsilicovolcanoconiosis
输出
复制
word
l10n
i18n
p43s

 简单来说就是把一串字符(如果大于10)的首尾输出,再输出长度减2.

我的代码一开始是这样的:

  1. #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    int main()
    {
        int n,i,c;
        char str[100];
        scanf("%d",&n);
        while(n--)
        {
            
            gets(str);
            c=strlen(str);
            if(c<=10)
                puts(str);
            else 
            {
            putchar(str[0]);
            printf("%d",c-2);
            putchar(str[c-1]);
            printf("\n");
            }
        }
    }

    少了一次输入,所以四种情况变成了三种;就感觉是gets进去了4,但是输出结果里面也没有4啊。。。

    第二次我卷土重来

     把gets(str); 改为scanf("%s",str);  就通过了,而且我也没有对str这个字符串数组反复进行初始化。

原文地址:https://www.cnblogs.com/sibo/p/14332736.html