将所有小写字符转换为大写,反之亦然

时间:2016-10-16 17:06:10

标签: c string

我正在编写一个C程序,从标准输入逐个读取字符,将所有大写字符转换为小写字母,将所有小写字符转换为大写字母,并将结果写入标准输出。 我还想计算我读过多少个字符,以及有多少字符在每个方向上转换,并在最后输出总数。

例如 - 拉达克里希纳! 会成为

rADHA kRISHNA!

共读取15个字符,10个转换为大写,2个转换为小写

这是我的代码: -

#include <stdio.h>
#include <ctype.h>

int main()
{
    char sentence[100];
    int count, ch, i;

    printf("Enter a sentence \n");
    for (i = 0; (sentence[i] = getchar()) != '\n'; i++)
    {
        ;
    }
    sentence[i] = '\0';
    /*  shows the number of chars accepted in a sentence */
    count = i;
    for (i = 0; i < count; i++)
    {
        ch = islower(sentence[i])? toupper(sentence[i]) :
tolower(sentence[i]);
        putchar(ch);
    }
}

它从大写转换为小写,反之亦然,但我无法计算如何计算。

2 个答案:

答案 0 :(得分:0)

将三元组更改为if / else子句,并为每个条件提供计数器。

int changedToLower = 0;
int changedToUpper = 0;
for (i = 0; i < count; i++) {
    char oldC = sentence[i];
    if(islower(sentence[i])) {
       ch = toupper(sentence[i])
       changeToUpper += (ch != oldC)? 1 : 0;
    } else {
       ch = tolower(sentence[i]);
       changeToLower += (ch != oldC)? 1 : 0;
    }
}

答案 1 :(得分:0)

让我们先审查合同

  1. 一个C程序,用于从标准输入逐个读取字符

  2. 将所有大写字母转换为小写字母,将所有小写字符转换为大写字母,

  3. 将结果写入标准输出。

  4. ...计算多少个字符..阅读,

  5. ......有多少人在每个方向转换,

  6. 输出最后的总数。

  7. 我们假设输入字符可以任何 char,而不仅仅是A-Za-z

    #include <stdio.h>
    #include <ctype.h>
    
    int main() {
        // No need to save previous letters
        // char sentence[100];
        unsigned long long character_count = 0; //#4
        unsigned long long toupper_count = 0;   //#5
        unsigned long long tolower_count = 0;   //#5
    
        printf("Enter a sentence\n");
    
        // for (i = 0; (sentence[i] = getchar()) != '\n'; i++)
        int ch;
        while ((ch = getchar()) != EOF) {  // #1
          character_count++;               // #4
          if (ch == '\n') break;           // #1
    
          if (isupper(ch)) {
            ch = tolower(ch);       // #2
            tolower_count++;        // #5
          } else if (islower(ch)) { 
            ch = toupper(ch);       // #2
            toupper_count++;        // #5
          }
    
          putchar(ch);              // #3
        }
    
        printf("\n"                 // #6
            "Count: characters read   : %llu\n"
            "Count: converted to lower: %llu\n"
            "Count: converted to upper: %llu\n", 
            character_count, toupper_count, tolower_count);
    }