一个很难的c语言题目 请个高手帮哈忙

输入一个字符串统计单词个数并把单词首字母变为小写其他的为大写如:aBcdefgH!变为:AbCdEFgh!... 输入一个字符串统计单词个数并把单词首字母变为小写其他的为大写 如:aB cd e fgH!变为:Ab Cd E Fgh! 展开
 我来答
wgyygw5
2010-08-26 · TA获得超过3287个赞
知道小有建树答主
回答量:994
采纳率:100%
帮助的人:1198万
展开全部
思路:
1.大小写字母转换好办:因为ascll码表中,大写字母和小写字母相差32,只要判断字母是大写字母或小写字母,加或减32就可以实现
2.判断单词个数麻烦些,一般是用空格的隔开判断单词个数,但是涉及到开头有空格,末尾有空格,或者有连续的空格。
使用了个标志变量,当字符为空格或不为空格的时候标志分别为0和1,这样,只有当满足“该字符为字母并且上一字符为空格”,才表示单词个数加1

#include <stdio.h>

int main(int argc, char* argv[])
{
char str[]="aB cd e fgH!";
int wordnum=0;
int flag=-1;//用于判断上1字符时空格,还是非空格
int i;
for (i=0;i<StrLen(str);i++)
{
if (str[i]!=' ' && flag!=1)//当前字符为字母,且上一字符为空格
{
flag=1;
wordnum+=1;
}
if (str[i]==' ')
{
flag=0;
}

if (str[i]>='a' && str[i]<='z')
{
str[i]=str[i]-32;
}
else if (str[i]>='A' && str[i]<='Z')
{
str[i]=str[i]+32;
}
}
printf("单词数量为:%d\n",wordnum);
printf("新字符串为:%s\n",str);
system("pause");
return 0;
}
_baby小人_
2010-08-26 · TA获得超过253个赞
知道小有建树答主
回答量:173
采纳率:0%
帮助的人:253万
展开全部
到底是变成首字母大写还是首字母小写?你的描述和例子不一致
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bnujwch
2010-08-26 · TA获得超过1432个赞
知道小有建树答主
回答量:697
采纳率:100%
帮助的人:607万
展开全部
#include<stdio.h>

int main()
{
char *p, str[80];
int i = 1;

printf("请输入一句话:");
gets(str);

p=str;
if((*p>='a')&&(*p<='z'))
*p -= 32;

while(*++p)
if((*p>='a')&&(*p<='z')&&(*(p-1)==' '))
*p -= 32;
else if((*p>='A')&&(*p<='Z')&&(*(p-1)!=' '))
*p +=32;

p=str;
if(*p == ' ') i--;
while(*++p)
if((*p>='A')&&(*p<='Z')&&(*(p-1)==' '))//首字母已经变换为大写,不用考虑小写
i++;

printf("你一共输入了%d个单词\n这些单词变换后是:%s\n",i,str);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
释竹阳花
2010-08-26 · TA获得超过2901个赞
知道小有建树答主
回答量:837
采纳率:0%
帮助的人:825万
展开全部
#include<stdio.h>
#define N 2000
void Change(char zifu[])
{
int a,count=0;
for(a=0;a<=N&&zifu[a]!='\0';a++)
{
count++;
if((zifu[a]>='A')&&(zifu[a]<='Z'))
zifu[a]=zifu[a]+32;
else
{
if((zifu[a]>='a')&&(zifu[a]<='z'))
zifu[a]=zifu[a]-32;
else
break;
}
}
printf("共有:%d个字符!\n",count);
}

void main()
{
char chuan[N];
gets(chuan);
Change(chuan);
puts(chuan);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式