求問一下大佬,程式沒有報錯卻沒有輸出,



#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int n,a,b, c, m, N;
float i;
cin >> n;
m = 101;
N = 0;
if(n>=m)
{
while (n >= m)
{
i = sqrt(m);
a = m / 100;
b = (m-100 * a) / 10;
c = m - 100 * a - 10 * b;
if (i == (int)i && (a == b || b == c || a == c))
N = N + 1;
else
N = N;
}
cout << "這中間存在的特殊的數應該有" << endl;
cout << N;
}
else
cout << "你的n太小了";
return 0;
}
uj5u.com熱心網友回復:
首先,回圈是個死回圈。其次,i==(int)i這種不講究的運算式不要寫了。
可以考慮對整數回圈看它的平方是不是落在指定范圍,這樣會少回圈一些次數。
uj5u.com熱心網友回復:
修改如下,供參考:#include<iostream.h>
#include<math.h>
int main(int argc, char* argv[])
{
int n,a,b, c, m, N;
float i;
cin >> n;
m = 101;
N = 0;
if(n>=m)
{
while (n >= m)
{
i = sqrt(n); //i = sqrt(m);
a = n / 100; //a = m / 100;
b = (n-100 * a) / 10; //b = (m-100 * a) / 10;
c = n - 100 * a - 10 * b; //c = m - 100 * a - 10 * b;
if (i == (int)i && (a == b || b == c || a == c))
N = N + 1;
else
N = N;
n--;
}
cout << "這中間存在的特殊的數應該有"<< N << endl;
//cout << N;
}
else
cout << "你的n太小了";
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/240667.html
標籤:新手樂園
上一篇:c++作業
下一篇:這道題怎么解?
