寻找幸运数急急急急急!!!!!!
题目描述数字8最多的那个数为幸运数。输入n和n个整数,找这n个数中的幸运数。在主函数中调用ndigit函数,判断某个整数x含数字8的个数。如果有多个幸运数输出第一个幸运数,如果所有的数中都没有含数字8,则输出NO.函数int ndigit(int n,int k)功能:统计整数n中含数字k的个数。
输入描述
输入n个n个整数
输出描述
幸运数
输入样例
5 568 567 328487688688
输出样例
8688
用户代码
#include <stdio.h>
#define K 8
int ndigit(int n,int k)
{
int num=0;
while(n)
{
if(k == n%10)
num++;
n/=10;
}
return num;
}
int main()
{
int i,n,maxNum,max,x;
maxNum=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&x);
if(maxNum < ndigit(x,K))
{
maxNum=ndigit(x,K);
max=x;
}
}
if(maxNum == 0)
printf("NO\n");
else
printf("%d\n",max);
return 0;
}
elvo 发表于 2014-4-28 21:18 static/image/common/back.gif
{:5_106:}不过有没有考虑过负整数?你的好像负整数不行喔。因为题目说的是整数{:1_1:} ♂我是上帝♂ 发表于 2014-4-28 21:41 static/image/common/back.gif
不过有没有考虑过负整数?你的好像负整数不行喔。因为题目说的是整数
我的错,疏忽了,恩,在int ndigit()函数中第一行添加
if(n<0) n=-n;
将传入的数值改为正整数 加个abs不就行啦吗!负数就可以了! elvo 发表于 2014-4-28 22:06 static/image/common/back.gif
我的错,疏忽了,恩,在int ndigit()函数中第一行添加
if(n
{:5_106:}这样也可以 #include <stdio.h>
#include <math.h>
#define K 8
int ndigit(int n,int k)
{
int num=0;
while(n)
{
if(k == n%10)
num++;
n/=10;
}
return num;
}
int main()
{
int i,n,maxNum,max,x;
maxNum=0;
printf("请选择输入整数的个数\n");
scanf("%d",&n);
printf("请输入%d个整数\n",n);
for(i=0;i<n;i++)
{
scanf("%d",&x);
if(maxNum < ndigit(fabs(x),K))
{
printf("%d\n",x);
maxNum=ndigit(fabs(x),K);
max=x;
}
}
if(maxNum == 0)
printf("没有幸运数NO\n");
else
printf("幸运数是%d\n",max);
return 0;
} //根据楼上改的!懒人路过! elvo 发表于 2014-4-28 21:18 static/image/common/back.gif
{:1_1:}
Case Id Result Score
0 Pass 3
1 Pass 3
2 Pass 2
3 Pass 2
Total score:10
Judge Result:Presentation Error
返回
elvo 发表于 2014-4-28 20:38 static/image/common/back.gif
这代码不对,你这个是一个数一个数输入的,他是要数组的。 jonng 发表于 2014-4-29 00:00 static/image/common/back.gif
这代码不对,你这个是一个数一个数输入的,他是要数组的。
你可以试试,像数组那样输入,就像题目中的样例输入
页:
[1]