题主的问题主要是判断整除的内容是不对的。
题主的代码,用于判断十位的语句是: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)...
#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;
}
#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;
}