北渊
2020-04-21 14:47
缩写词是由一个短语中每个单词的第一个字母组成,均为大写。例如,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;
}
应该怎么改?
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;
}
#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;
}一次循环可以实现,没必要用两个循环
输出有问题
C语言入门
928126 学习 · 21543 问题
相似问题