这个式子有解吗?

doublejie 2003-07-11 02:31:34
求ijk + kji = 1333 的i , j , k的程序i、j、k是1位的整数。
我的程序如下:
#include <iostream.h>

void main ()
{
int i = 1;
int j = 0;
int k = 1;

for (; i <= 9; i++)
for (; j <= 9; j++)
for (; k <= 9; k++)
if ((101 * (i + k) + 20 * j) == 1333)
{
break;
}
if (i == 10 && j == 10 && k == 10)
{
cout << "无解" << endl;
return;
}
cout << "i = " << i << endl;
cout << "j = " << j << endl;
cout << "k = " << k << endl;

cin.get ();
return;
}

但是显示 无解,




















...全文
34 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
lihaogao 2003-07-11
  • 打赏
  • 举报
回复
三重for只有一个break.一个break只跳出一个for语句。
1cs1ak1 2003-07-11
  • 打赏
  • 举报
回复



首先
if (i == 10 && j == 10 && k == 10)
{
cout << "无解" << endl;
return;
}
最好一定会成立,一定会打出个“无解”。
当地一次循环,i = 1; j = 0; k = 10后,没有发现解。在从i = 1开始循环时k为10,不会执行if()语句了。
这样:
void main ()
{
int i = 1;
int j = 0;
int k = 1;

for ( i = 1; i <= 9; i++)
for ( j = 0; j <= 9; j++)
for (k = 1; k <= 9; k++)
if (101 * (i + k) + 20 * j == 1333)
{
cout << "i = " << i << endl;
cout << "j = " << j << endl;
cout << "k = " << k << endl;
break;
}

cin.get ();
return;
}

jiuyu 2003-07-11
  • 打赏
  • 举报
回复
#include <iostream.h>
void main()
{
int x=0,y=0,z=0;
for(;x<3;x++)
for(;y<3;y++)
for(;z<3;z++)
cout<<"x"<<x<<"y"<<y<<"z"<<z<<endl;
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
for(int k=0;k<3;k++)
cout<<i<<j<<k<<endl;
}
是不一样的,
为什么?
tttzms 2003-07-11
  • 打赏
  • 举报
回复

改为
#include <iostream.h>

void main ()
{
int i ;
int j ;
int k ;
int a;
for (i=1; i <10; ++i)
{
for (j=0; j <10; ++j)
{
for (k=1; k <10; ++k)
{
a=101 * (i + k) + 20 * j;
if (a == 1333)
{
cout << "i = " << i << endl;
cout << "j = " << j << endl;
cout << "k = " << k << endl;
break;
}

}
if (k<10) break;
}
if (j<10) break;
}
cin.get ();
return;
}
这样只返回第一个解



ftp123 2003-07-11
  • 打赏
  • 举报
回复
还有个问题就是++的问题,这是个先用后加的符号,我想就是对的,它也会出现无解的情况。
ftp123 2003-07-11
  • 打赏
  • 举报
回复
你自己用笔算算看,1333有999+999大吗?这样的问题你也问。问你个题目,
0到9的数中有多少组解可以让从0到9的数中任意取出两个相加为11啊?
算算看,你就知道怎么解决这个问题了。
point_to 2003-07-11
  • 打赏
  • 举报
回复
楼主,可以揭帖了!^_^
bm1408 2003-07-11
  • 打赏
  • 举报
回复
include <stdio.h>

void main() {
int i, j, k;

for( i=0; i<10; ++i )
for( j=0; j<10; ++j )
for( k=0; k<10; ++k ) {
if( (i*100+j*10+k) + (k*100+j*10+i) == 1333 ) {
printf( "i=%d\tj=%d\tk=%d\n", i, j, k );
}
}
}

point_to 2003-07-11
  • 打赏
  • 举报
回复
for (; i <= 9; i++)
for (; j <= 9; j++)
for (; k <= 9; k++)
写成上面这个样子的时候,第一次i=1,j=0可以做循环,
但是后来k=10后,由于没有给初值给k,那么k=10;满足不了条件,所以就没有计算了!
k也是同样的!
warrenchou 2003-07-11
  • 打赏
  • 举报
回复
我在vc60上试了
有解
yiminggw 2003-07-11
  • 打赏
  • 举报
回复
3重for
OSNC_17 2003-07-11
  • 打赏
  • 举报
回复
哈哈!
point_to 2003-07-11
  • 打赏
  • 举报
回复

void main ()
{
int i = 1;
int j = 0;
int k = 1;

for (i=1; i <= 9; ++i)
for (j=0; j <= 9; ++j)
for (k=1; k <= 9; ++k)

if ( 101 * (i + k) + 20 * j == 1333 )
{
cout << "i = " << i << endl;
cout << "j = " << j << endl;
cout << "k = " << k << endl;
// break;
}

if (i == 10 && j == 10 && k == 10)
{cout << "无解" << endl; return; }


cin.get ();
return;
}



LaoLi_SC_008 2003-07-11
  • 打赏
  • 举报
回复
你只有一个break怎么能够退出3层的for循坏呢?
lb0lblb 2003-07-11
  • 打赏
  • 举报
回复
改为
#include <iostream.h>

void main ()
{
int i ;
int j ;
int k ;
int a;
for (i=1; i <10; ++i)
{
for (j=0; j <10; ++j)
{
for (k=1; k <10; ++k)
{
a=101 * (i + k) + 20 * j;
if (a == 1333)
{
cout << "i = " << i << endl;
cout << "j = " << j << endl;
cout << "k = " << k << endl;
break;
}
}
}
}
cin.get ();
return;
}
结果就对了
arfi 2003-07-11
  • 打赏
  • 举报
回复
419 518 617
蝎子i软件 2003-07-11
  • 打赏
  • 举报
回复
最简单的办法,也许就是最好的办法。
---------------------------------
/* ijk + kji = 1333 */

#include <stdio.h>

void main() {
int i, j, k;

for( i=0; i<10; ++i )
for( j=0; j<10; ++j )
for( k=0; k<10; ++k ) {
if( (i*100+j*10+k) + (k*100+j*10+i) == 1333 ) {
printf( "i=%d\tj=%d\tk=%d\n", i, j, k );
}
}
}
doublejie 2003-07-11
  • 打赏
  • 举报
回复
((101 * (i + k) + 20 * j) ==1333; // ?j*10 ?j*20
这个式子我经过化简了,j*20 没有问题啊
hpho 2003-07-11
  • 打赏
  • 举报
回复
((101 * (i + k) + 20 * j) ==1333; // ?j*10 ?j*20

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧