C程序:将句子首字母转换为大写


给定一个大小写混合的字符串,任务是将第一个字符转换为大写,其余大写字母转换为小写。

让我们通过一个简单的例子深入了解。

例如,给定字符串“hElLo world”,我们需要将第一个字符'h'(小写)转换为大写'H',并将空格前或字符串末尾的所有其他字母转换为小写。

此外,当我们遇到空格后的第一个字符时,需要将其转换为大写。

示例

Input: str[] = {“heLlO wORLD”}
Output: Hello World
Input: str[] = {"sUNIDHi bAnSAL"}
Output: Sunidhi Bansal

以下使用的方案如下

  • 为了解决这个问题,我们将使用字符的ASCII值。
  • ASCII代表美国信息交换标准代码,这意味着每个字符都有一些与其关联的代码。例如,大写字母A-Z的数值范围为65-90,小写字母a-z的数值范围为97-122。因此,我们将使用这些值来解决我们的问题。
  • 我们将遍历整个字符串,
  • 检查第一个字符或空格“ ”后的第一个字符是否在a-z范围内,然后我们将减去'A'和'a'的ASCII值,然后将结果添加到字符中。
  • 如果它不是第一个字符或空格后的字符,则需要检查该字符是否为大写,然后将其转换为小写,并将该字符的值添加到'a'-'A'的减法结果中。

算法

Start
In Function int firstupper(char str[], int n)
   Step 1-> Initialize int i
   Step 2-> Loop For i = 0 And i<n And i++
      If i == 0 && str[i] != ' ' || str[i] != ' ' && str[i-1] == ' ' then,
         If str[i] >= 'a' && str[i]<='z' then,
            str[i] = (char)(('A'-'a') + str[i] )
         End If
         Else If str[i] >= 'A' && str[i] <= 'Z' then,
            str[i] = (char)(str[i] + ('a' - 'A'))
         End If
      End Function
In Function int main(int argc, char const *argv[])
   Step 1-> Declare and initialize char str[] = {"sUNIDHi bAnSAL"}
   Step 2-> Declare n set as sizeof(str)/sizeof(str[0])
   Step 3-> firstupper(str, n)
   Step 4-> Print "%s
", str End main

示例

 在线演示

#include <stdio.h>
int firstupper(char str[], int n) {
   int i;
   for(i = 0; i<n; i++) {
      if (i == 0 && str[i] != ' ' || str[i] != ' ' && str[i-1] == ' ') {
         if(str[i] >= 'a' && str[i]<='z') {
            str[i] = (char)(('A'-'a') + str[i] );
         }
      } else if (str[i] >= 'A' && str[i] <= 'Z') {
         str[i] = (char)(str[i] + ('a' - 'A'));
      }
   }
   return 0;
}
int main(int argc, char const *argv[]) {
   char str[] = {"sUNIDHi bAnSAL"};
   int n = sizeof(str)/sizeof(str[0]);
   firstupper(str, n);
   printf("%s
", str);    return 0; }

输出

Sunidhi Bansal

更新于: 2019年10月18日

3K+ 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告