程式設計題,為啥結果是,程式設計題,為啥結果是0?

2022-07-11 08:35:14 字數 3006 閱讀 5666

1樓:匿名使用者

先說,我是抄的答案,感謝原作者,我只按照我對c的理解,改動了與本題相關的部分,應該能明白的說明printf函式顯示0的原因了,**測試也確實如此

1,之所以沒輸出333,這是c語言設計的原因。

2,之所以輸出0,這是計算機體系結構的問題。

具體來說:

printf函式不會進行任何型別轉換,它只是從記憶體中讀出你所提供的元素的值(按照%d,%f等控制字元提示的格式)。c語言設計中,int型別一般是32bit或者16bit,而float一般是64bit,並且有可能使用科學計數儲存。而,333在記憶體中為00000000,00000000,00000001,01001101(這是32位)。

而且333一般都在靜態區,程式的靜態儲存區預設是0,那麼當用%f來讀時,就會讀64bit,也就是會讀之前的很多位0,最後按照(有效數字)×(基數2)pow(指數)的方式來取數,自然結果是0

之所以vc中不允許這種情況,而有些編譯器就允許這麼輸出就是編譯器設定的問題。按理說,這樣訪問記憶體是屬於越界訪問,應該禁止。不過只是讀,傷害性不大而已。

2樓:匿名使用者

printf 直接將儲存的變數按所給 ××格式×× 輸出而int與float型變數儲存方式不同

(int)333 0x0000014d(float)333 0x43a68000

3樓:山水歲月

int為整形變數,float為浮點型,兩者在記憶體中儲存結構不一樣!

一道c語言程式設計題,執行結果一直是0,求大神指教 5

4樓:gta小雞

scanf的格式字串應該使用%lf%d%lf的形式,中間不要加逗號,讀入資料時以空格或回車作為分隔。格式字串中新增逗號是不好的習慣,除非特殊格式需要否則不要使用逗號。

%lf表示以double型讀入一個資料,而你對應存放資料的變數是float型,型別不匹配。將其改為double型或將%lf改為%f。

一道j**a程式設計題 為什麼輸出會是0 1 11? 30

5樓:不能算天才

這題考得很複雜。注意,子類有重寫了父類的add方法

先呼叫子類構造方法,走的super,進入父類的構造方法,對父類進行初始化,此時父親的a就為10;父類構造方法中有add,呼叫了子類的add方法(重寫)。此時,子類的a只進行了預設初始化,列印出0,再a++,列印出1。好了到這時,父類的構造方法走完了,開始對子類進行初始化了,此時子類的a進行顯示初始化變為了11。

至此子類初始化完畢

現在懂了嗎

6樓:匿名使用者

public demo()

初始化的時候,系統預設給出int的預設值0

c語言程式設計問題,為什麼輸出的值為0? 50

7樓:尋秦記記

你的計算語句是雙重迴圈,那麼列印也要是雙層迴圈,改成:

for(i= 0;i<5;i++)}

8樓:匿名使用者

i 迴圈之後,已經不在陣列的下標範圍了~

很簡單的c語言小程式設計題,結果是對的,可評分系統顯示的還是0分

9樓:匿名使用者

void fun(char* a, int n)//重新給你寫了一個 你參考一下

if(star - letter > n)    //如果後面的星星大於n個則截斷字串

*(letter + n + 1) = '\0';}

10樓:

如果是******結果正確嗎?你的程式不夠健壯,用一些特殊的字串測試測試,也許就找到原因了

11樓:敗北看

字串可以從後往前遍歷,得到後面*的個數,得到的時候指標會指向最後一個字母的地址,那就可以進行新增或者刪除*了。

你的if()後面else沒有沒有,else*a='\0';}

c語言程式設計問題 這個題我**錯了輸出結果總是0

12樓:匿名使用者

略加修改即可:主要是加大括號

#include

#include

int flower(int  num);

int main()

for (i = n; i <= m; i++)}printf("\n");

}if (z == 0)

printf("no\n");

return 0;

}int  flower(int i)

13樓:會點技術的小子

#include

#include

int flower (int num);

int main() }

printf("\n");

}if(z==0)

printf("no\n");

return 0;

}int flower (int i)

14樓:匿名使用者

第二個else後面,for迴圈前面少個{

c語言程式設計問題,為什麼執行結果是0而不是66求詳解

15樓:時間會飛的狗

連續賦值是從右向左執行的。

不管右邊給num賦值是多少,當執行到num-=num的時候,結果都是0啊

請問這道c語言題目應該怎麼做?我的答案錯在**?為什麼輸出結果總是0?求程式設計大師解答。

16樓:欲語淚千疊

a是雙精度,

scanf("%llf",&a);

17樓:

double雙精度 用lf float 用f

18樓:小斌哥

你的main函式前沒有寫int,確定返回值型別

c 問題為什麼執行結果是這樣呢

一步步來 cin buffer 這個碰到空白 回車,空格,tab 就停止讀取,buffer就只讀到 i 這一個字元,剩下的 study opp n 留在輸入緩衝區 cout 因為緩衝區字元不到20個並且沒有結束符 所以能再次輸入 i study opp 輸入後緩衝區裡是 study opp ni s...

今天學程式設計在書中看到73結果是4這是怎麼算的

是求餘操作,它就是求2個整數的餘數的,你的解釋其實就對了,只是對這個操作的意思沒有理解好。7 3 4意思就是7除以3的餘數等於4 才是除法運算子。你好!復!1.求餘運算子號的結制果符號與被除數符號一致bai例如 30 20 結果為 10 du2.要求兩個zhi運算數必須是正數。daodouble a...

這個c的輸出結果為啥是這樣的

先執行第一個for 此時 i 0 在執行第二個for 此時 j 0 在執行第三個for 此時 k 0 結果 000 k 2後,依然滿足k 3的條件,繼續列印結果 002 k 2後,此時不滿足k 3的條件,於是跳出k的迴圈,充j的迴圈繼續往下走,而此時j已經變成了2 列印結果 020 基本原理就是這樣...