-
scanf("%d",&n);這句話是錯誤的,應該寫成:
scanf("%d",&n);
-
您的 i 僅被定義,而不是賦值,您輸入的值應賦給 i,而不是 n
-
int 和 long 分配的記憶體空間長度不同,表示的值範圍也不同。 例如,int 可能具有 32 位空間,long 可能具有 64 位空間。 n=17 超出了整數表示的範圍。
這與編譯器的實現方式有關,也與機器的位數有關。 例如,一台機器使用 8 位來表示乙個整數,表示範圍為 -128 127 (-2 7 2 7 -1)。
對於 32 位整數也是如此。 如果它超出此範圍,例如 128,則某些編譯器將使用 -128 進行處理與環類似,129 儲存為 -127,long 也是相同的規則。
但是,C語言只保證long不小於int,32位機器上的long也是32位,和整數一樣。
-
如圖所示用 7 行進行分析,然後推廣到 n 行:
由於圖中的星號彼此不相鄰,因此輸出的最小單位是"* "或“ ”是乙個星號空格或兩個連續空格),在下面的分析中用星號和乙個空格表示;
輸出 7 行,並使用迴圈變數 i 對每行的 0、1、2、3、4、5、6 進行均衡,即 0、1、2、3、,..n-1;
每個行星數前面的空格數:0,1,2,3,2,1,0,對應i的值,計算公式為:abs(i-3)=3,2,1,0,1,2,3,3-abs(i-3)=0,1,2,3,2,1,0,因為它是7行,即7個2-abs(i-7 2),即n 2-abs(i-n 2),其中除法使用int型資料只保留整數部分;
每個行星的數量:7,5,3,1,3,5,7,i=0,1,2,3,4,5,6,abs(i-3)=3,2,1,0,1,2,3,abs(i-3)*2+1=7,5,3,1,3,5,7,即abs(i-n 2)*2+1
然後程式以 i 迴圈開始,迴圈中有三個部分:星號前的空格、星號前的空格和換行符。
程式]包括
#include
int pattern(int n)
return 1;}
-
坐下來,慢慢來看看哈!
從**本身和執行情況來看,可執行程式的內容與貼上的**不匹配(可能是修改後沒有重新編譯,而修改前的**執行,否則不會**現在出現可以編譯傳遞的錯誤,例如第二行末尾有更多的“op”, 和“現有1人捐款無產出”),修改建議如圖所示: