2006年9月全國等級考試三級c語言上機題庫(二十四)
☆題目24(無憂id 16 完全平方數問題) 下列程式prog1.c的功能是:在三位整數(100至999)中尋找符合條件的整數並依次從小到大存入數組中;它既是完全平方數,又是兩位數字相同,例如144、676等。請編制函式實現此功能,滿足該條件的整數的個數通過所編制的函式返回。最後調用函式writedat()把結果輸出到檔案out.dat中。請勿改動主函式main()和寫函式writedat()的內容。#include <stdio.h> int jsvalue(int bb[]){int i,j,k=0;int hun,ten,data;for(i=100;i<=999;i++){j=10;while(j*j<=i){if(i==j*j){ hun=i/100; data=i%100/10; ten=i%10;if(hun==ten||hun==data||ten==data) bb[k++]=i;}j++;}}return k;} main(){int b[20],num;num=jsvalue(b);writedat(num,b);} writedat(int num,int b[]){file *out;int i; out=fopen("out.dat","w");printf("%d\n",num);fprintf(out,"%d\n",num);for(i=0;i<num;i++){printf("%d\n",b[i]);fprintf(out,"%d\n",b[i]);}fclose(out);} 另一解法:int jsvalue(int bb[]){int i,j,cnt=0,bw,sw,gw;for(i=100;i<=999;i++){ bw=i/100; sw=i%100/10; gw=i%10;for(j=10;j*j<=i;j++)if(i==j*j&&(bw==sw||sw==gw||gw==bw)) bb[cnt++]=i;}return cnt;}