Description
输出7和7的倍数,还有包含7的数字例如(17,27,37...70,71,72,73...)的个数。
Input
一个整数N。(1<=N<=30000)
Output
统计出从1开始不大于N的与7有关的数字的个数。如20以内与7有关的数为7、14、17共3个。
Sample Input
20
Sample Output
3
#include<stdio.h>
#include<string.h>
#define N 10
int main()
{
//方法二 将数字的各位都取出来
int n;
scanf("%d",&n);
int i,sum=0;
for(i=1;i<=n;i++)
{
if(i%7==0)
{
sum++; //7的倍数
}
else//避免含7与7的倍数重合计数
{
int t=i;//暂存i的值 写在while循环外!!
while(t>9)//!!!!t>9
{
if(t%10==7)
{
sum++;
break;//取出数字的各个位数 只要含有7就计数加一 并且跳出当前循环进入下一个数字
}
t=t/10;//把每一次新数字的个位去掉 为了下一次的取余数求个位做准备
}
//当t小于9时则为最高位数字
if(t==7) //因为t%10==7跳出循环的一定是大于9的,所以不可能等于7,不会重复计数,,,,所以t此时一定是最高位
sum++;
}
}
printf("%d",sum);
return 0;
}
求各位数
#include<stdio.h>
#include<math.h>
#define N 100
int main()
{
int t,i=0,a[N];
scanf("%d",&t);
//方法一
// while(t>9)//!!!!t>9
// {
// a[i]=t%10;//保存每一个新数的个位
// i++;
// t=t/10;//把每一次新数字的个位去掉 为了下一次的取余数求个位做准备
// }
// a[i]=t;//最高位 所以应该为i+1位数字!!!
// int w=0,b[N]; //共i+1位
// for(int j=i;j>=0;j--)
// {
// b[w]=a[j];
// w++;
// }
// printf("%d\n",i+1);
// for(int j=0;j<=i;j++)
// printf("%d ",b[j]);
//方法二
int n=(int)log10(t)+1;//求整数位数
int c[N];
for(i=n-1;i>=0;i--)//倒着存
{
c[i]=t%10;
t=t/10;
}
for(i=0;i<n;i++)
printf("%d ",c[i]);
return 0;
}