c语言,打孔问题,求大神指导。

问题描述:

 题目,s得到一个数,他想知道这个数每一位上的数字的孔数之和,其中,1,2,3,5,7这几个数字是没有孔的,0,4,6,9都只有一个孔,而8有两个孔。

不知道是不是这个意思

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

int holeNum[10] = {
    1, 0, 0, 0, 1, 0, 1, 7, 2, 1
} ;

int getHoleNum(char* buff){
    int res = 0;
    int len = strlen(buff);
    for(int i = 0; i < len; i++){
        res += holeNum[buff[i] - '0'];
    }
    return res;
}

int main(){
    int res;
    int size = 1024;   
    char* buff = (char*)malloc(size);

    while(true){
        printf("请输入数字:");
        gets(buff);
    //  printf("%s", buff);
        printf("该数字的洞数共有%d个\n", getHoleNum(buff));    
    }
    return 0;
}

取整数的各个数位,利用分支switch case或者条件if语句,判断其属于那种数字。然后计算孔。取整数S的各个数位:
count=0;
for(i=1;; i++){
d=S%10;
S=S/10;
switch (d){
case 0:
case 4:
case 6:
case 9:count++;

}

if(S==0)break;
}
printf("%d",count);
以上是代码片段!