求C语言高手改错解析,我是小白,谢谢拉
#include<stdio.h>
void main()
{
int i;
for(i=1;i<=1000;i++)
{
if(i%3==2&&i%5==3&&i%7==2)
{
printf("最小数是:%d\n",&i);
}
}
}
为什么一个数都没有?这个题目如何做呢?谢谢拉 展开
#include<stdio.h>
void main()
{
int i,min=1000;
for(i=1;i<=1000;i++)
{
if(i%3==2&&i%5==3&&i%7==2)
{
if(min>i)
min=i;
}
}
printf("最小数是:%d\n",min);
}
你的printf("最小数是:%d\n",&i);这句话不要&这个符号,这个符号是地址的意思
而scanf()中必须要有&这个符号(指针除外),因为赋值只能给地址的变量赋值
你要用一个变量把其中的最小值表示出来
用min和已经筛选出来的数相比,如果min比这个数大,就把min变成这个数
或者这样也可以:
#include<stdio.h>
void main()
{
int i,min;
for(i=1000;i>0;i--)
{
if(i%3==2&&i%5==3&&i%7==2)
{
min=i;
}
}
printf("最小数是:%d\n",min);
}
因为i是一直递减的,所以只要能满足前面的条件,最后一个数肯定比前面的小
同理,这样也可以:
#include<stdio.h>
void main()
{
int i;
for(i=1;i<=1000;i++)
{
if(i%3==2&&i%5==3&&i%7==2)
{
printf("最小数是:%d\n",i);
break;
}
}
}
因为i是递增的,所以第一个数肯定是最小的,输出后用break;退出for循环就可以了
这个有问题
输出的应该为i值,不是i的地址。
改为:printf("最小数是:%d\n",i);
你再看看
void mian()
{
int i,num=0;
for(i=0;num==0;i++)
{
if(i%3==2 && i%5==3 && i%7 == 2)
{ num = i;break;}
}
printf("最小数是:%d\n",i);
}
结果应该是一样的
1 不要单纯的说什么从1-1000的循环来找这个数
2 printf这个函数的格式你用错了,i前面的&不需要加的 ,加的意思 就一不一样了 是取地址