求助C语言问题(高分悬赏)

main()
{char a[100];
int i,word;
clrscr();
gets(a);
for(i=0,word=0;a[i]!='\0';i++)
if(a[i]==' ')word=0;
else

.................

if(word==1)
{
if(a[i-1]>='a'&&a[i-1]<='z')
a[i-1]-=32;word=0;
printf("\n");
puts(a);}
getch();
}

要求输入一段字符串如"i am a boy "则运行结果为:"I aM A boY"即将每个单词的最后一个字母变成大写,谢谢

# include "stdio.h"
void main()
{
char str[100];
int i;
gets(str);
for(i=0;str[i]!='\0';i++)
{
if(i!=0 && (str[i]<65 || str[i]>123 || (str[i]>91 && str[i]<97)))
if(str[i-1]>=97 && str[i-1]<=123)str[i-1]-=32;
}
if(str[i-1]>97 && str[i-1]<123)str[i-1]-=32;
printf("\n");
puts(str);
getch();
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-01-09
#include <stdio.h>
#include <stdlib.h>

int main(int argc, _TCHAR* argv[])
{
char a[100];
int i,word;

//输出提示
printf("enter a string = ");

//输入一串字符
gets(a);

//防止输入超出100个字母
a[99]='\0';

for(i=0,word=0;a[i]!='\0';i++)
{
//判断一个字母是否为空格
if(a[i]==' ')
{
//如果为空格则表示一个单词的结束
//判断空格前一个字母(即一个单词的尾字母)是不是小写
//如果是小写则变为大写
if(a[i-1]>='a'&&a[i-1]<='z')
{
a[i-1]-=32;
}
}
}

//判断最后一个字母是不是小写,是就转换为大写
//经过上面的循环,i的值已经到了整句话的结尾符'\0'处了
//此时i-1就是最后一个字母,上面的循环碰到'\0'就退出了,不会处理最后一个字母
if(a[i-1]>='a'&&a[i-1]<='z')
{
a[i-1]-=32;
}

//输出
printf("%s\n",a);

return 0;
}
第2个回答  2007-01-09
#include<stdio.h>
#include<string.h>
main()
{
char s[100],*p=s;
int i;
printf("输入一串字符串:");
gets(p);
for(i=0;s[i]!='\0';i++)
{
if(*p==' ')
*(p-1)=*(p-1)-32;
else if(*(p+1)=='\0')
*p=*p-32;
p++;
}
p=s;
puts(s);
}
第3个回答  2007-01-09
简单得很,输入完成之后,对其每个字符进行判断,如果是空格,就把前一个变为大写就行了.
这个就是算法了.哈哈..............................
第4个回答  2007-01-09
你只需要增加判断,用空格走为单词的分界,用一个数组专门存储当前处理的单词,数组中的最有一个字母变大写,再回传到输出数组中,或直接输出即可。
第5个回答  2007-01-09
# include "stdio.h"
void main()
{
char str[100];
gets(str);
char * p=str;
while(p)
{
if(*(p+1)==' '&&*p<='z'&&*p>='a')
*p=*p+32;
p++;
}
printf("%s",str);
}
相似回答