例题一
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);
}