从1到N的与7有关的数字(输出7和7的倍数还有包含7的)以及怎样求整数的各个位数

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; 
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值