1. 程式人生 > >豎式問題,紫書3.2例題

豎式問題,紫書3.2例題

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;

int
main() { 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例題