2006年9月全國等級考試三級c語言上機題庫(二十四)
☆題目24(無憂id 16 完全平方數(shù)問題) 下列程序prog1.c的功能是:在三位整數(shù)(100至999)中尋找符合條件的整數(shù)并依次從小到大存入數(shù)組中;它既是完全平方數(shù),又是兩位數(shù)字相同,例如144、676等。請編制函數(shù)實現(xiàn)此功能,滿足該條件的整數(shù)的個數(shù)通過所編制的函數(shù)返回。最后調(diào)用函數(shù)writedat()把結(jié)果輸出到文件out.dat中。請勿改動主函數(shù)main()和寫函數(shù)writedat()的內(nèi)容。#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;}