【C语言】数的循环输出(不再枚举)

例题一

l今天牛牛学到了回文串,他想在数字里面找回文,即回文数,回文数是正着读与倒着读都一样的数,比如1221,343是回文数,433不是回文数。请输出不超过n的回文数。

方法一

#include "stdio.h"
int main()
{
	int a,b[10000],c,s=0,i=1,n,m;
	scanf("%d",&a);
	for(m=1;m<a;m++)
	{
	n=m;
	while(n>=1)
	{
		b[i]=n%10;
		n=n/10;
		i++;
	}
	c=i;
	for(i=1;i<c;i++)
	{
		s=s*10+b[i];
	}
	if(s==m)printf("%d\n",m);
	i=1;
	s=0;
	}
}

方法二

#include <stdio.h>
#include <math.h>
int main()
{
	int s = 0, i, j, x, n;
	
	scanf("%d", &n);

	for(i = 1; i <= n; i++)
	{
		if(i <= 9)printf("%d\n", i);
		if(i <= 99 && i >= 10)if(i % 10 == i / 10)printf("%d\n", i);
		if(i <= 999 && i >= 100)if(i % 10 == i / 100)printf("%d\n", i);
		if(i <= 9999 && i >= 1000)if(i % 10 == i / 1000 && i /10 % 10 == i /100 % 10)printf("%d\n", i);
		if(i <= 99999 && i >= 10000)if(i % 10 == i / 10000 && i /10 % 10 == i /1000 % 10)printf("%d\n", i);
	}
} 

 

 

例题二

求出[a,b]区间内有多少个数数位之和为5的倍数

方法一

#include <stdio.h>

int main()
{
	int m, n, i, s = 0, x = 0, j;
	scanf("%d %d", &n, &m);


	for(i = n; i <= m; i++)
	{
		j = i;
		while(j >= 1)
		{
			s += j % 10;
			j = j / 10;
		}
		if(s % 5 == 0 && s != 0)
		{
			x++;
		}
		s = 0;
	}

	printf("%d", x);
	
} 

方法二


#include <stdio.h>
int main()
{
    int a,b,k=0;
    scanf("%d %d",&a,&b);
    int sww,ww,qw,bw,sw,gw;
    for(int i=a;i<=b;i++)
    {
        sww=i/100000;
        ww=i%100000/10000;
        qw=i%100000%10000/1000;
        bw=i%100000%10000%1000/100;
        sw=i%100000%10000%1000%100/10;
        gw=i%100000%10000%1000%100%10;
        if((sww+ww+qw+bw+sw+gw)%5==0)
            k++;
    }
    printf("%d",k);
}

例题三

试计算在区间1 到n 的所有整数中,数字x(0 ≤ x ≤ 9)共出现了多少次?

例如,在1到11 中,即在1、2、3、4、5、6、7、8、9、10、11 中,数字1 出现了4 次。

#include <stdio.h>
#include <math.h>
int main()
{
	int s = 0, i, j, x, n;
	
	scanf("%d %d", &n, &x);

	for(i = 1; i <= n; i++)
	{
//		if(i == x) s++;
		for(j = i; j >= 1; j= j / 10)
		{
			if(j % 10 == x) s++;
		}
	}
	
	printf("%d",s);
} 

 

 

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

漆黑の莫莫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值