/*----------------------------------------------------------------------
【程序设计】
------------------------------------------------------------------------
题目:程序将英文句子中各单词首字母改成大写,并将各单词分行显示。单词间
的空格数不定。
例如:英文句子为"welcome to c world "
程序运行结果为:
Welcome
To
C
World
------------------------------------------------------------------------
注意:请勿改动程序中的其他内容。
----------------------------------------------------------------------*/
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<ctype.h>
#include<stdlib.h>
int main()
{
char s[]= "welcome to c world ";
int i,inword;
inword=0;
/**********Program**********/
for(i=0;s[i];++i)
{
if(isalpha(s[i]))
{
if(inword==0)
{
s[i]=s[i]-32;
inword=1;
}
putchar(s[i]);
}
else
{
if(inword==1)
{
inword=0;
printf("\n");
}
}
}
/********** End **********/
return 0;
}
哪个地方不理解
int main()
{
char s[] = "welcome to c world ";
int i, inword;
inword = 0;
/**********Program**********/
for (i = 0; s[i]; ++i)
{
if (isalpha(s[i]))//如果s[i]是字母,则为真
{
if (inword == 0)//找到第一个字母
{
s[i] = s[i] - 32;//根据ascii码表,A 比 a 小32
inword = 1;//防止welcome整串大写
}
putchar(s[i]);//打印s[i]
}
else//当 Welcome 打印完了之后,后面是字符'\0'不是字母,所以判断来这
{
if (inword == 1)
{
inword = 0;//重置,找第一个字母
printf("\n");//换行
}
//重置之后else语句里面当成空语句
}
}
/********** End **********/
return 0;
}
有帮助的话还请采纳~
/*----------------------------------------------------------------------
【程序设计】
------------------------------------------------------------------------
题目:程序将英文句子中各单词首字母改成大写,并将各单词分行显示。单词间
的空格数不定。
例如:英文句子为"welcome to c world "
程序运行结果为:
Welcome
To
C
World
------------------------------------------------------------------------
注意:请勿改动程序中的其他内容。
----------------------------------------------------------------------*/
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<ctype.h>
#include<stdlib.h>
int main()
{
char s[]= "welcome to c world ";
int i,inword;
inword=0; // 0:没有找到单词, 1:找到单词了
/**********Program**********/
for(i=0;s[i];++i)
{
if(isalpha(s[i])) // 是字母
{
if(inword==0) // 没有找到单词 ,说明前面是空格
{
s[i]=s[i]-32; // 小写字母转大写字母
inword=1; // 设置找到了单词
}
putchar(s[i]); // 输出字母
}
else // 不是字母
{
if(inword==1) // 如果前面找到过单词
{
inword=0; // 设置没有找到单词
printf("\n"); // 需要换行,方便下一个单词输出
}
}
}
/********** End **********/
return 0;
}
inword表示找到了一个单词
它是0的时候就是还没有开始进入单词
是1的时候表示进入了一个单词
该回答引用ChatGPT4与博主@晓码自在合作编写:
这里是该程序的解答:
c
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<ctype.h>
#include<stdlib.h>
int main()
{
char s[]= "welcome to c world ";
int i,inword;
inword=0;
for(i=0;s[i];++i)
{
if(isalpha(s[i]))
{
if(inword==0)
{
s[i]=toupper(s[i]); // 将字母转换为大写
inword=1;
}
putchar(s[i]);
}
else
{
if(inword==1) // 如果前面是一个单词,则换行
{
inword=0;
printf("\n");
}
}
}
return 0;
}
这个程序的关键是:
通过这些逻辑,可以实现识别每个单词,并将其首字母大写及单独占一行的要求。