C++ C++;用于查找两个两位数乘积的最大回文的程序
我见过,但这不是我要找的 问题是相同的,那就是找到最大的回文,它是两个三位数的乘积 因为我的程序不起作用,所以我做了一点改变,没有找到最大回文,它是两个三位数的乘积,我写了一个程序来找到最大回文,它是两个两位数的乘积 请看节目:C++ C++;用于查找两个两位数乘积的最大回文的程序,c++,palindrome,C++,Palindrome,我见过,但这不是我要找的 问题是相同的,那就是找到最大的回文,它是两个三位数的乘积 因为我的程序不起作用,所以我做了一点改变,没有找到最大回文,它是两个三位数的乘积,我写了一个程序来找到最大回文,它是两个两位数的乘积 请看节目: #include <iostream> using namespace std; int main() { int i, j, n, s, m, w; for (i = 99; i > 9; i--) { for (j
#include <iostream>
using namespace std;
int main() {
int i, j, n, s, m, w;
for (i = 99; i > 9; i--) {
for (j = 99; j > 9; j--)
n = i * j;
s = n;
while (n != 0) {
w = 0;
m = n % 10;
w = w * 10 + m;
n = n / 10;
}
if (s == w)
cout << s << endl;
break;
}
return 0;
}
#包括
使用名称空间std;
int main(){
int i,j,n,s,m,w;
对于(i=99;i>9;i--){
对于(j=99;j>9;j--)
n=i*j;
s=n;
而(n!=0){
w=0;
m=n%10;
w=w*10+m;
n=n/10;
}
如果(s==w)
cout现在您缺少j循环的花括号。当前代码正在执行99!*i
然后,您必须将重点放在存储最大回文值上,而不是仅将所有这些值打印到屏幕上(这是考虑到您的实现,无论如何它都不是最有效的实现)。您的代码的一些修改版本:
#include <iostream>
using namespace std;
int main() {
int max_product = 0;
for (int i = 99; i > 9; i--) {
for (int j = i; j > 9; j--) {
int product = i * j;
if (product < max_product)
break;
int number = product;
int reverse = 0;
while (number != 0) {
reverse = reverse * 10 + number % 10;
number /= 10;
}
if (product == reverse && product > max_product) {
max_product = product;
}
}
}
cout << "Solution: " << max_product << endl;
return 0;
}
#包括
使用名称空间std;
int main(){
int max_乘积=0;
对于(int i=99;i>9;i--){
对于(int j=i;j>9;j--){
int乘积=i*j;
if(产品<最大产品)
打破
整数=产品;
int反向=0;
while(数字!=0){
反向=反向*10+数字%10;
数目/=10;
}
如果(产品==反向和产品>最大产品){
最大产品=产品;
}
}
}
不能1)为变量使用有意义的名称。单字母变量充其量是令人困惑的。2)选择一种缩进样式。不要将两个或三个缩进完全混淆。如果这样做,您会发现其中一个循环的块周围可能缺少花括号。3)与其只是转储代码让其他人查找错误,不如尝试缩小缩进范围t关闭并调试它。