#include<stdio.h>
int main()
{
int i;
int word;
char str[200];
printf("请输入字符串:");
while(gets(str)!=NULL)
{
printf("修改后的字符串为:");
word=0;
for(i=0;str!='\0';i++)
{
if(str=='')
{
word=0;
printf("");
}
else if(word==0)
{
word=1;
str=str-32;
printf("%c",str);
}
else
printf("%c",str);
}
printf("\n");
}
return 0;
}
运行结果:
printf()用法:
1、printf()函数是格式化输出函数,一般用于向标准输出设备按规定格式输出信息。
格式输出,它是c语言中产生格式化输出的函数(在stdio.h中定义)。用于向终端(显示器、控制台等)输出字符。格式控制由要输出的文字和数据格式说明组成。
要输出的文字除了可以使用字母、数字、空格和一些数字符号以外,还可以使用一些转义字符表示特殊的含义。
简单点理解就是,在一段程序中你正确使用该函数,可以在该程序运行的时候输出你所需要的内容。
2、printf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中。但作为一个特例,不要求在使用printf函数之前必须包含stdio.h文件。
这是把每个单词的首字母变成大写:
#include
#define islower(c) (c>='a'&&c<='z')
#define isupper(c) (c>='A'&&c<='Z')
int main()
{char s[200];
int i;
gets(s);
for(i=0;s[i];i++)
if(i==0||islower(s[i])&&(!(islower(s[i-1])||isupper(s[i-1]))))
s[i]-=32;
puts(s);
getch();
return 0;
}
这是将一行的首字母变成大写:
#include
int main()
{char s[200];
int i;
gets(s);
for(i=0;s[i]>='A'&&s[i]<='Z'||s[i]>='a'&&s[i]<='z';i++)
break; //遇到一行的首个字母就退出循环
if(s[i]>='a'&&s[i]<='z')s[i]-=32; //若它是小写字母就把它变为大写
puts(s);
getch();
return 0;
}
#include
void Myreplace(char a[]);
int main() {
char a[200];
printf("input\n");
gets(a);
Myreplace(a);
puts(a);
return 0;
}
void Myreplace(char a[]) {
int i;
for(i = 0; a[i] !='\0'; i++) {
if(i == 0 && a[i] >= 'a' && a[i] <= 'z') { //考虑a[0]
a[0] -= 32; //小写字母比大写字母大32,所以减去32
}
else if(a[i]==' ' && a[i+1] >= 'a' && a[i+1] <= 'z') {
a[i+1] = a[i+1] - 32;
}
}
}
你主要错在小写字母变成大写字母上,小写字母比大写字母大32,所以减去32。然后是未考虑a[0]。
你没有考虑a[0]啊!!
另:小写字母比大写大,应该是 a[i+1] = a[i+1] -'a'+'A' ; //这样写最安全