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

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

缩写词是由一个短语中每个单词的第一个字母组成,均为大写。例如,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;
}

应该怎么改?

正在回答

3 回答

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;

}


0 回复 有任何疑惑可以回复我~
#1

北渊 提问者

老哥,好像还有点问题
2020-04-22 回复 有任何疑惑可以回复我~
#2

JonahPeng 回复 北渊 提问者

你的b字符串未赋初值
2020-04-22 回复 有任何疑惑可以回复我~
#3

JonahPeng 回复 北渊 提问者

将b字符串赋值为空字符串
2020-04-22 回复 有任何疑惑可以回复我~
#4

JonahPeng 回复 北渊 提问者

像这种简单的程序,可以考虑直接把变量设置为全局变量,会自动赋空值(数据值0),可以节省很多操作。
2020-04-22 回复 有任何疑惑可以回复我~
查看1条回复
#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;
}

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

1 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       926018    人
  • 解答问题       20793    个

C语言入门视频教程,带你进入编程世界的必修课-C语言

进入课程

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信