<c>
#include<stdio.h>
int check4(int arr[], int m, int n)
{
int k, s, locate, sum1, number, temp,t;
number = n;
locate = 1;
sum1 = NULL;
while (locate <= m-n);
{
int i = NULL;
temp = number;
while (temp >= 10)
{
temp = temp / 10;
i++;
}
s = 1;
while (i--)
{
t = 1;
for (s = 1;s <= i;s++)
{
t = t * 10;
}
k = number / s % 10;
if (k == 4 || number % temp == 4)
{
sum1++;
arr[locate] = 1;
break;
}
}
locate++;
number++;
}
return sum1;
}
int check62(int m, int n, int arrS[], int arr[])
{
int sign, s, k, sum2, number, temp,t;
int locate = 1;
sum2 = NULL;
number = n;
while (locate <= m - n)
{
temp = number;
int i = 0;
while (temp >= 10)
{
temp = temp / 10;
i++;
}
sign = 1;//用来标识数位
s = 1;
while (i--)
{
t = 1;
for (s = 1;s <= i;s++)
{
t = t * 10;
}
k = number / s % 10;
if (t == 1)
{
arr[sign] = number % temp;
}
else
{
arr[sign] = k;
sign++;
}
}
for (int i = 0; i < sign; i++)
{
if (arr[i] == 6 && arr[i + 1] == 2)
{
sum2++;
arrS[locate] = 1;
break;
}
}
locate++;
number++;
}
return sum2;
}
int reduce(int arr[],int arrS[],int m ,int n)
{
int reduce = NULL;
for (int i = 0;i < m - n;i++)
{
if (arr[i] == arrS[i] && arr[i] == 1)
{
reduce++;
}
}
return reduce;
}
int main()
{
int m, n;
printf("请输入区间[n,m]: ");
scanf_s("%d %d", &m, &n);
int temp[10];
int arr[1000];
int arrS[1000];
int sum1 = check4(arr,m,n);
int sum2 = check62(m, n, arrS,temp);
int sum = sum1 + sum2 - reduce(arr,arrS,m,n);
printf("%d", sum);
return 0;
}
第9行,while (locate <= m-n);后面的分号去掉。其它代码类似修改