求小于等于n的与七无关的数(一个数能被七整除,或者某一位上有七则为与七有关的数),不知道哪里错了,无法运行

#include
int main()
{
long long n,i,s;
scanf("%d",&n);
s=n;
for(i=1;i<=n;i++)
{
if(i%7==0) s=s-1;
else
do
{
if(i%10==7){s=s-1;break;}
else i=i/10;
}while(i!=0);
}
printf("%d",s);
return 0;
}

死循环了。因为你的循环计数变量i在循环体内发生了变化。

#include <stdio.h>

int main() {
    long long n, i, s;
    scanf("%d", &n);
    s = n;
    for (i = 1; i <= n; i++) {
        int tmp = i;
        if (tmp % 7 == 0)
            s = s - 1;
        else
            do {
                if (tmp % 10 == 7) {
                    s = s - 1;
                    break;
                } else
                    tmp = tmp / 10;
            } while (tmp != 0);
    }
    printf("%d", s);
    return 0;
}