gpt4 book ai didi

c - 使用 getchar() 存储一个值以与整数进行比较

转载 作者:太空宇宙 更新时间:2023-11-04 07:27:53 26 4
gpt4 key购买 nike

我正在尝试计算用户输入某个数字的次数,并将实例总数分配给 10 行数组 (0-9) 中的某个位置。例如,如果用户输入 888,它会将 3 分配给位置 arr1[8]。

#include <stdio.h>
#include <stdlib.h>

int main(void){
int arr1[10] = {0};
int c;

while ((c = getchar()) != '\n'){
for (int i = 0; i <= 9; i++){
if (c == i) // This isn't doing what I want it to do
arr1[i] += 1;
}
}
for (int i = 0; i <= 9; i++)
printf ("%c ", arr1[i]);
}

问题似乎是我在上面的评论中添加的那一行。 if (c == i) 行旨在比较用户输入的数字(因为它是由用户输入的,而不是 ASCII 值)并将其与 i 进行比较。

那么如何比较 ci 是同一类型呢?我试过将 getchar() 的类型更改为 char, signed int, unsigned int 但它似乎没有任何区别。

最佳答案

  1. 你必须减去'0'。
  2. 您正在使用 %c 打印字符以进行计数。
  3. 您在循环中按 i 递增计数,而不是希望每个字符递增 1。

更正后的代码:

    int main(void){
int arr1[10] = {0};
int c;
while ((c = getchar()) != '\n'){
for (int i = 0; i <= 9; i++){
if (c - '0' == i)
arr1[i] += 1;
}
}
for (int i = 0; i <= 9; i++)
printf ("%d ", arr1[i]);
}

关于c - 使用 getchar() 存储一个值以与整数进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16521868/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com