第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);
}