Attention: 如果喜歡我寫的文章,歡迎來我的github主頁給star
Github:github.com/MuziJin
本題要求實現一個函數,判斷任一給定整數N是否滿足條件:它是完全平方數,又至少有兩位數字相同,如144、676等。
函數接口定義:
int IsTheNumber ( const int N );
其中N
是用戶傳入的參數。如果N滿足條件,則該函數必須返回1
,否則返回0
。
裁判測試程序樣例:
#include <stdio.h>
#include <math.h>
int IsTheNumber ( const int N );
int main()
{
int n1, n2, i, cnt;
scanf("%d %d", &n1, &n2);
cnt = 0;
for ( i=n1; i<=n2; i++ ) {
if ( IsTheNumber(i) )
cnt++;
}
printf("cnt = %d\n", cnt);
return 0;
}
輸入樣例:
105 500
輸出樣例:
cnt = 6
Code
int IsTheNumber(const int N)
{
int flag = 0 ;
int k, m, temp;
m = N;
k = (int) sqrt(N);
if(k*k == N)
{
int a[10]={0}; //這里應該定義num的長度為10,因為傳入的整數的每位數可能是0~~9,而不是傳入數的位數。
while( m>0)
{
temp = m%10;
for(int i=0; i<10; i++) //遍歷N的每一位上的數字,在相應的數組中自加 如果有一個數組元素等于2 說明至少有2個位上的數相同
{
if(temp == i)
a[i]++;
if(a[i] == 2)
{
flag = 1;
break;
}
}
if( flag ) break;
m /= 10;
}
}
return flag; //程序最好單出口
}
轉載請注明出處:github.com/MuziJin