c语言:输入一行英文字符串,把每个单词第一个字母变为大写,输出修改后的字符串

比如说遇到\0就记下一个字符为要变换大写的。我是这样想的,但不会写。... 比如说遇到\0就记下一个字符为要变换大写的。我是这样想的,但不会写。 展开
 我来答
问明6E
高粉答主

2019-05-27 · 每个回答都超有意思的
知道答主
回答量:279
采纳率:100%
帮助的人:12.7万
展开全部

#include<ctype.h>

#include<string.h>

#include<stdio.h>

int main(int argc,char*argv[])

{

char str[100+1];

int isfirst=1;

char ch;

int i=0;

while((ch=getchar())!=EOF)

{

if(isalpha(ch))

{

if(isfirst==1)

{

ch=toupper(ch);

isfirst=0;

}

}

else

{

isfirst=1;

}

str[i++]=ch;

}

str<i>='\0';

printf("%s\n",str);

return 0;

}

扩展资料:

printf用法:

printf()函数的调用格式为:printf("<格式化字符串>",<参量表>)。

其中格式化字符串包括两部分内容:一部分是正常字符,这些字符将按原样输出;另一部分是格式化规定字符,以"%"开始,后跟一个或几个规定字符,用来确定输出内容格式。

参量表是需要输出的一系列参数,其个数必须与格式化字符串所说明的输出参数个数一样多,各参数之间用","分开,且顺序一一对应,否则将会出现意想不到的错误。

比如:

int a=1234;

printf("a=%d\n",a);

输出结果为a=1234。

scanf()是C语言中的一个输入函数。与printf函数一样,都被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include<stdio.h>。

int scanf(const char*restrict format,...);

函数scanf()是从标准输入流stdin(标准输入设备,一般指向键盘)中读内容的通用子程序,可以说明的格式读入多个字符,并保存在对应地址的变量中。

如:

scanf("%d%d",&a,&b);

函数返回值为int型,如果a和b都被成功读入,那么scanf的返回值就是2。

985967518
推荐于2017-10-01 · 知道合伙人教育行家
985967518
知道合伙人教育行家
采纳数:18027 获赞数:109859
14年本科毕业于河南理工大学,至今就读于河南理工大学攻读硕士学位,从事编程学习已有5年。

向TA提问 私信TA
展开全部

思路:先定义一个变量f用来标记是否是单词的开始位置,如果是开始位置就输出大写字母,并把f标记成false,如果遇到空格,就把f标记成true。依次遍历字符串即可。

参考代码:

#include "stdio.h" 
int main() {
char a[100];
int i;
bool f=true;
gets(a);
for(i=0;a[i]!='\0';i++) {
if(f){
printf("%c",a[i]-32);
f=false;
}
else
printf("%c",a[i]);
if(a[i]==' ')
f=true;
}
return 0;
}
/*
运行结果:
i love you
I Love You
*/
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wwwbjj1988
推荐于2017-09-12 · TA获得超过185个赞
知道小有建树答主
回答量:273
采纳率:100%
帮助的人:191万
展开全部
#include "stdio.h"
#include <string.h>
int main()
{
char p[100];
int n=0,m=0;
gets(p);
while (n<(int)strlen(p))
{
if ( (m==0)&&(p[n]>='a')&&(p[n]<='z') ) p[n]-=32;
m++;
if (p[n]==' ') m=0;
n++;
}
printf ("%s\n",p);
}
用数组写的,包含了一个求字符串长度的strlen函数,楼主看看吧,测试过了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友d585d01
2013-05-19 · TA获得超过670个赞
知道小有建树答主
回答量:339
采纳率:0%
帮助的人:468万
展开全部
# include<stdio.h>
# include<string.h>
# include<ctype.h>
void main()
{
char myarray[100];
int num,i,flag=0;
gets(myarray);
num=strlen(myarray);
for(i=0;i<num;i++)
{
if(!(islower(myarray[i])||isupper(myarray[i])))
{
flag=0;
}
else if((!flag)&&(islower(myarray[i])||isupper(myarray[i])))
{
flag=1;
myarray[i]=toupper(myarray[i]);
}
}
puts(myarray);
}

追问
看不懂,有没有简单点的,只用数组写的。我们只学了数组。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
折心灬小轩
2013-05-19 · TA获得超过543个赞
知道小有建树答主
回答量:259
采纳率:0%
帮助的人:109万
展开全部
难道我写的不行吗?
#include <stdio.h>
#include <conio.h>

void A2a_Diap(char *from)
{
char *a=from;
if(*a>=97 && *a<=122)
*a-=32;
printf("%s",from);
}

int main(void)
{
char a[256]="asdf";
printf("before:%s\nafter:",a);
A2a_Disp(a);
getch();
return 0;
}
追问
看不懂,太难了
追答
我这是最简单的方式,楼上的还用了位运算,估计你更看不懂。
楼下的调用了一堆库函数,可怜的效率啊!爱,算了,答案是给你了,
你不用我也没办法,下了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式