这个计算每个元音出现次数的 C 程序有什么问题?

2023-12-02

PROBLEM:

编写一个 C 程序,提示用户输入一串以 ENTER 键结尾的字符(即‘\n’),然后统计该字符串中每个元音出现的总数。您的程序应遵循以下准则:
• 你的程序应该声明一个由5个整型计数器组成的数组,即counter。
• 使用循环,您的程序应将数组的每个成员初始化为 0。
• 然后检查字符串中的每个字符是否为元音,即“a”、“e”、“i”、“o”或“u”。在这种情况下,相应的计数器会递增。例如,如果读取“a”,则 counter[0] 递增,如果读取“i”,则 counter[2] 递增,依此类推。
• 输入的字符可以是小写或大写。
• 您的程序应该使用循环来打印5 个计数器的内容。
• 最后,您的程序应该打印字符串中元音的总数。
结果应该如下所示: 请输入以 ENTER 键结尾的字符串:

“棕色的狐狸跳过了那只懒狗”

counter[0] = 1
counter[1] = 4
counter[2] = 0
counter[3] = 4
counter[4] = 1

元音总数= 10

我的代码:

#include <stdio.h>
main(){
int counter[5];
int c, i;
for(i = 0; i < 5; i++)
counter[i] = 0;
printf("Please enter a string terminated by ENTER key:\n");
while((c = getchar()) != '\n')
{
     if((counter[i] == 'a' || counter[i] == 'e' || counter[i] == 'i' || counter[i] ==
    'o' || counter[i] == 'u') ||(counter[i] == 'A' || counter[i] == 'E' || counter[i] == 
    'I' || counter[i] == 'O' || counter[i] == 'U'))
    {
        for(i = 0; i < 5; i++)
        {
            if(c == 'a' + i)
            counter[i] = counter[i] + 1;
        }
    }
}
for(i = 0; i < 5; i++)
    printf("counter[%d] = %d\n", i, counter[i]);
}

我的计数器出了什么问题? 提前致谢。


首先,您应该将 main 的返回类型设置为: int (例如: int main() ),这不会破坏您的代码,但它符合 C 标准,并会引起编译器的警告。

C 中的字符采用 ASCII 编码标准中的数值:http://upload.wikimedia.org/wikipedia/commons/1/1b/ASCII-Table-wide.svg,查看那里的值(例如“a”是 97),更多信息请参见维基百科:http://en.wikipedia.org/wiki/ASCII

您在最后一个 for 循环中所做的就是将字符与 a、b、c、d、e 进行比较。

我建议你做的是切换角色:

switch(c) {
    case 'a':
    case 'A':
        counter[0]++;
        break;
    case 'e':
    case 'E':
        counter[1]++;
        break;
    case 'i':
    case 'I':
        counter[2]++;
        break;
    case 'o':
    case 'O':
        counter[3]++;
        break;
    case 'u':
    case 'U':
        counter[4]++;
        break;
}

或者,您可以创建五个 if 语句。

现在应该可以正常工作了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

这个计算每个元音出现次数的 C 程序有什么问题? 的相关文章

  • std::cout 和 std::wcout 有什么区别?

    在c 中 有什么区别std cout and std wcout 它们都控制流缓冲区的输出或将内容打印到控制台 或者它们只是相似吗 它们作用于不同的字符类型 std cout uses char作为字符类型 std wcout uses w
  • C++ 中本地类中的静态成员变量?

    我知道我们不能宣布static本地类中的成员变量 但其原因尚不清楚 那么请问有人可以解释一下吗 另外 为什么我们不能访问非static函数内部定义的变量 内部已经定义了局部类 直接在局部类成员函数中 在下面给出的代码中 int main i
  • Unix网络编程澄清

    我正在翻阅这本经典书籍Unix网络编程 https rads stackoverflow com amzn click com 0139498761 当我偶然发现这个程序时 第 6 8 节 第 179 180 页 include unp h
  • 如何在 C# 中从 UNIX 纪元时间转换并考虑夏令时?

    我有一个从 unix 纪元时间转换为 NET DateTime 值的函数 public static DateTime FromUnixEpochTime double unixTime DateTime d new DateTime 19
  • XamlReader.Load 在后台线程中。是否可以?

    WPF 应用程序具有从单独的文件加载用户控件的操作 使用XamlReader Load method StreamReader mysr new StreamReader pathToFile DependencyObject rootOb
  • C++中的类查找结构体数组

    我正在尝试创建一个结构数组 它将输入字符串链接到类 如下所示 struct string command CommandPath cPath cPathLookup set an alarm AlarmCommandPath send an
  • 在 C# 中循环遍历文件文件夹的最简单方法是什么?

    我尝试编写一个程序 使用包含相关文件路径的配置文件来导航本地文件系统 我的问题是 在 C 中执行文件 I O 这将是从桌面应用程序到服务器并返回 和文件系统导航时使用的最佳实践是什么 我知道如何谷歌 并且找到了几种解决方案 但我想知道各种功
  • C# Dns.GetHostEntry 不返回连接到 WiFi 的移动设备的名称

    我有一个 C 中的 Windows 窗体应用程序 我试图获取列表中所有客户端的主机名 下面给出的是 ra00l 来自此链接的代码示例 GetHostEntry 非常慢 https stackoverflow com questions 99
  • 使用 JNI 从 Java 代码中检索 String 值的内存泄漏

    我使用 GetStringUTFChars 从使用 JNI 的 java 代码中检索字符串的值 并使用 ReleaseStringUTFChars 释放该字符串 当代码在 JRE 1 4 上运行时 不会出现内存泄漏 但如果相同的代码在 JR
  • 未定义的行为或误报

    我 基本上 在野外遇到过以下情况 x x 5 显然 它可以在早期版本的 gcc 下编译干净 在 gcc 4 5 1 下生成警告 据我所知 警告是由 Wsequence point 生成的 所以我的问题是 这是否违反了标准中关于在序列点之间操
  • Visual Studio 中的测试单独成功,但一组失败

    当我在 Visual Studio 中单独运行测试时 它们都顺利通过 然而 当我同时运行所有这些时 有些通过 有些失败 我尝试在每个测试方法之间暂停 1 秒 但没有成功 有任何想法吗 在此先感谢您的帮助 你们可能有一些共享数据 检查正在使用
  • 上下文敏感与歧义

    我对上下文敏感性和歧义如何相互影响感到困惑 我认为正确的是 歧义 歧义语法会导致使用左推导或右推导构建多个解析树 所有可能的语法都是二义性的语言是二义性语言 例如 C 是一种不明确的语言 因为 x y 总是可以表示两个不同的事物 如下所述
  • 等待线程完成

    private void button1 Click object sender EventArgs e for int i 0 i lt 15 i Thread nova new Thread Method nova Start list
  • std::async 与重载函数

    可能的重复 std bind 重载解析 https stackoverflow com questions 4159487 stdbind overload resolution 考虑以下 C 示例 class A public int f
  • 有人可以提供一个使用 Amazon Web Services 的 itemsearch 的 C# 示例吗

    我正在尝试使用 Amazon Web Services 查询艺术家和标题信息并接收回专辑封面 使用 C 我找不到任何与此接近的示例 所有在线示例都已过时 并且不适用于 AWS 的较新版本 有一个开源项目CodePlex http www c
  • 如何从main方法调用业务对象类?

    我已将代码分为业务对象 访问层 如下所示 void Main Business object public class ExpenseBO public void MakeExpense ExpensePayload payload var
  • .NET中的LinkedList是循环链表吗?

    我需要一个循环链表 所以我想知道是否LinkedList是循环链表吗 每当您想要移动列表中的 下一个 块时 以循环方式使用它的快速解决方案 current current Next current List First 电流在哪里Linke
  • (de)从 CSV 序列化为对象(或者最好是类型对象的列表)

    我是一名 C 程序员 试图学习 C 似乎有一些内置的对象序列化 但我在这里有点不知所措 我被要求将测试数据从 CSV 文件加载到对象集合中 CSV 比 xml 更受青睐 因为它更简单且更易于人类阅读 我们正在创建测试数据来运行单元测试 该集
  • gcc 的配置选项如何确定默认枚举大小(短或非短)?

    我尝试了一些 gcc 编译器来查看默认枚举大小是否很短 至少一个字节 强制使用 fshort enums 或无短 至少 4 个字节 强制使用 fno short enums user host echo Static assert 4 si
  • 为什么在setsid()之前fork()

    Why fork before setsid 守护进程 基本上 如果我想将一个进程与其控制终端分离并使其成为进程组领导者 我使用setsid 之前没有分叉就这样做是行不通的 Why 首先 setsid 将使您的进程成为进程组的领导者 但它也

随机推荐

  • 如何仅向特定行授予 MySQL 权限

    假设有一张学生桌 学生 身份证号 姓名 城市 我想创建一个用户 A 并仅授予更新 id 10 的记录的权限 CREATE USER A GRANT UPDATE ON student TO A WHERE student id 10 我尝试
  • php检查数组中的多个日期是否在日期范围内

    我有一个结构如下的数组 Array 0 gt 24 12 2013 1 gt 25 12 2013 2 gt 26 12 2014 3 gt 27 12 2013 4 我想检查数组中的任何日期是否在给定的日期范围内 日期范围的结构如下 st
  • 我可以隐藏 UIDocumentInteractionController 视图上的操作按钮吗?

    我想知道是否可以隐藏 UIDocumentInteractionController 上的操作按钮 以便用户实际上无法在另一个应用程序中打开文档 我发现了一些对我来说足够有效的东西 BOOL documentInteractionContr
  • 如何设置自定义小部件的背景颜色和边框宽度?

    我有一个自定义小部件 其父级是另一个自定义小部件 我可以使用设置父自定义小部件的背景颜色QPalette而且效果很好 但我无法使用两者来设置子自定义小部件的边框颜色QPalette and stylesheet 这就是我设置父自定义小部件背
  • 使用 Azure Ad 中的服务应用程序限制对组或单个邮箱的访问

    我有一个 Azure 集成服务应用程序 守护程序应用程序 具有 Microsoft graph api 的权限 我现在可以读取整个公司的所有邮箱 这很棒 但可能会引起业务管理方面的一些担忧 我们在 Office 365 中使用 Outloo
  • StructureMap HowTo:深层对象的条件构造

    我很难有条件地创建依赖关系 谷歌搜索 我还没有找到使用 BuildStack 和条件谓词的好例子 这是我在注册表中所做的事情 snip public SomeRegistry this InstanceOf
  • 有什么可能的方法从 UIViewcontroller 类调用 drawRect 吗?

    我有一个UIViewController类称为AppController h AppController m 我在那里有数千行代码 这是我在询问之前没有测试它的唯一原因 有没有可能的方法来使用drawRect in a UIViewCont
  • 提高 Get-FileMetaData 的速度

    我目前正在使用以下来自 scriptingguys com 的脚本 这一切都归功于他们 我只是添加了最后两行 它需要一个目录并从文件的元数据中提取文件路径和注释字段 目前该脚本需要 1 5 分钟多一点才能完全运行 有没有办法加快速度或使用不
  • 按电源按钮启动应用程序

    我找到了这个code按电源按钮启动应用程序 我不知道为什么这个代码对我不起作用 但无论如何我正在将一些代码与清单一起放置 请检查 然后告诉我通过按一次或两次电源按钮启动应用程序的代码是否正确 toast Toast makeText get
  • 正则表达式根据之前匹配的内容来匹配某些内容

    我正在尝试编写一个正则表达式来验证移动国际象棋代数记数法 这是我到目前为止所拥有的 O O O Castling KQRBN x a h 1 8 Most normal moves and captures 我迷失的地方是典当促销 马 主教
  • SwingFXUtils 图像序列化替代方案(Javafx、Swing、Raspberry Pi)

    我的 JavaFX 应用程序的用例之一是在一侧加载图像 通过 TCP 套接字对其进行序列化 以在另一侧将其显示为 JavaFX 图像 为了实现这个我正在使用SwingFXUtils fromFXImage and SwingFXUtils
  • Angular 2 + 如何使用相同的选择器选择和循环多个元素(elementRef.nativeElement)

    在我的组件中 我尝试取消选择具有相同类名的所有复选框 querySelector每次 或一次 仅选择第一个 并且querySelectorAll不选择任何内容 这就是函数 我知道这样使用 jQuery 是错误的 但它说明了我的目标 unse
  • C 套接字发送 UDP 并处理来自路由器的 ICMP 回复

    我正在尝试向生存时间为 1 的路由器发送 UDP 数据包 然后接收 ICMP 超时回复 到目前为止 我能够发送数据包 但是当我的程序到达执行的接收部分时 它就挂起了 我对recvfrom进行了错误检查 但它甚至没有达到这一点 我的计算机正在
  • 在匹配中返回 Result>

    我有一组实现给定特征的类型 我想从字符串名称中获取具体类型对象 奇怪的是 当我的match回报Box
  • 目标 c 中 didload 方法启动时的 LandscapeOrientation

    我做了一个iPad应用程序 当我第一次以纵向模式加载应用程序时 它工作正常 但是当我第一次以横向模式加载应用程序时 它仅采用纵向模式的坐标 因为在我的内部didLoad方法我只给出纵向模式的坐标 现在需要给出我的横向模式的坐标didLoad
  • Docker 无法启动 Rails

    我正在尝试使用 Rails 启动我的 Rails 应用程序 它依赖于redis 它似乎可以工作 但是当rails服务器启动时它会失败Cannot assign requested address connect 2 for 1 6379 E
  • GetFileVersionInfo() 返回错误的文件版本信息

    我有一个应用程序需要检查各种系统 EXE 和 DLL 的版本以确定它们是否容易受到攻击 这是一个本机 C 应用程序 在其清单中不提供任何特定的 WinSxS 链接 在 Windows 7 上 当我在绝对路径 例如 c windows sys
  • 编写函数将某些列更改为小写

    我正在尝试编写一个函数 该函数允许我将数据框中某些字段的大小写更改为小写 我试图通过使用 function for 和 tolower 命令来做到这一点 但我没有任何运气 我对 R 还很陌生 所以我可能会遗漏一些明显的东西 我将不胜感激任何
  • 将具有动态高度的 div 移出其父容器

    我正在尝试将高度动态变化的 div 移出其父 div 并返回 问题是动态高度 否则我可以轻松地将负高度设置为底部值 现在我只是将一个很大的负数像素设置为底部值 但这不是很好 也不能正确解决问题 从逻辑上讲 这种情况发生在少数人身上 fidd
  • 这个计算每个元音出现次数的 C 程序有什么问题?

    PROBLEM 编写一个 C 程序 提示用户输入一串以 ENTER 键结尾的字符 即 n 然后统计该字符串中每个元音出现的总数 您的程序应遵循以下准则 你的程序应该声明一个由5个整型计数器组成的数组 即counter 使用循环 您的程序应将