北渊
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语言入门
926207 学习 · 20797 问题
相似问题