查找数字5出现在0 - 4322之间的次数

Bos*_*evz 0 c arrays string pointers strstr

这段代码似乎对我不起作用.它输出的数字17显然是错误的.如果遇到5,15,25,50等数字,计数器应该会上升.

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

int main(void) {
    int i;
    int counter; 
    char num[4322];

    for (i = 1; i < sizeof(num); i++){
        num[i] = i;
        if ( strstr(&num[i], "5")){
            counter = counter + 1;
        }
    } 

    printf("%d", counter);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Mik*_*CAT 6

您没有将数字转换为字符串,并且您传递的不是以null结尾的字符串strstr().你也忘了初始化counter.

你应该逐个检查数字.试试这个:

#include <stdio.h>

int main(void) {
    int max = 4322;
    int target = 5;
    int i, cur, counter = 0;
    for (i = 1; i <= max; i++) {
        for (cur = i; cur > 0; cur /= 10) {
            if (cur % 10 == target) counter++;
        }
    }
    printf("%d\n", counter);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)