我正在编写一个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);
}
}
它从大写转换为小写,反之亦然,但我无法计算如何计算。
答案 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)
让我们先审查合同
一个C程序,用于从标准输入逐个读取字符
将所有大写字母转换为小写字母,将所有小写字符转换为大写字母,
将结果写入标准输出。
...计算多少个字符..阅读,
......有多少人在每个方向转换,
输出最后的总数。
我们假设输入字符可以任何 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);
}