字符计数程序,字符作为整数问题

标签 c arrays for-loop char integer

<分区>

if 语句永远不会触发,因此在第二个 for 循环中所有值都打印为 0。

#include <stdio.h>

int main()
{
    char string[100] = "this is A TEST";
    int count[26] = {0};
    int i = 0;

    for(i = 0; string[i] != '\0'; i++){
        if((string[i] + '0') == (i + 97) || (string[i] + '0') == (i + 65)){
            count[i]++;     
        } 
    }

    for(i = 0; i < 26; i++){
        printf("%c: %d \t", i+97, count[i]);

    }

    return 0;
}

最佳答案

你的意思好像是下面这样

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

int main( void ) 
{
    char string[] = "this is A TEST";
    unsigned int frequency['Z' -'A' + 1] = { 0 };

    for ( const char *p = string; *p; ++p )
    {
        char c = toupper( ( unsigned char )*p );
        if ( c >= 'A' && c <= 'Z' ) ++frequency[c-'A'];
    }

    for ( char c = 'A'; c <= 'Z'; ++c )
    {
        if ( frequency[c-'A'] ) printf( "%c: %u\t", c, frequency[c-'A'] );
    }
    printf( "\n" );
}    

程序输出为

A: 1    E: 1    H: 1    I: 2    S: 3    T: 3

至于你的程序,那么对于初学者来说,这个 if 语句

if((string[i] + '0') == (i + 97) || (string[i] + '0') == (i + 65)){

没有意义。

关于字符计数程序,字符作为整数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35816080/

相关文章:

c++ - 数组的地址

c++ - 在 C++ 中使用 for 循环从用户输入中查找最大和最小整数?

javascript - 为贝塞尔曲线创建 for 循环

c++ - I/O 完成端口与 QueueUserApc?

java - 如何比较二维数组

C程序导致内存泄漏?

javascript - 使用 Javascript 中的值从多维数组中删除元素

r - 在 R 中寻找适用于嵌套 for 循环情况的 apply、tidyr 或 dplyr 解决方案

c - 搜索字符串并将其与字符串数组进行比较

c - strtoll 和 division 没有返回正确的数字