You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言如何在首字母缩写的字母间插入点号输出指定格式

问题根因

当前代码的CreateAcronym函数仅提取符合规则的大写首字母存入userAcronym数组,未插入要求的分隔点号,直接输出数组只会得到连续字母串IEEE,不符合输出要求。

可行修改方案

两种方案改动量都很小,按需选择即可:

  • 方案1:修改缩写生成逻辑,直接生成带点的字符串
    存入符合要求的首字母后,紧接着存入一个.字符,最后补字符串结束符即可,主函数的输出逻辑不需要改动。
    修改后的CreateAcronym函数代码:
    void CreateAcronym(char userPhrase[], char userAcronym[]) {
        int i;
        int count = 0;
    
        for (i = 0; i < strlen(userPhrase); ++i) {
            if (i == 0 || userPhrase[i - 1] == ' ') {
                if (isupper(userPhrase[i])) {
                    userAcronym[count++] = userPhrase[i];
                    userAcronym[count++] = '.'; // 每个首字母后紧跟点号
                }
            }
        }
        userAcronym[count] = '\0'; // 补字符串终止符
    }
    
  • 方案2:保留原缩写生成逻辑,调整输出规则
    不改动CreateAcronym函数,替换原有直接打印字符串的逻辑,遍历缩写串的每一个字符,每打印一个字符就紧跟打印一个.即可。
    修改后的main函数输出部分代码:
    int main() {
       char userPhrase[1000]; 
       char userAcronym[20];
       
       fgets(userPhrase, 1000, stdin);
       CreateAcronym(userPhrase, userAcronym);
       // 替换原printf("%s\n", userAcronym);
       for (int i = 0; userAcronym[i] != '\0'; i++) {
           printf("%c.", userAcronym[i]);
       }
       printf("\n");
    
       return 0;
    }
    
验证说明

输入示例Institute of Electrical and Electronics Engineers时,两种方案都会输出预期结果I.E.E.E.。

注意:你定义的userAcronym[20]数组长度完全够用:按每个首字母占2个字符(字母+点)计算,最多可存9个首字母加1位字符串终止符,覆盖绝大多数日常使用场景,不会出现数组越界问题。

内容的提问来源于stack exchange,提问作者user17918412

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 00:27:20