c - 切换大小写以计算单词和字符的数量
问题描述
输出窗口命令我试图在 C 中使用 switch case 来计算用户输入中的字符、单词、换行符的数量。该代码似乎合法,没有引发错误,但是,输出无法按预期工作。请看看并告诉我我做错了什么。提前致谢!这是代码:
#include <stdio.h>
int main()
{
char a, words = 1, characters = 0, newlines = 0;
printf("What do you have in mind? ");
a = getchar();
while ((a=getchar()) && a != EOF)
{
switch (a)
{
case '1':
if (a >= 'a' && a <= 'z' || a >= 'A' && a <= 'Z')
characters++;
printf("The amount of character is %c ", characters);
case '2':
if (a == ' ' || a == '\t')
words++;
printf("The amount of word is %c ", words);
case '3':
if (a == '\t')
newlines++;
printf("The amount of newlines is %c ", newlines);
default:
if (a == EOF)
break;
}
}
return 0;
}
解决方案
您误解了 switch /case 的含义。这并不意味着'第一种情况','第二种情况'..在某些情况下,它意味着(在您的特定情况下),如果用户只是输入'1'然后执行此操作,用户只需输入'2'然后执行这个,...嗯,你没有输入 1 或 2 或 3。
只需这样做
while ((a=getchar()) && a != EOF)
{
if (a >= 'a' && a <= 'z' || a >= 'A' && a <= 'Z')
characters++;
printf("The amount of character is %c ", characters);
if (a == ' ' || a == '\t')
words++;
printf("The amount of word is %c ", words);
if (a == '\t')
newlines++;
printf("The amount of newlines is %c ", newlines);
}
此外,您必须将 a 更改为 int
推荐阅读
- php - 退货不起作用,但打印有效
- firebase - 操作 Google 模拟器无法正常工作
- python - 从flask html获取值到python
- java - 在特定活动中遇到错误后终止整个应用程序
- r - 将数据框中的所有值除以最小值
- c++ - 为什么我不能将 const 左值引用绑定到返回 T&& 的函数?
- .htaccess - Symfony 3.4 位于子目录中,从 url 中删除 web/
- php - PHP从csv文件中解析空数据
- sql-server - Azure sql server / xamarin 移动应用程序:如何捕获用户 ID 以进行审计跟踪
- sql-execution-plan - Microsoft SQL Server 中 DELETE TOP(X) 的执行计划何时更改?