An Easy C Program Problem

找幸运数

题目描述

数字8最多的那个数为幸运数。
输入n和n个整数,找这n个数中的幸运数。在主函数中调用ndigit函数,判断某个整数x含数字8的个数。如果有多个幸运数输出第一个幸运数,如果所有的数中都没有含数字8,则输出NO.

函数int ndigit(int n,int k)功能:统计整数n中含数字k的个数。

输入描述

输入n个n个整数

输出描述

幸运数

输入样例

5 568 567 328 48768 8688

输出样例

8688


ANSWER(with a little presentation error)

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

//I think I should improve my POOR English, so all the comments are written in English

int ndigit (int n, int k);

int main()
{
    /**
     * @param n INPUT 1
     * @param num the temp of the number in INPUT
     * @param luckyNum the lucky number
     * @param luckyDigCount the count of lucky digit in the lucky number
     */
    int n, i, num, luckyNum = 0, luckyDigCount = 0;

    //get the INPUT
    scanf("%d", &n);

    //get n numbers from console 
    //and find the lucky number
    for (i = 0; i < n; i++)
    {
        //get the input
        scanf("%d", &num);

        //if the count of lucky digit in current number more than current lucky number's
        if (ndigit(num, 8) > luckyDigCount)
        {
            //set current number as lucky number
            luckyDigCount=ndigit(num,8);    
            luckyNum = num;
        }
    }
    //if lucky number doesn't have a lucky digit
    //that means there is no lucky number in this test case
    //so, Print "NO"
    if (luckyDigCount==0)
    {
        printf("NO");
    }
    else
    {
        //Print the lucky number 
        printf("%d\n", luckyNum);
    }
}
/**
 * get the count of lucky digit in the param n
 * @param  n test number
 * @param  k lucky digit
 * @return   the count of lucky digit in the param n 
 */
int ndigit (int n, int k)
{
    int count = 0;
    for (; n; n /= 10)
    {
        if (n%10 == k)
        {
            count++;
        }
    }

    return count;
}

SUMMARY

What if the OUTPUT is the biggest lucky number?
Add a judgement statement,that compare current number to the previous lucky number, after we ensure current number is one of the lucky numbers.

转载于:https://www.cnblogs.com/JacZhu/p/5486536.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值