为了账号安全,请及时绑定邮箱和手机立即绑定
关注
北渊

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

缩写词是由一个短语中每个单词的第一个字母组成,均为大写。例如,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 源自:C语言入门 6-8 804 浏览 3 回答

最佳回答

2020-04-21

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;

}


北渊 (提问者)

老哥,好像还有点问题
#1 2020-04-22

JonahPeng

你的b字符串未赋初值
#2 2020-04-22

JonahPeng

将b字符串赋值为空字符串
#3 2020-04-22
点击展开后面1条评论

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

2020-04-22
0
#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-06-22
0

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信