c语言问题 将首字母变为大写

图片分别是题目和代码求问为什么代码有问题 不能实现功能
2025-04-23 07:08:13
推荐回答(4个)
回答(1):

#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文件。

回答(2):

这是把每个单词的首字母变成大写:

#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;

回答(3):

#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]。

回答(4):

你没有考虑a[0]啊!!

另:小写字母比大写大,应该是 a[i+1] = a[i+1] -'a'+'A' ; //这样写最安全