c語言為什麼輸出的是,c語言為什麼輸出的是

時間 2022-04-11 06:06:05

1樓:匿名使用者

原因很簡單,printf("%d\n",i)中i呼叫的是全域性變數i=1,故輸出的就是1.如果void funct(void)改程式段在main函式內那麼答案就是2

2樓:cindere鞡

開始一看到這個程式有點頭大,沒什麼意義。這個主要是看是否對區域性變數和全域性變數的熟悉。

一開始 int i=1;這個i是全域性變數,而在main()中的i是區域性變數,雖然同名,但只有在main()中使用i才會使用2,3,4這三個值,而你呼叫函式funct()時沒有傳遞引數,它實現的時候使用的是全部變數的i,與main()中的i無關!

你可以這樣做個實驗,在main()中在寫個:printf("%d",i);輸出的值就不會是1了。

希望我的回答能幫助到你。

3樓:汐_楓

說起來有點麻煩的,主要是記憶體呼叫導致宣告的級別(這裡是int)不同;

顯然級別最高的是外部宣告int i=1;(假設級別為1)而在函式呼叫裡面只要級別跟它一樣的時候(即不再對i進行再次宣告,像main裡面就對i進行了3次的宣告,級別分別為2,3,4,因為i前面都有int還有代表級別規劃的{}),此時的i==1,顯然funct裡面因為輸出i比int i=5(級別為2)先,所以輸出的是1級別的i,即為i==1.

如果你覺得難理解的話,可以看這個程式:

#include

void main()

}printf("%d",i);

}它輸出的是2(i的級別為1,2,3)

如果只把int i=3的int去掉,它輸出的是3(i的級別分別是1,1,2);

如果只把int i=4的int去掉,它輸出的是2(i的級別分別是1,2,2);

反正是該死的{}和int作怪,跟i是不是外部變數沒關係,看這個**:

#include

int i=1;

void f()

void main()

}f();//所以它輸出2而不是1}

4樓:虛偽飛飛

因為在改變i的值得時候前面都加了int,去掉試試

c語言我想問為什麼輸出的結果都是1啊。。。

5樓:匿名使用者

判斷相等用==不是用=,所以在fun中,把if裡面的判斷相等都改為==就可以了。

6樓:江城子

if(n=0)應該寫成if(n==0)

if(n=1)應該寫成if(n==1)

7樓:資料來源

你的 func 函式寫錯了,應該是

int fun(int n)

8樓:跟自我比武

if(n=1)->if(n==1)

c語言輸出值為1.#r怎麼回事

9樓:四捨**入

童虎的輸入語句和計算語句的順序反了。

float r, h, s, v;

scanf("%f %f, &r, &h);

s = 2 * pi * r * h;

v = pi * r *r *h;

10樓:匿名使用者

你的r h在沒有輸入前,就對s v進行賦值,導致計算的結果不是乙個有效資料。因為此時的r h的內容還是個隨機內容,不一定是合理的資料。

浮點型非有效浮點資料就是1.er這種顯示

在scanf()函式後面加賦值,如下:

scanf("5f %d", &r,&h );

s=2*pi*r*h;

v=pi*r*r*h ;

11樓:

輸入語句和計算語句的順序反了。你應該先輸入,再做計算float r, h, s, v;

scanf("%f %f, &r, &h);

s = 2 * pi * r * h;

v = pi * r *r *h;

12樓:百小度

額,你獲取到資料為什麼不用呢

scanf那句放在第乙個float之後

多半是因為沒有初始化正確

c語言程式,為什麼輸出0?不應該是1嗎?

13樓:

不對,小數和整數在計算機中的二進位制表示法不一樣的,系統只是提供了轉換的功能而已,使用printf輸出的時候,是不會自己轉換的,而是強制使用指定格式輸出

比如說這個程式,最後a中儲存的值(double型別)是1.000000,這個值,前16位(二進位制)肯定是0,所以使用%d格式的時候,它不會判斷對應的變數是什麼型別,就直接把它的前16位以整數的形式輸出,所以輸出的結果必然是0

所以使用%d並不能使輸出結果轉換為對應的整數,請改用%.0f輸出(因為你的變數a是double型),就可以輸出1

c語言為什麼不輸出

14樓:爻訊科技

if條件判斷應該是:

if (z == 'a')

if (z == 'b')

if (z == 'c')

15樓:真愛永遠在嗨

元宵夜,元春回娘家待了一會兒,要寶玉和眾姐妹獻詩。寶玉和黛玉兩小無猜,情意綿綿。書童茗煙將《西廂記》等書偷進園給寶玉,寶玉和黛玉一同欣賞。

寶玉庶弟賈環嫉妒寶玉,抄寫經書時裝失手弄倒蠟燭燙傷寶玉,王夫人大罵趙姨娘。趙姨娘又深恨鳳姐,便請馬道婆施魔法,讓鳳姐、寶玉中邪。癩和尚、跛道人擦拭通靈玉、救好二人。

c語言:下列程式執行後的輸出結果是-1為什麼?

16樓:

36 輸出:-1

x=0xffff 如果用十六進製制表示的話,數前面要加0x以表示是十六進製制。

ffff用二進位制表示就是16個1,1111111111111111,轉換成十進位制就是2^16-1,即65535。因為int型資料範圍是+32767~-32768,二進位制在計算機中表示時,第一位是符號位(這些知識如果學了原碼、補碼、反碼就會了解了),65535超了範圍,第一位變成了符號位,1代表負數,所以變成了-1

x--是x先計算,再減一,所以先輸出-1,x的值再減一,變成-2.

37 a case後面不能是實型

b a是整形,case後面是實型

d swith()括號裡面不能是表示式

c語言什麼叫標準的輸入和輸出,C語言什麼叫標準的輸入和輸出?

標準輸入和輸出函式就是scanf和printf了,而標準的輸入和輸出裝置是鍵盤和顯示器 標準輸入輸出就是由標準函式庫所提供的,分別就是鍵盤與螢幕。c 輸入函式scanf和輸出函式printf c 輸入函式cin和輸出函式cout 所謂標準,就是由標準函式庫所提供的 c 輸入函式scanf和輸出函式p...

c語言題!!求解為什麼,求解一道C語言題。答案為什麼這麼寫?

int ptr arr 執行這句後ptr指向arr的首元素,就是6 ptr 123 先是ptr ptr指向arr的第2個元素,再將這個元素值加上123,第二個元素變成130 printf d,d ptr,ptr 注意在常見的編譯器中,函式的引數是從右往左計算的,因此是先計算 ptr ptr指向了ar...

c語言是做什麼程式用的,學完了C語言能做什麼有趣的程式(有趣的)???

c語言是一種計算機程式語言。它既有高階語言的特點,又具有組合語言的特點。它可以作為系統設計語言,編寫工作系統應用程式,也可以作為應用程式設計語言,編寫不依賴計算機硬體的應用程式。因此,它的應用範圍廣泛。c語言對作業系統和系統使用程式以及需要對硬體進行操作的場合,用c語言明顯優於其它解釋型高階語言,有...

C語言輸入字串為什麼遇到空格就輸出了為什麼沒有溢位

1 scanf函式就是衝快取裡面取字串,遇到空格或換行符結束 解決方法就是 使用gets str 一次性讀取快取裡面的字串 2 你開闢的記憶體空間就20個char,就只能儲存20個char了 1 為什麼輸入a b c 中間有空格 只能輸出a了,怎麼解決呢?如果碰到空格就認為碰到了第二個格式化的引數,...

C語言的編譯器是用什麼語言寫的,c語言編譯器是用什麼於語言寫的

理論上,c語言的編譯器,用什麼語言寫都可以的 如果已經有乙個不太好的c語言編譯器,那麼完全可以用c語言寫個更好的c語言的編譯器 不過,更大的可以是用另外的語言寫的,如彙編 c語言編譯器是用什麼於語言寫的 第乙個c語言編譯器應該是用彙編寫的,但是第乙個成熟的c語言編譯器應該是由彙編和c語言共同寫的。編...