int IsTheNumber(const int N) { int Z = N; int a[100]; int x,y,j = 0; int i,k; x = (int)sqrt(N); y = x * x; while(Z>=10){ a[j++] = Z % 10; Z = Z / 10; } a[j] = Z; for (i = 0; i <= j;i++){ for (k = i + 1; k <= j;k++){ if(a[i]==a[k]){ if(y==N){ return 1; } else{ return 0; } } } } return 0; }
刚开始看到题目时,就开始思考判断那两个数的条件,一个是平方数,还有一个是有重复数字。
①判断平方数
1.我一开始的想法比较简单,就是把参数N开方,然后得到一个浮点型的数,然后用这个数来跟1进行求余,如果等于0就是一个整数嘛,证明这个参数是一个整数。由于自己的知识的缺乏跟基础不扎实,根本就没想到这是个错误的想法。不出意外自己出bug,%只能用于整型数据。
2.后面就开始查题了,然后就看到大佬给的解题过程,最让我受益匪浅的就是他那个求余前面加(int)让
PTA6-7 统计某类完全平方数
于 2022-01-30 00:16:10 首次发布