2016-11-15 102 views
-9

的代碼如下所示:爲什麼這些是我的嵌套for循環的輸出?

a = [1, 8, -1, -9]; 
b = [-5, 8, 1, -6, 7, 9]; 
for i=1:numel(a) 
    c(i) = 0; 
    for k = i : numel(a) 
     c(i) = c(i) + a(k) + b(k); 
    end 
end 

fprintf('%7.2f\n', c) 

這些相應的輸出,請解釋原因:

-3.00  (2 blank spaces in front) 
    1.00  (3 blank spaces in front) 
-15.00  (1 blank space in front) 
-15.00  (1 blank space in front) 
+0

它是你的作業解釋輸出?你期望從代碼中得到什麼輸出? – JimHawkins

+5

在MATLAB命令提示符下鍵入'doc fprintf'。或者看看[這裏](https://www.tutorialspoint.com/c_standard_library/c_function_fprintf.htm)對'fprintf'格式說明的教程。 –

+0

這是我的功課,以獲得這些產出,我只是不知道怎麼辦。我得到不同的數字。 @JimHawkins –

回答

1

「7」 在格式字符串 '%7.2f \ N' 指定了一個最小寬度... 7.默認行爲是右對齊的(並且在格式字符串中沒有更改),所以7個字符的最小寬度是通過在左側填充空格來實現的。使用固定寬度的字體時,這種格式字符串通常可以在一列數字中實現對齊的條目。

它是一個實際的用戶界面的標準,垂直堆疊的數字應在小數點對齊(也到虛擬小數點:對準點在哪裏將是即使不顯示點)。人類通過瀏覽列表並理解條目的相對大小更容易。