English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

我是初學者 .. 所以看不太懂C語言 .. 請大大幫幫忙 ..
一.分別計算下列運算式的值 寫出最後變數a~h的值
c = 4 + (a = 3 + (b = 4 + 5) );
d = 10.0 + 2.0 * 4.0 - 6.0 / 3.0;
e = 10 % 3;
f = 5 + 3 * 8 / 2 + 3;
g = ( 5 + 3 ) * 8 / 2 + 3;
h = 2 * 4 > 3 * 5;
二.假設變數x的值為10 y為41 請分別執行下列運算式後 寫出變數a~f的值
a = x++;
b = ++x;
c = x--;
d = --x;
e = y & 0177;
f = y & ~077
三.寫出下列C語言運算式的值
(1) 1 * 2 + 3
(2) 7 / 3
(3) 10 % 3 * 2 - ( 2 + 5 )
(4) 5 = = 5
(5) 4 ! = 2

2006-12-12 23:17:32 · 3 個解答 · 發問者 1 in 電腦與網際網路 程式設計

我想知道程式要怎麼寫 = =
算我也會算 .. 只是對C語言的程式不了解 ..
不知道怎麼下去寫出那個程式來 ..

2006-12-13 00:15:51 · update #1

3 個解答

一、 [//後為註解]
c = 4 + (a = 3 + (b = 4 + 5) ); //b=4+5=9,a=3+9=12,c=4+12=16
d = 10.0 + 2.0 * 4.0 - 6.0 / 3.0; //d=10.0+8.0-2.0=16.0=16
e = 10 % 3; //代表10對3取餘數,10/3=3...1→e=1
f = 5 + 3 * 8 / 2 + 3; // 3*8/2==24/2=12,f=5+12+3=20
g = ( 5 + 3 ) * 8 / 2 + 3; //g=8*8/2+3=64/2+3=32+3=35
h = 2 * 4 > 3 * 5; //2*4=8,3*5=15, (8>15)是否成立?不成立(false)→0,∴h=0(若成立則=1)
∴a=12 , b=9 , c=16 , d=16 , e=1 , f=20 , g=35 ,h=0
二、x=10,y=41,算出a~h
a = x++; //←先指定a=x=10;之後算x++,即x=x+1=10+1=11
b = ++x; //和上面相反,先算x=x+1=11+1=12,之後指定b=x=12
c = x--; //先指定c=x=12,之後算x=x-1=12-1=11
d = --x; //x=x-1=11-1=10, d=x=10
e = y & 0177; //e和f不太確定怎麼算的...不過跑出來答案e=41,f=0
f = y & ~077 //這兩題看看有沒有別人會的來補充吧 @﹏@
∴a=10 , b=12 , c=12 , d=10 , e=41 , f=0

三、
(1) 1 * 2 + 3 //← =2+3=5
(2) 7 / 3 //← = 2(整數除法,小數點自動捨去)
(3) 10 % 3 * 2 - ( 2 + 5 ) //← 10%3=1,1*2-(2+5)=2-7=-5
(4) 5 == 5 //判斷5等於5是否成立,答案是成立(true)→1(若不成立則=0)
(5) 4 != 2 //判斷4不等於2是否成立,答案是成立(true)→1

2006-12-13 05:11:26 補充:
d要看你的變數宣告是整數int 還是浮點數 float / double
整數的話就是16,浮點數的話就是16.

2006-12-13 05:12:29 補充:
奇怪...有時候打字的最後一個字都會出不來...
上面:浮點數的話就是16.0

2006-12-13 13:58:42 補充:
程式怎麼寫?不是照著打最後再印出就好了嗎 @_@
這種有什麼要問的?哪裡不會打呀?不知道怎麼印出喔?不會吧-.-
照你題目問那樣看起來就是自己不會算.要別人算給你看的呀-.-
只是前面要設一下那幾個要用到的變數 int a,b,c,d,e,f,g,h,x,y;
之後把那些題目複製上去,印出用printf("%d",a); ←印出a,其他也一樣
第三題的也直接printf("%d",10 % 3 * 2 - ( 2 5 ));←這樣就好了
真的連印出也不會的話回去看課本吧-.-

2006-12-13 00:07:13 · answer #1 · answered by ? 5 · 0 0

這是程式寫法 /* */ 之間的字都是說明 不會被執行
#include /* 一定要有的程式頭 */

main() /* 主程式頭的起點 */
{
int a,b,c,d,e,f,g,h,x,y; /* 全部宣告成整數變數 */
float p; /* 故意加的 宣告成實數變數 */

/* 底下就照原來的樣式輸入即可 */
c = 4 + (a = 3 + (b = 4 + 5) );
d = 10.0 + 2.0 * 4.0 - 6.0 / 3.0;
e = 10 % 3;
f = 5 + 3 * 8 / 2 + 3;
g = ( 5 + 3 ) * 8 / 2 + 3;
h = 2 * 4 > 3 * 5;
p = 10.0 + 2.0 * 4.0 - 6.0 / 3.0; /* 讓你看看不同變數的不同結果 */
/* 印出所有的結果 請注意 d 和 p 的不同 */
/* \n是把游標跳到下一行 \n\n連跳兩次就會產生空行的效果 */
/* %d 告訴系統印出整數 %4.1f 告訴系統印出實數 總共四位(兩位整數, 一個小數點, 一位小數) */
printf("a=%d\nb=%d\nc=%d\nd=%d\ne=%d\nf=%d\ng=%d\nh=%d\np=%4.1f\n\n",a,b,c,d,e,f
,g,h,p);

/* 注意; a, b, c, d 那四行的前後次序若改變 則它們的值也會不一樣因為 x 的值一直在變 */
x = 10;
y = 41;
a = x++; /* 先把 x 的值傳給 a 再把 x 值加 1 */
b = ++x; /* 先把 x 值加 1 再把 x 的值傳給 b */
c = x--; /* 先把 x 的值傳給 c 再把 x 值減 1 */
d = --x; /* 先把 x 值減 1 再把 x 的值傳給 d */
/* 這個要改成二進位來看 而 & 的功能是 "當前後兩數都是 1 時 結果才為 1 否則為 0" */
/* 0177 的二進位表示法等於 01111111 它和別的數做 & 會把最左邊的數字變成 0 其餘的不動 */
/* 077 是 00111111 ~077 就是 11000000 它和別的數做 & 會把右邊的 6 個數字變成 0 其餘的不動*/
/* y = 41 => 00101001 所以... */
e = y & 0177;
f = y & ~077;
printf("a=%d\nb=%d\nc=%d\nd=%d\ne=%d\nf=%d\n\n",a,b,c,d,e,f);

a = 1 * 2 + 3;
b = 7 / 3;
c = 10 % 3 * 2 - ( 2 + 5 );
/* 這是邏輯的判別 == 為是否相等 != 為是否不相等 (請注意; 中間不可以有空格 )*/
/* 結果若是 真 則答案是 1 否則是 0 */
d = 5 == 5;
e = 4 != 2 ;
printf("a=%d\nb=%d\nc=%d\nd=%d\ne=%d\n\n",a,b,c,d,e);
}

==============
印出的結果如下
a=12
b=9
c=16
d=16
e=1
f=20
g=35
h=0
p=16.0

a=10
b=12
c=12
d=10
e=41
f=0

a=5
b=2
c=-5
d=1
e=1

2006-12-13 09:59:01 · answer #2 · answered by JJ 7 · 0 0

一.a=12 , b=9 , c=16 , d=16.0 , e=1 , f=20 , g=35 , h=0(false)
二.a=11 , b=12 , c=11 , d=10 , e=33 , f=9
三.(1)5 , (2)2 , (3)-3 , (4)1(true) , (5)1(true)
剛好沒灌程式,自己用推的...
如果有誤請見諒,建議您用程式去RUN就有結果了!

2006-12-12 23:41:09 · answer #3 · answered by ? 6 · 0 0

fedest.com, questions and answers