注册 登录
编程论坛 C++教室

怎么也想不明白呀 请指教

心剑菩提 发布于 2007-10-03 22:51, 543 次点击

#include<iostream>
using namespace std;
int convert_10(int num ,int m);
int Solve(int data[]);
int convert_10(int num ,int m)
{
int sum=0,temp=1;
while(num>0)
{
if(num%10>=m)
{
return -1;
}
sum+=(num%10)*temp;
temp*=m;
num/=10;
}
return sum;
}
int Solve(int data[])
{
int i,j,a[3];
for(i=2;i<=16;i++)
{
int flag=1;
for(j=0;j<3;j++)
{
a[j]=convert_10(data[j],i);
if(a[j]==-1)
{
flag=0;
break;
}
}
if(flag!=0&&a[0]*a[1]==a[2])
{
return i;
}
}
return 0;
}
int main()
{
int data[3];
int n,i,answer;
cin>>n;
while(n>0)
{
for(i=0;i<3;i++)
{
cin>>data[i];
}
answer=Solve(data);
if(answer==0) break;
cout<<answer<<endl;
}
return 0;
}
区别在那里
#include<iostream>
using namespace std;
int convert_10(int num ,int m);
int Solve(int data[]);
int convert_10(int num ,int m) //转化成十进制
{
int sum=0,temp=1;
while(num>0)
{
if(num%10>=m)
{
return -1; //每一位数值比进制大
}
sum+=(num%10)*temp;
temp*=m;
num/=10;
}
return sum;
}

int Solve(int data[])
{
int i,j,a[3];
for(i=2;i<=16;i++)
{
int flag=1; //出错标记
for(j=0;j<3;j++)
{
a[j]=convert_10(data[j],i);
if(a[j]==-1) //这种情况不允许
{
flag=0;
break;
}
}
if(flag!=0&&a[0]*a[1]==a[2]) //判断是否合理
{
return i;
}
}
return 0;
}


int main()
{
int data[3];
int n,i,answer;
cin>>n;
while(n--) 问题在这里:请问n--的意思是什么怎么运行结果和上面的不同(退出情况不同)
{
for(i=0;i<3;i++)
{
cin>>data[i];
}
answer=Solve(data);
cout<<answer<<endl;
}
return 0;
}

9 回复
#2
aipb20072007-10-04 12:42
再总结浓缩下你的问题。
#3
心剑菩提2007-10-04 15:53
while(n--)  问题在这里:请问n--的意思是什么怎么运行结果和上面的不同(退出情况不同)
#4
aipb20072007-10-04 16:06
EX:
n = 2;
while (n--){ //仍然是2,2作条件,非0为真,执行下去,n自减==1
//再进入while n为1,非0为真,执行下去,n自减 ==0
//再进入whule n为0,为假,跳出循环
//
}


#5
心剑菩提2007-10-04 16:10
那么请问可不可以把while(n--)  改的通俗易懂呢?
#6
aipb20072007-10-04 16:18
以下是引用心剑菩提在2007-10-4 16:10:17的发言:
那么请问可不可以把while(n--) 改的通俗易懂呢?

while (n != 0){
//do sth.
n = n-1;
}

#7
心剑菩提2007-10-04 16:28
谢谢啊
#8
冰的热度2007-10-04 17:09
不错不错.
#9
夜子2007-10-05 21:23
这个程序在计算机上面运行后怎么都是提示三次输入,如果输入了数字,结果是0;输入字符,结果是很多0?
这个程序到底是什么用?忘赐教,我qq531586711,希望大家帮忙教我。谢谢了。国庆快乐
#10
心剑菩提2007-10-05 21:39
判断进制的程序 输入p,q,r三个数 在什么进制下p*q=r
1