找幸运数
题目描述
数字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#include //I think I should improve my POOR English, so all the comments are written in Englishint 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.