豎式問題,紫書3.2例題
阿新 • • 發佈:2018-01-20
ostream %d 定義 例題 題目 部分 post main can
strlen(s);
sprintf(buf,"%d",abc); strchr(s,buf(1));
返回字符串的已經定義過的部分的長度,不包括“\0”;
向字符串輸入(在保證在字符串空間夠的情況下,即字符個數加一);
判斷字符串中是否含有某個字符,沒有,返回NULL。
這道題難度不大,但是在題目中關於for循環到底是從“100 10”開始,是作者弄錯了;還是從“111,11”開始,作者這樣做有其他深意?這一點網上有爭議。
我覺得是作者弄錯了,以實驗作為理由:
代碼:
#include"iostream" #include"cstring" using namespace std; intmain() { int count=0; char s[20],buf[99]; scanf("%s",s); for(int abc=100;abc<=999;abc++) for(int de=10;de<=99;de++) { int x=abc*(de%10),y=abc*(de/10),z=abc*de; sprintf(buf,"%d%d%d%d%d",x,y,z,abc,de); int ok=1; for(int i=0;i<=strlen(buf);++i)if(strchr(s,buf[i])==NULL) ok=0; if(ok==1) { count++; printf("<%d>\n",count); printf("%5d\n*%4d\n_____\n%5d\n%4d\n_____\n%5d\n\n",abc,de,x,y,z); } } printf("%d",count); }
輸入 108,有34種結果
改為從“111 11”開始,輸入108,只有四種結果,所以我認為是作者的失誤
如果思路不對,懇請大家指教
豎式問題,紫書3.2例題