考試題目,求大神解答。
uj5u.com熱心網友回復:
建議自己先試試寫吧~uj5u.com熱心網友回復:
僅供參考:#include <stdio.h>
int func(int n)
{
int i, r, a, b, c;
r = 0;
a = n / 100;
b = n % 100 / 10;
c = n % 10;
if(a == b || b == c || c == a)
{
for(i = 10; i <= n/2; i++)
{
if(i * i == n)
{
r = 1;
break;
}
}
}
return r;
}
int main(void)
{
int n, i;
scanf("%d", &n);
if(n < 101 || n > 999)
{
printf("輸出有誤\n");
return 1;
}
for(i = 101; i <= n; i++)
{
if(func(i) == 1) printf("%d\t", i);
}
return 0;
}
uj5u.com熱心網友回復:
兩種方法,供參考:#include <stdio.h>
#include <math.h>
bool isPerSqr(int num);//方法1
bool isSqr(int n);//方法2
int main(int argc, char* argv[])
{
int n;
scanf("%d",&n);
if(n < 101 || n > 999) return 1;
for(int i=101;i<=n;i++){
if(isPerSqr(i))
printf("[F1].%-4d ",i);
if(isSqr(i))
printf("[F2].%-4d \n",i);
}
system("pause");
return 0;
}
//方法一:不使用sqrt
bool isPerSqr(int num)
{
int n=num;
for(int i=1; n>0; i+=2){
n -= i;
}
if(n == 0){
int a = num%10;
int b = num/10%10;
int c = num/100;
if(a==b || a==c || b==c) return 1;
}
return 0;
}
//方法二:使用sqrt。
bool isSqr(int n)
{
int d = (int)(sqrt(n) + 0.5); //四舍五入求整
if(n == d*d){
int a = n%10;
int b = n/10%10;
int c = n/100;
if(a==b || a==c || b==c) return 1;
}
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/235149.html
標籤:C語言
上一篇:無法回傳表頭
下一篇:VS2019求助!
