永发信息网

为什么标志变量flag使用int类型可以得出结果,使用bool类型不能得出结果。

答案:3  悬赏:60  手机版
解决时间 2021-02-01 12:38
将1~9 九个数字分成三组,每个数字只能使用一次,即每组的三个数字不能重复,也不允许与其他组的数字重复,要求每组中的三位数字都能组成一个平方数。为什么标志变量flag使用int类型可以得出结果,使用bool类型不能得出结果。
代码如下:
#include
using namespace std;

int main(){
int a[20],num[20][3],b[10];
int i,j,k,m,n;

for(j=0,i=11;i<=31;i++){
if(i%10!=0){
k=i*i;
num[j][0]=k/100; //分解出百、十、个位存储在num二维数组中
num[j][1]=(k%100)/10;
num[j][2]=k%10;
if(num[j][0]!=num[j][1] && //找出三个数字不相同的平方数,存储到a数组中,j记录了满足条件的个数
num[j][0]!=num[j][2] &&
num[j][1]!=num[j][2] ){
a[j]=k;
j++;
}
}
}

cout<<"The satisfied three numbers are :"< for(i=0;i b[1]=num[i][0]; //选取第一个数
b[2]=num[i][1];
b[3]=num[i][2];

for(int t=i+1;t b[4]=num[t][0]; //选取第二个数
b[5]=num[t][1];
b[6]=num[t][2];

for(int flag=0,n=1;!flag&&n<4;n++){ //判断前两个数中是否有相同的数字
for(m=4;!flag&&m<7;m++){
if(b[n]==b[m])
flag=1;
}
}

if(!flag) { //如果前两个数字没有相同的数,继续取第三个数
for(int l=t+1;l b[7]=num[l][0]; //选取第三个数
b[8]=num[l][1];
b[9]=num[l][2];

for( flag=0,n=1;!flag&&n<7;n++){ //判断前两个数和第三个数中是否有相同的数字
for(m=7;!flag&&m<=9;m++){
if(b[n]==b[m])
flag=1;
}
}

if(!flag){ //如果三个数中没有相同的数字,则打印输出
cout< }
}
}
}
}
return 0;
}
最佳答案
chenwenwen0210说的对,在 for(bool flag=0,n=1;!flag&&n<4;n++)
{ //判断前两个数中是否有相同的数字

for(m=4;!flag&&m<7;m++){
if(b[n]==b[m])
flag=1;
}
}造成了死循环。所以没有执行下去。
全部回答
可以的,是你 的代码写得有问题,我改过了,你看看 #include using namespace std; int main(){ int a[20],num[20][3],b[10]; int i,j,k,m,n; for(j=0,i=11;i<=31;i++){ if(i%10!=0){ k=i*i; num[j][0]=k/100; //分解出百、十、个位存储在num二维数组中 num[j][1]=(k%100)/10; num[j][2]=k%10; if(num[j][0]!=num[j][1] && //找出三个数字不相同的平方数,存储到a数组中,j记录了满足条件的个数 num[j][0]!=num[j][2] && num[j][1]!=num[j][2] ){ a[j]=k; j++; } } } cout<<"The satisfied three numbers are :"<
  • 2楼网友:不甚了了
  • 2021-02-01 08:13
你的想法,却不能用代码来展示 flag = true ? false : true; 改成 flag = flag ==true ? false : true; 这个要看成两部分 flag = (flag==true?false:true) (flag==true?false:true) 才是判断 如果true 则返回false 如果false 则返回true 最后结...
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯