台灣最大程式設計社群網站
線上人數
937
 
會員總數:245007
討論主題:188957
歡迎您免費加入會員
討論區列表 >> C/C++ >> 請幫忙解答,謝謝
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
請幫忙解答,謝謝
價值 : 10 QP  點閱數:2982 回應數:6

樓主

Win
中級專家
2220 143
464 885
發送站內信

下為c語言寫之程式片段

man()
{
int a=9, b=4 ,c=5,d=2;
printf("%d/%d=%4d\n",a,b,a/b);
printf("%d%%%d=%4d\n",a,b,a%b);
printf("%d+ %%%d-%d%d=%f\n",a,b,c,d,a,a+b%c(float)d/a);
}

之前沒學過c語言,在此問老師
%4d =>這是不是抓整數,需要空4格?
printf("%d%%%d=%4d\n",a,b,a%b); =>這一行需要印兩個%嗎?

我算出來的答案是
9/ 4=2
9%%4=1
第三行不會算…

請各位幫忙,謝謝 

本篇文章發表於2005-03-09 19:12
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應


捐贈 VP 給 火 檢舉此回應
當然不會算囉,第三行的a+b%c(float)d/a有沒有寫錯啊?
本篇文章回覆於2005-03-10 02:24
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

Win
檢舉此回應
謝謝舞的回答
這是某間大學研究所的考古題

我想是他的題目出錯了,我看了半天也算不出來^^
謝謝您囉^^

還有一個問題
printf("%d%%%d=%4d\n",a,b,a%b);
這行會印出
9%%4=1
還是
9%4=1
本篇文章回覆於2005-03-10 08:54
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
%%就是印出一個%符號
printf ("%%"); --> %

%4d就是欄位為4格寬
printf ("%4d", 1); --> "   1", 1的前面有3個空白

%-4d就是欄位為4格寬, 往左靠
printf ("%4d", 1); --> "1   ", 1的後面有3個空白

所以:
printf("%d%%%d=%4d\n",a,b,a%b); --> 9%4=   1, 1的前面有3個空白
本篇文章回覆於2005-03-10 11:37
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
咦, 我以為昨天已經解答了, 原來還是有問題啊, 呵呵^___^a

%nd ,<--- 代表空n格印出一個整數, 靠右列印, 靠左的話n前面加個負號

%m.nf <<< 代表印出一個浮點數, 總共佔m格, 其中小數點後面的部分佔n格, 小數點本身也要算一格

printf("%d%%%d=%4d\n",a,b,a%b); 會印出9%4=   1

int a=9, b=4 ,c=5,d=2;
printf("%d+ %%%d-%d%d=%f\n",a,b,c,d,a,a+b%c(float)d/a);
這一行實在很怪
理論上大概是想要印出
9+ %4-52=9.0
感覺怪怪的, %d或是%f 各為數值型態, 後面要有對應的參數
但是,裡面只有5個%d或是%f, 後面卻有6個參數?????
這是我覺得題目根本不對的地方

另外, 就算正確
那後面這串也還是不合法 a+b%c(float)d/a
他既然要用%f印出,那就該要改成
float(a+b%c)*(float(d)/float(a)) 之類的
不過覺得裡面似乎還少了一個符號, 那個"*"是我亂加上去的啦

本篇文章回覆於2005-03-10 14:55
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應


檢舉此回應
printf("%d+ %d%%%d-%d/%d=%f\n",a,b,c,d,a,a+b%c-(float)d/a); 應該是這樣吧 我猜的
他重點應該是放在printf中%的用法吧 
本篇文章回覆於2005-03-12 13:35
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
可是題目根本有問題
這樣做不出答案啊
本篇文章回覆於2005-03-12 23:44
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.