问答详情
源自:6-8 字符串函数

请用程序实现: 输入一个字符串, 输出这个字符串的短句.

缩写词是由一个短语中每个单词的第一个字母组成,均为大写。例如,CPU是短语central processing unit的缩写。

示例

输入

central processing unit

输出

CPU
--------------分割线------------------

#include <stdio.h>
#include <string.h>
int main () {
    // TODO 请在此处编写代码,完成题目要求
int i,j;
char a[70];
char b[70];
gets(a);
    if(a[0]>=97&&a[0]<=122)
    a[0]-=32;
 b[0]=a[0];
    for(i=1;a[i]!='\0';i++)
    { 
        if(a[i-1]==' ')
        {  a[i]=a[i]-32; }
    }
for(j=1;a[i-1]==' ';j++)
{b[j]=a[i];}
  puts(b);
    return 0;
}

应该怎么改?

提问者:北渊 2020-04-21 14:47

个回答

  • JonahPeng
    2020-04-21 23:51:22
    已采纳

    b数组应该判断a数组中字母是否在‘A'与'Z'区间中再取值,用两个索引i和j,外层是用i索引数组a中的内容,一旦i找到这个字符是大写字母a[i],再传递给索引b[j],然后j++,i继续查找。你的写法中A的索引i是不变动的,所以找不到其他大写字母。

    for(i=1;a[i]!='\0';i++)

        { 

            if(a[i-1]==' ')

            {  a[i]=a[i]-32; }

        }

        j=1;

    for(i=1;a[i]!='\0';i++)

    {

    if(a[i]>='A'&&a[i]<='Z')

    b[j++]=a[i];

    }

      puts(b);

        return 0;

    }


  • Rainforest975
    2020-06-22 20:43:35

    #include <stdio.h>
    #include <string.h>
    
    int main () {
        int i;
        char a[70];
        char b[70];
        gets(a);
        for (i = 0; a[i] != '\0'; i++) {
            if (i == 0 || a[i - 1] == ' ') {
                int lenB = strlen(b);
                if (a[i] >= 97 && a[i] <= 122) {
                    a[i] -= 32;
                }
                b[lenB] = a[i]; 
            }
        }
        puts(b);
        return 0;
    }

    一次循环可以实现,没必要用两个循环

  • 北渊
    2020-04-22 17:32:14

    http://img3.mukewang.com/5ea00f0b0001b3ec13660736.jpg输出有问题