#include<stdio.h>
#include<math.h>
int main()
{
int n;
scanf("%d",&n);
int ns = n; //用来代替n进行运算
int all[10]; //用来储存每一位数字
int i;
for(i = 0 ; i < 10 ; i++)
{
all[i] = 0; //初始化
}
//先找到有多少位数
int count = 0 ; //计数器
while(ns > 0)
{
ns = ns / 10;
count++;
} //此时已经记录了有多少位数
int yu = 10; //用来制作第一步 先把原来的数全部取余 1234 -> 4 34 234 1234 然后存入数组
int j;
for(j = 1 ; j <= count ; j++)
{
all[j] = n % yu;
yu = yu * 10;
}
int k;
int t; //这里准备用除 用除能够把原来的数里的每一个数字都提取出来
for(k = 0 ; k <= count ; k++) //比如四位数,就要用四遍循环
{
for( t = 0 ; t < count; t++) //数组是从索引为0出发的
{
if (all[k] > 10)
{
all[k] = all[k] / 10;
}
}
}
//重难点 判断NO
int p ;
int have = 0;//标志 如果为0则没有等于4或7 为1则有
for(p = 0 ; p < count ;p++)
{
if(all[p] == 4 || all[p] == 7)
{
printf("YES");
have = 1;
break;
}
}
if(p == count && !have)//如果经过遍历后 用于遍历的变量如果等于总位数,并且标志始终为0,那就说明都不等于7或4
{
printf("NO");
}
// int g;
// for(g = 1 ; g <= count ; g++)
// {
// printf("%d\n",all[g]);
// }
return 0;
}
假定幸运数是只包含4或7的正整数,如7、47。判断一个正整数n是不是一个幸运数。是则输出YES,否则输出NO。不考虑负数,0或者其他特殊情况。不考虑溢出或者超出整型范围的情况。通用版!
最新推荐文章于 2024-03-13 19:36:12 发布