-
我同意我樓上說的加{}來劃分級別,但是,其實沒有{},看看你發的這個**的縮排關係,也可以看出if和else的對應關係。
然後,if 或 else 後面的語句可以看到關係。
if(year%400==0)flag=1;此 flag=1 是必須滿足三個 if 的條件。 如果 flag=1 回車,則應縮排到 if (year%400==0) 下方。
下一行的 flag=0 必須滿足可被 4 整除和可被 100 整除的條件,但不能滿足被 400 整除的條件。
下一行中的 flag=1 必須滿足可除 4 的條件,但不能滿足 100 的可整除性條件。
最後乙個 flag=0 只要不能被 4 整除,就取。
-
上面的程式對於練習和理解ifs的巢狀還是有一定幫助的,其實程式可以簡化如下:
#include ""
main()
int year;
scanf("%d",&year);
prinft("yes");
else printf("no");
-
if(year%4==0)
if(year%100==0)
if(year%400==0)
flag=1;同時滿足 3 個如果
else flag=0;只有前 2 個 ifelse flag=1 得到滿足; 只有第乙個 ifelse flag=0 才得到滿足; 他們都不滿意。
-
#include ""
main()
int year,flag;
scanf("%d",&year);
if(year%4==0)
else flag=0;}
else flag=1;}
else flag=0;
if(flag) prinft("yes");
else printf("no");
加上這三對括號,你就明白了!! 呵呵。
flag=1;這句話是當年%4==0; year%100==0;year%400==0 在滿足兩者時執行。
-
學習C語言取決於天賦。 我不怕打你,你沒有天賦。
-
有兩個常量是非法的:
C 中只有乙個常數具有 x,那就是十六進製數。 例如,0x1234表示十六進製面額的 1234 的數字,則結果為 4660。 這個值的特點是小寫的 x 前面只能有 0,如 0x12ab 等等。
沒有人這麼說,浮點值可以用科學記數法表示,但它們只能是整數、正整數或負整數。 它不可能是這樣的小數。 10 的冪實際上是 100*根數 10,顯然這個常數是沒有意義的。
順便說一句,解釋各種定義:
型別:float
錯誤 99999 型別:int(對於超過 32 位的系統,否則很長)+ 100 型別:int,+ 為正號。
錯誤的科學記數法。
型別:字元指標。
型別:Long Double(新 C 語言支援) 型別:float 正確的科學記數法。
型別:float
-
房東你好! 我不認為你問的是正確的問題! int a=12 34 56 78 這裡不應該是十進位,應該是十六進製的! 正確的是 int a=0x12 34 56 78,沒錯!
我可以很清楚地告訴你,你一定知道它的儲存方式是大端機和小端機的評分!
Little-endi:整數邏輯中最低的位元組放在記憶體的最低位址,第二低的位元組放在記憶體的第二低位址,依次儲存,例如0x12 34 56 78(十六進製數)是 78 56 34 X86 系列 CPU 是小端機器。
大端機器:與小型機器正好相反。 例如,0x12 34 56 78 是記憶體中的 12 34 56 sparc,而摩托羅拉 6800 是大型機器。
這是我在小型 PC 上編寫的驗證程式。
#include
int main(){
int a = 0x12345678;
char *p;
p=(char *)a;
for(int i=0;iprintf("%x ",*p);
return 0;
希望我的對你有幫助!
-
像這樣的問題還有很多。 就是判斷大結局和小結局。
int a = 1;
int getbigorlittle(int *arg)char *pc = arg;
if(*pc == 1)
return 1;
elsereturn 0;
-
你對這個定義是錯誤的,它不是乙個陣列,那麼你怎麼能這樣寫呢?
-
基本的 C 程式包含:
1. 預處理命令(例如,匯入標頭檔案,開頭帶有 include 語句。
還有定義常量。
等)。2. 全域性變數的定義。
2.函式宣告語句(即有函式返回值型別、引數型別、函式名,但沒有大括號。
描述:根據 main 函式中的定義,定義了其他函式。
如果它是在 main 函式之上定義的,則無需編寫宣告。
3.入口功能是執行程式的main功能,即main功能。
4.其他函式(實現某個函式,以前稱為)。
這就是入門程式的基本結構你可以從書上開始寫作只有 main 功能的程式實現最基本的輸入和列印。
再試一次分離輸入和列印功能編寫為兩個函式使用 main 函式呼叫它們。
最後,逐步向程式新增內容使程式逐漸變得更加複雜(例如,新增迴圈、判斷、在函式之間傳遞值或位址)。
如果還是寫不出來,那就先學會抄寫,把書打幾遍,再試著改。
-
這是由於浮點錯誤造成的。 造成這種情況的根本原因是計算機使用的二進位 01** 不能準確地表示一些帶有小數位的十進位資料。 我們知道,將十進位值轉換為二進位值需要以下計算:
1.整數部分:將整數連續除以 2,取餘數,然後再次將商除以 2,直到商等於 0。 然後將得到的餘數按相反的順序排列。 縮寫"除以 2 餘數法"。
2.十進位部分:將十進位十進位轉換為二進位十進位數,採用"乘以 2 並四捨五入,按順序"法律。
將 2 乘以十進位十進位取出得到的整數部分,將 2 乘以剩餘的小數部分,然後取出乘積的整數部分,直到乘積的小數部分為 0 或達到所需的精度。 然後把取出的整數部分按順序排列,即先取出的整數部分作為二進位小數位的高位,後面取出的整數部分作為低有效位。 縮寫"乘以分布 2 捨入法"。
3.包含小數的十進位數轉換為二進位,整數和小數部分分別轉換,然後相加。
這導致了乙個明顯的問題:有些十進位數不能轉換為有限的二進位數:
末尾的省略號表示計算已用盡,二進位值 0011 無限重複。
目前,浮點值按照 IEEE(電氣和電子工程師協會)754 浮點儲存器格式標準儲存在計算機上。
IEEE 單精度浮點格式共有 32 位,包含三個組成字段:小數點後 23 位 f、8 位偏置指數 e 和 1 位符號 s。 這些欄位以連續的 32 位字儲存並編碼。
其中 0:22 包含 23 位小數; 23:30 包含 8 位指數 e; 第 31 位包含符號 s。
如下圖所示,我很羨慕:
也就是說,我們在上面轉換的二進位**中只能儲存23位,即使資料型別是double,也只能儲存52位,這樣你就可以看到問題的原因。
可惜我們不能從根本上解決問題,除非你能發明十進位計算機,但我們可以用曲線拯救國家:
因為二進位值可以準確地表示整數(可以使用整數到二進位方法進行驗證),所以可以將十進位數乘以 10 或 100 等成為整數,然後進行整數運算,最後除以 10 或 100 得到結果;
2.通過擷取有效小數位數等,然後對其進行處理來獲得結果的最佳近似值。
3.對於可由有限長度的二進位值表示的十進位值,可以使用儲存大於其長度的位的資料型別。
請參閱CNSD
-
優先權:
因此,它相當於:
while((!x)!=0)
當 x=0 時,它進入乙個迴圈,s+=++x; 最後,s=1,x=1。 然後是 ++x; 只是 x=2。
如果再判週期前,就不符合條件退出迴圈。 所以正確答案是B
-
s+=++x 是 ++x,x=x+1=1,然後 s=s+x=1,然後 ++x,x=x+1=2
-
這些字太小,無法清晰閱讀。 建議您自己輸入並執行它。
從**本身和執行情況來看,可執行程式的內容與貼上的**不匹配(可能是修改後沒有重新編譯,而修改前的**執行,否則不會**現在出現可以編譯傳遞的錯誤,例如第二行末尾有更多的“op”, 和“現有1人捐款無產出”),修改建議如圖所示: