编程:c语言“1”的传奇 纠正

Python016

编程:c语言“1”的传奇 纠正,第1张

#include <stdio.h>

//你写的好复杂呀,所以没有仔细看下去

//就重写了一个  

//过程是从个位开始逐位向前判断 

//至于pow()的问题,我试了一下结果正确

//但是可能的原因是 pow()的返回值是double

//型的,你用int型的变量去接收精度丢失了吧 

int main(void)

{

int n

int a //记录 n%10

int num = 0//记录 1 的个数 

printf("Input n:")

scanf("%d",&n)

while(n)

{

a = n % 10

if(a == 1)

num++

n = n / 10

}

printf("num = %d\n",num)

    return 0

}

#include <stdio.h>

#include <stdlib.h>

int numCnt(int num) {

    int nRet = 0

    // 将数字转换成字符串,然后解析字符串即可

    char chNum[10] = {'\0'}

    char *p = chNum

    sprintf(chNum, "%d", num)

    // 只要解析到就行了

    while ('\0' != *p) {

        if ('1' == *(p++)) {

            nRet++

            printf("yes to change [%d] - %d \n", num, nRet)

        }

    }

    return nRet

}

int main(void)

{

    int num

    int nCnt = 0

    printf("Please Input n : ")

    scanf("%d", &num)

    for (int i = 1 i <= num i++) {

        nCnt += numCnt(i)

    }

//    if (num >= 10) nCnt += 1

    printf("the count is: %d\n", nCnt)

    return 0

}