编程实现每5个数一行的形式输出所有十位不能被3整除的3位整数?

2025-03-26 10:09:24
推荐回答(3个)
回答1:

题主的问题主要是判断整除的内容是不对的。

题主的代码,用于判断十位的语句是:if(i/10%3!=0),问题就处实际上,i/10能够得到的是百位和十位一起构成的一个两位数,而不是单纯的十位上的数字。

举例子:当i=168的时候,按照题主的算式:其实是判断i/10=16是否能被3整除,所以是不正确的。

因此,如果只取十位,应该使用:(i/10)%10,来取得单纯的十位上的数字,从而实现题目要求。

当然,这里正经方法就是这样了,代码修改如下:

#include
int main()
{
int i,n=0;
for(i=100;i<1000;i++)
{
if(((i/10)%10)%3!=0)
{
printf("%-4d",i);
n++;
if(n%5==0)
printf("\n");
}
}
return 0;
}

结果如图:



当然了,考虑毕竟不是要求用户输入一个0-9的数来判断,而是确定了3,我们知道一定是3/6/9,那也可以干脆用三个条件去取代取余也是可以的,比如:

int tenth=(i/10)%10;

if(tenth!=3||tenth!=6||tenth!=9)...

回答2:

#include

int main()

{

    int i, n = 0;

    for (i = 100; i < 1000; i++)

    {

        if (i % 10 % 3 != 0)

        {

            printf("%-4d", i);

            n++;

            if (n % 5 == 0)

                printf("\n");

        }

    }

    return 0;

}

回答3:

#include
int main()
{
int i,n;
printf("所有十位不能被3整除的3位整数为:\n");
for(i=100;i<1000;i++)
{

if(i/10%10%3!=0)
{
n++;
printf("%d ",i);
if(n%5==0)
printf("\n");
}
}
return 0;
}