首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >查找数字5在0- 4322内出现的次数

查找数字5在0- 4322内出现的次数
EN

Stack Overflow用户
提问于 2016-04-21 06:17:43
回答 2查看 50关注 0票数 0

这段代码似乎不适合我。它输出数字17,这显然是wrong.the计数器,如果遇到5,15,25,50等数字,就应该递增。

代码语言:javascript
运行
复制
#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;
}
EN

回答 2

Stack Overflow用户

发布于 2016-04-21 06:26:54

您没有将数字转换为字符串,而是向strstr()传递了不是以null结尾的字符串。您还忘记了初始化counter

你应该一个接一个地检查数字。试试这个:

代码语言:javascript
运行
复制
#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;
}
票数 6
EN

Stack Overflow用户

发布于 2016-04-21 06:28:19

这段代码中有很多问题。

代码语言:javascript
运行
复制
char num[4322];

这是一个4322个字符的数组。你可能不想这样,我不知道为什么它会出现在这里。

代码语言:javascript
运行
复制
num[i] = i;

这是无效的,因为您不能将大数字分配给char。这不会将数字转换为字符串,而是会将数字转换为不同的char。所以5不会变成"5",但会变成\x05

代码语言:javascript
运行
复制
strstr(&num[i], "5")

这将搜索"5",但是因为该数组不是以nul结尾的,所以它是不正确的。另请注意,您存储的是

代码语言:javascript
运行
复制
int counter;

请注意,counter未初始化。这是一个错误。

下面是一个类似的程序,它是正确的(但本身并不“有效”):

代码语言:javascript
运行
复制
#include <stdio.h>
#include <string.h>
int main() {
    int counter = 0; // initialize to 0
    for (int i = 0; i < 4322; i++) {
        // Put the number in a string
        char buf[10];
        snprintf(buf, sizeof(buf), "%d", i);
        // Count 5s
        for (char *p = buf; *p; p++) {
            if (*p == '5') {
                counter++;
            }
        }
    }
    printf("%d", counter);
}

请注意,@MikeCAT的答案跳过了int ->字符串转换,这在某种程度上是不必要的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36756225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档