1樓:我lp是
程式修改為:
x4=linspace(103.104,220,10);
len=length(x4);
for i=1:len
if x4(i)>=103.104&x4(i)<149.266;
y4(i)=-0.0009*(x4(i)-103.104).^2-0.2886*(x4(i)-103.104)+50;
elseif x4(i)>=149.266&x4(i)<197.62;
y4(i)=0.0017*(x4(i)-149.266).^2-0.2532*(x4(i)-149.266)+36.5873
elseif x4(i)>=197.62&x4(i)<219.002;
y4(i)=0.0008*(x4(i)-197.62).^2-0.1335*(x4(i)-197.62)+27.5714
endend
你的倒數第四行elseif中 兩個x4應該都改為x4(i)。問題解決,給我滿分啊。
為什麼第一個if語句執行後不執行第二個if語句。if elseif 巢狀語句是怎麼看的啊
2樓:妖搦天
首先,這種題要知道答案很簡單,自己把題目放到編譯軟體上執行一下就行,然後可以通過結果反推過程。
這道題我編譯出來結果是2,以下是我的邏輯:
首先,要知道else配對的是哪個if,這個配對方法很簡單,由於沒加括號,直接往上行找離它最近的沒配對的if就行。本題與else配對的是第二個if;
其次,由於沒有加括號,第一個if只能控制下一行的語句,即第二個if;第一個if無效,所以程式判定下一行的第二個if無效,而再往下一行的語句又受第二個if控制,所以它受到連鎖反應,間接被無效了。下面的else與第二個if配對,第二個if無效就是else配對物件無效,else自然就跟著無效了。那麼c=2就沒有受到任何改變,原樣輸出。
這道題,雖然沒有加括號括住下面的內容,但是最後因為if的性質,產生了連環無效,實際上與加了括號的效果一樣
這裡引起迷惑的應該是與else配對的if被無效後,else的反應;尤其是本題有兩個if,會讓人想到配對了的if無效後,else還可能直接與另一個if形成配對關係。但是由實際編譯的結果可知,else是從一而終的,它最開始配對的if無效,它也會直接跟著無效,不會與其他else配對。
3樓:百i度網友
程式中初始化a等於2,b等於-1,c等於2,因此第一個if語句的判斷條件(a
只有在條件判斷語句if的條件表示式為「真」的時候,程式才會執行if語句內的操作。
4樓:匿名使用者
a = 2 b = -1
所以a
第一個if判斷就是為真,繼續下一層的if(b<0),但是實際上為假,直接到else了
matlab中else if語句只執行了第二句,程式沒問題,邏輯上**有錯誤?
跪求 matlab中if語句中的elseif語句結束如何返回if後命令繼續執行
5樓:匿名使用者
如果是下列結構:
for i=1:n1 %第一個for迴圈
執行語句1
for j=1:n2 %第二個for迴圈
執行語句2
if (條件)
執行語句3
continue
end執行語句4
end執行語句5
end當if條件滿足並執行continue語句後,「執行語句4」不執行,跳轉到第二個for迴圈,即i自動加1,再繼續執行。
為什麼在matlab中我想執行一個多項選擇的語句:用if;elseif 之後 只執行到第一個額雷鋒呢?
6樓:書宬
clear;clc
t=;h=;
for a=0:50:7000
if a<=200
s=0;
elseif a<=700&a>200 % 要這
樣寫s=6*a;
elseif a<=1200&a>700 % 要這樣寫
s=5000;
elseif a<=1500&a>1200 % 要這樣寫
s=16.7*a;
elseif a<=5100&a>1500 % 要這樣寫
s=10000;
elseif a<=6900&a>5100 % 要這樣寫
s=10000-5.6*a;
else
s=0;
endt=[t;a];
h=[h;s];
end[t h]
plot(t,h)
7樓:劉賀
乾脆別用迴圈了:
clear all;clc;
t=;h=;
a=0:50:7000;
s=0*(a<=200)+6*a.*(a>200&a<=700)+5000*(a>700&a<=1200)+...
16.7*a.*(a>1200&a<=1500)+10000*(a>1500&a<=5100)+...
(10000-5.6*a).*(a>5100&a<=6900)+0*(a>6900);
t=[t a];
h=[h s];
plot(t,h);
新手請教,c語言中為什麼if if else的巢狀語句中,執行了第一個if第二個會不執行?(輸出的答案是2) 5
8樓:匆匆過客
else總是與最近的if匹配,因為第一句if(a
9樓:御含靈
else總是最近匹配的
你多寫一對括號就明白了
#include
printf("%d",c);}
10樓:匿名使用者
因為第一個if條件不滿足,不能執行裡面巢狀的第二個if
11樓:匿名使用者
#include
int main(void)
printf("%d",c);}
最後一個else為什麼沒有加if時有錯誤,加了之後就可以執行,求大神指教,
12樓:匿名使用者
因為只是一個巢狀是if.......else if.......else if語句,去掉最後一個if邏輯判斷不完整
matlab if else語句怎麼用?
13樓:木偶bu會流淚
matlab中if else語句的使用方法示例:
第一步:首先,找到開始選單的matlab圖示,並開啟matlab。
第二步:在matlab的軟體介面中點選file-new-m-file,建立新檔案。
第三步:將所要建立的新檔案命名為test,並點選儲存。
第四步:然後如圖所示,輸入如下**
第五步:點選上方工具欄中的綠色三角形的執行按鈕,使其執行即可
14樓:園林植物手冊
1、先開啟軟體,點選左上角進行新建指令碼,即建立一個m檔案,開啟編譯介面後,先將此m檔案進行儲存,注意命名規則,只能用英文加下劃線。
2、對於只用兩種情況的問題,則只用到else即可,第一個if說明情況一,else說明不滿足情況一的所有其他情況。注意結尾要加end,不然如圖命令提示所示,會報錯。
3、對於多個情況,可設定多個判斷,對於有新判斷條件的情況用elseif新增,下圖所示,為3種情況,根據a的值,執行後滿足第二種情況。
4、對於其他情況,如果判斷出符合這種情況可以不寫,如符合else條件,但是不用執行程式,則可連else都不寫,也可寫上,只是後面不寫執行語句,程式也不會報錯,對於elseif、if也是,不需執行程式,也可寫上條件判斷語句,但是不寫下一步語句,也可以。
5、接著用多級if語句建立了下圖多級判斷程式,可以實現根據輸入的字母,輸出對應引數b的值,而且不會區分字母大小寫,因為同一判定條件加入了字母大小寫形式。但是如果條件再多,程式將會無限延長,可以用其他思路,進行解決。
6、這裡採用陣列預先儲存判斷條件,及引數b的值,因為條件相同,用for迴圈加上一條條件判斷,即可實現多級條件功能。但是要注意,條件形式要相同,否則不能寫成統一形式。這樣如何使用,及一種可行的替換思路,介紹完成。
15樓:匿名使用者
matlab if else語句怎麼用?
存為一個f.m檔案
function out=f(x)
if x>1
out=x^2+1
else
out=2*x
end**********=
然後呼叫
>>f(2)
>>f(-1)
年年順景則源廣 歲歲平安福壽多 吉星高照
16樓:匿名使用者
if 條件1
結果else 不滿足條件1
結果end
例子:a=0;b=1;
if a>b
x=2;
else x=3;
end》xx=3
17樓:英竹闕雋潔
ifh(i,j)==a1(i,j)
e(i,j)=a(i,j);
elseif
h(i,j)==b1(i,j)
e(i,j)=b(i,j);
elseif
h(i,j)==c1(i,j)
e(i,j)=c(i,j);
else
h(i,j)==d1(i,j)
e(i,j)=d(i,j);
end對這一段程式仔細分析,我沒有仔細分析前面的程式,但可以猜測以下,h(i,j)肯定會和a1(i,j)、b1(i,j)、c1(i,j)、d1(i,j)中的某一個相等,這樣當h(i,j)和a1(i,j)、b1(i,j)、c1(i,j)不相等的時候,就會執行到最後一條else語句
else
h(i,j)==d1(i,j)
e(i,j)=d(i,j);
這時候ans=1;就會出現了。
也就是matlab把h(i,j)==d1(i,j)當做是一條單獨的語句,而不是判斷條件。
究其原因,就是,if-elseif-else-end最後一個else是不用判斷條件的,前面的條件都不滿足就會執行else後的語句。
再加上,用來計算的矩陣是由rand隨機生成的,這樣,就可以很好的解釋為什麼有時多,有時少,數量不確定的現象了。
所以修改的辦法是:1,把h(i,j)==d1(i,j)刪除;2,把else改成elseif。
對於這個程式,我感覺用if語句還是比較合理的,用switch-case可以用,但是它不適合這樣的分支條件
我想請問關於matlab中,for 迴圈下有三個並列的if語句,如果不滿足其中的
18樓:匿名使用者
按照你的意願,像這種迴圈語句裡的判斷語句,應該採用下列程式for(i=1:n)
if()
執行1elseif()
執行2else
執行3end
end這樣的判斷是連續的,即當條件不滿足時,程式會繼續往下去判斷,直到滿足時才停止判斷。
19樓:語言糾結戶
解決了麼?我也想知道
matlab中for語句中,怎樣把每i得到的結果都儲存在
建一個二維陣列,把i值按順序賦值組陣列,for語句執行完後,將陣列寫入想賦值的單元格區域即可。例 dim arry1 1 to 100 for t 1 to a i f t arry1 t i next t me.range a2 resize 100,1 arry1以上例子為將不每個i值寫入當前工...
如何在matlab中呼叫matlab中已有的函式
呼叫函式檔案 myfile.m clear clcfor t 1 10 y mylfg t end 自定義函式檔案 mylfg.m function y mylfg x 注意 函式名 mylfg 必須與檔名 mylfg.m 一致 y x 1 3 注 這種方法要求自定義函式必須單獨寫一個m檔案,不能與...
matlab的plot命令,matlab中 plot函式全部功能怎麼用
我行我素 畫出圖形後一看就明白了 中括號一般表示區間或資料點,plot 2,1.1 中表示y座標,plot 2,1.1,1.1,2 1.1,1.1,1.1,1.1 中表示x座標和y座標的區間端點和資料值 1 沒有中括號就是表示點的意思,第一個就畫點 2,1.1 2 像樓上說得,中括號是構造矩陣用的,...