C语言//有这样3个三位数,第一个三位数是第二个三位数的2倍,是第三个的3倍,且这三个数包含1~9;//有这样3个三位数,第一个三位数是第二个三位数的2倍,//是第三个的3倍,且这三个三位数正好是
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/09 10:21:13
C语言//有这样3个三位数,第一个三位数是第二个三位数的2倍,是第三个的3倍,且这三个数包含1~9;//有这样3个三位数,第一个三位数是第二个三位数的2倍,//是第三个的3倍,且这三个三位数正好是
C语言//有这样3个三位数,第一个三位数是第二个三位数的2倍,是第三个的3倍,且这三个数包含1~9;
//有这样3个三位数,第一个三位数是第二个三位数的2倍,
//是第三个的3倍,且这三个三位数正好是1~9这9个数字.
#include
int main(void)
{
int i,j,k,s,m,n,i1,j1,k1;//i,j,k是三个三位数,
int a[9],b[9]={0};
for(i=300;i
C语言//有这样3个三位数,第一个三位数是第二个三位数的2倍,是第三个的3倍,且这三个数包含1~9;//有这样3个三位数,第一个三位数是第二个三位数的2倍,//是第三个的3倍,且这三个三位数正好是
错误比较多,基础逻辑i==2*j 就是错的,与题意不符,后面i在循环里被使用,对循环是干扰.
根据你的代码做了调整,对比看看吧:
#include <stdio.h>
int main(void)
{
\x05int i,j,k,s,m,i1,j1,k1;
\x05int a[9],b[9]={0};
\x05for(i=300;i<1000;i++)
//\x05\x05for(j=150;j<500;j++)
//\x05\x05\x05for(k=100;k<340;k++) 循环太多了
\x05{
\x05\x05j = i*2/3;
\x05\x05k = i/3;
\x05\x05if((j==2*k)&&(i==3*k))//3*j-->>3*k and i not equal 2*j!
\x05\x05{
\x05\x05\x05for(s=0;s<9;s++)
\x05\x05\x05\x05b[s] = 0;//每次都要初始化
\x05\x05\x05i1=i;j1=j;k1=k;m=0;
\x05\x05\x05for(s=0;s<3;s++)
\x05\x05\x05{
\x05\x05\x05\x05a[s]=i1%10;//这里不能用i,会改变循环
\x05\x05\x05\x05i1=i1/10;
\x05\x05\x05}
\x05\x05\x05for(s=3;s<6;s++)
\x05\x05\x05{
\x05\x05\x05\x05a[s]=j1%10;
\x05\x05\x05\x05j1=j1/10;
\x05\x05\x05}
\x05\x05\x05for(s=6;s<9;s++)
\x05\x05\x05{
\x05\x05\x05\x05a[s]=k1%10;
\x05\x05\x05\x05k1=k1/10;
\x05\x05\x05}
\x05\x05\x05for(s=0;s<9;s++)//统计各个数字的个数,i不能用啊!
\x05\x05\x05\x05if(a[s]>0&&a[s]<10)//安全判断,并去除0
\x05\x05\x05\x05\x05b[a[s]-1]++; //-1
\x05\x05\x05for(s=0;s<9;s++)
\x05\x05\x05\x05if(b[s]==1)
\x05\x05\x05\x05\x05m++;
\x05\x05\x05if(m==9)
\x05\x05\x05\x05printf("%d %d %d\n",i,j,k);
\x05\x05}
\x05}
\x05return 0;
}