C语言大一PTA输入一个英文句子,将每个单词的第一个字母改成大写字母。
问题描述:
哪里错了???
#include"stdio.h"
#include"string.h"
int main()
{
int i,j;
char a[101];
gets(a);
if(a[0]>='a'&&a[i]<='z') {
a[0]-=32;
}
for(i=1;i<strlen(a);i++) {
if(a[i]=='\0'){
if(a[i+1]>='a'&&a[i+1]<='z') {
a[i+1]-=32;
}
}
}
puts(a);
return 0;
}
答
#include"stdio.h"
#include"string.h"
int main()
{
int j=0;
char a[101];
gets(a);
if(a[0]>='a'&&a[j]<='z')
{
a[0]-=32;
}
for(j=1;j<strlen(a);j++)
{
if(a[j]=='\0'||a[j]==32)
{
if(a[j+1]>='a'&&a[j+1]<='z')
{
a[j+1]-=32;
}
}
}
puts(a);
return 0;
}
你的变量(i,j)没有先赋值,单词间判断空格
答
供参考:
#include<stdio.h>
#include<ctype.h>
int main()
{
char a[100+1], c;
int i;
gets(a);
if (a[0] != ' ') {
if (islower(a[0]))//判断s[0]是单词开始
a[0] = toupper(a[0]);
}
for (i = 0; (c = a[i]) != '\0'; i++)
{
if (c == ' ' && a[i + 1] != ' ') {//判断s[i+1]是一个单词的开始
if (islower(a[i + 1]))//判断是否是小写字符
a[i + 1] = toupper(a[i + 1]);
}
}
puts(a);
return 0;
}
答
#include"stdio.h"
#include"string.h"
int main()
{
int i=0, j=0;
char a[101];
gets_s(a);
if (a[0] >= 'a' && a[0] <= 'z') {
a[0] -= 32;
}
for (i = 1; i < strlen(a); i++) {
if (a[i] == ' ') {
if (a[i + 1] >= 'a' && a[i + 1] <= 'z') {
a[i + 1] -= 32;
}
}
}
puts(a);
return 0;
}