1樓:吉祥二進位制
(a>b)?b++:(++a>4)?b++;a+++; //你寫的最後一個+是不是沒有呀
應該是下面這樣的吧
(a>b)?b++:( (++a>4)? b++ : a++);
順序很容易理解,c語言標準中明確規定,?:為一個順序點,上面的式子可以簡化為:
if (a >b ) b++;
else if (++a > 4) b++;
else a++;
這估計就是二級考試裡面的題。真正在寫c程式時,?: 一般不會巢狀。
歡迎到 0x30 帖吧討論更多計算機相關的知識 。。
2樓:宛丘山人
你的程式有錯誤,前面少了標頭檔案和主程式前的型別說明,c=語句的倒數第2個分號應是冒號,a+++應為a++, 修改後應為:
#include
void main()
執行結果是:3 2 2
因為開始時,a=1 b=2 a>b為假,執行(++a>4)? b++:a++;
a自加為2,++a>4為假,執行a++,因為是a++,先返回2賦值給c,再自增為3。所以執行列印結果為3 2 2
3樓:
c=(a>b)?b :( a>4)?b :a ;
按運算優先順序,計算a>b 值為假,則運對 ( a>4)?b :a ;進行訂算。'這又是一個三元運運算元。 a>4顯為假,此時a=2
計算a ,
最後a=3,b=2,c值首先為 ( a>4)?b :a的運算結果,即a 的值,即c=2
4樓:
先比較(a>b)因為a《b,所以b++這部不走。
(++a>4)還是不成立
a++;
別看那麼複雜,其實你只要一層一層撥開,就不復雜了這段程式一點意義也沒有,教你們c語言的老師汪汪只是理論,實際寫**可能豬頭一個
5樓:
c=(a>b)?b++:(++a>4)?b++:a+++;
可以看成這樣:然後從左往右看
c = (a>b)?b++:((++a>4)?b++:a++);
6樓:
c=(a>b)?b++:(++a>4)?b++;a+++;
這句巢狀了問號表示式,先判斷a>b,很明顯為否所以執行第一個冒號後面的問號表示式(++a>4)?b++:a++,++a使a變成2,但還是小於4,於是執行該問號表示式冒號後面的a++;因為是a++,所以a在這句話中沒改變值仍然是2返回個c,於是c就等於2,然後a加1,a變成3(記住++在後面的是在這句執行完後才加的,以分號為標誌)
c語言有以下程式,...,程式執行後的輸出結果為( )
c語言:以下程式的執行結果是()
7樓:匿名使用者
答案錯誤。應該11。
或者**有誤。
void main()
if(j%2==0)// j=10,所以滿足條件,執行j*=20後,j=200。繼續迴圈。
}printf("%d\n", i);}
8樓:寸正騎士
最終結束迴圈的條件是i>1000,故i輸出為1001,與j無關
9樓:
i=10,j=10→j=200,i=11 程式結束
10樓:
怎麼會是1001?是11啊!
11樓:毓城督欣暢
函式sub中的引入引數是是形式參考,比方說第一個sub(x3,x4);
函式最先執行的語句是:intx=
x3,inty=
x4;//把x3跟x4的值賦給x跟y
所以函式裡面改變的是x跟y的值,而x跟y在函式結束後就被清除了,所以受改變的只有全域性變數x1,第一次執行sub的時候,x=
x3;x1
=x;//x1==10;
同理,第二次的時候x1的值就等於x2了,所以x1最終值為40,其他值不變,輸出結果是:
10,20,
40,40
12樓:招濯竭初彤
^#define
sw(x,y)
這個巨集的作用就是在不借助第三變數的情況下,交換x和y的值,^是位異或運算子,x^=y相當於x=x^y,具體什麼是位異或運算,可以在網上輕意找到相關教材。
b=01代表8進位制數的1,1在任何進位制計數系統中都相等。
關於c語言的問題
13樓:已存在這個名字
&是取地址,*是取該地址的值。
第一個是錯誤的函式宣告,這是語法錯誤。
第二個是正確的函式宣告,引數型別是一個指向linklinst的指標。
14樓:暴孝不詞
1.自頂向下、逐步求精
2.空間複雜度
3.c語言
程式檔案的編譯錯誤分哪為兩類
4.可執行程式
5.機器語言
6.obj7.b
15樓:於悠逸呼縱
#include
"conio.h"
#include
"stdio.h"
main()
這樣就對了。
scanf裡面不要亂加空格和一些其他的東西。
16樓:時讓所香
inti=1;
i=(i++)+(++i);結果是i=3,當自增自減運算子用於算術運算時,採用集體統一原則,即i取值在開始時是相同的,在本題中,i集體等於1,第一個括號內結果為1,第二個括號內的結果為2,因此最終結果為3
17樓:牛良檀水
1、使用函式或過程
2、空間複雜度
3、4、機器語言
5、機器語言
6、obj7、b
18樓:蕭芙老婷
答案應該是4
先計算i++,這時候(i++)中的i為1,但是i自增長為2,再計算++i,(++i)中i為3,
所以i=
1+3=4
19樓:滿元修倫庚
答案不好說,這和編譯器有關,因為各個編譯器的運算規則是不一樣的。我機子的結果是4,還好理解。由於圓括號優先順序最高,而且運算順序為從左到右。。
i++是用完再加,++i是加完再用,所以(i++)運算後仍為1,(i++)運算結果為2,故最後相加結果為1+1=2
20樓:伯君雅陸香
www.csdn.net
是個學程式設計的好**,中國最大程式設計師**,註冊會員後就可以在裡面提問,測試自己的程式設計能力,拜師等等
歡迎採納!
c語言 閱讀以下程式,當輸入資料的形式為 25,13,10
21樓:匿名使用者
先說一點需要的知識
scanf:
① 遇空格、「回車」、「跳格」鍵,結束當前輸入② 遇寬度結束,結束當前輸入
③ 遇非法輸入,結束所有輸入
scanf的返回值表示輸入成功的數的個數,若遇到輸入意外返回eof你的這個程式,輸入逗號是遇到非法字元,scanf結束所有輸入同時返回1(因為第一個值是正確的)
也就是說
如果
printf("%d",ret);
如果輸入的是
25,13,10
則程式會列印1,x的值是輸入的第一個數25,但y z卻是申請空間時的隨機數,所以最後的printf("x+y+z=%d",x+y+z);輸出是不確定的
22樓:匿名使用者
23 52 12
c語言以下程式的輸出結果為( )
23樓:匿名使用者
程式的功能是是將字串str2連線到字串str1的後面,並輸出連線後的字串str1
因此輸出結果為computerlanguage
在c語言中,計算機程式通常有哪幾種錯誤?
24樓:大野瘦子
1、系統錯誤:這是指程式沒有語法錯誤和邏輯錯誤,但程式的正常執行依賴於某些外部條件的存在,如果這些外部條件缺失,則程式將不能執行。
2、語法錯誤:這是指程式中含有不符合語法規定的語句,例如關鍵字或符號書寫錯誤(將printf寫成print、將陣列元素引用寫成a(2)等)、使用了未定義的變數、括號不配對等。
3、邏輯錯誤:這是指程式中沒有語法錯誤,可以通過編譯、連線生成可執行程式,但程式執行的結果與預期不相符的錯誤。
25樓:匿名使用者
在計算機程式中,通常可能發生以下三種型別的錯誤:
(1)語法錯誤:這是指程式中含有不符合語法規定的語句,例如關鍵字或符號書寫錯誤(將printf寫成print、將陣列元素引用寫成a(2)等)、使用了未定義的變數、括號不配對等。含有語法錯誤的程式是不能通過編譯的,因此程式將不能執行。
(2)邏輯錯誤:這是指程式中沒有語法錯誤,可以通過編譯、連線生成可執行程式,但程式執行的結果與預期不相符的錯誤。例如整型變數的取值超出了有效的取值範圍、在scanf函式遺漏了取地址運算子&、陣列元素引用中下標越界、在應當使用複合語句時沒有使用複合語句等。
由於含有邏輯錯誤的程式仍然可以執行,因此這是一種較難發現、較難除錯的程式錯誤,在程式設計、除錯中應予特別注意。
(3)系統錯誤:這是指程式沒有語法錯誤和邏輯錯誤,但程式的正常執行依賴於某些外部條件的存在,如果這些外部條件缺失,則程式將不能執行。例如折半查詢法是在已經排序的陣列上進行的,但實際的資料並沒有進行排序、程式中需要開啟一個已經存在的檔案,但這個檔案由於其他原因丟失等。
c語言,以下程式的輸出結果是,C語言問題 以下程式的輸出結果是?
輸出1 3 這是遞迴了,所以先是fun 3 進入後發現3 2 1,所以又繼續func 3 2 也就是fun 1 進入發現1 2 0,就執行prinft,輸出1,然後fun 1 就返回了 返回出去正好是fun 3 的prinft,輸出3 進入fun 3 進入fun 1 輸出1退出fun 1 輸出3退出...
C語言題,以下程式的輸出結果是,c語言題 以下程式的輸出結果是。 include stdio h void main i?
初出茅廬 include stdio.h main printf d n a 結果是31,我說的只是原理,你可以根據上面別人說的過程就會明白的。 經過理論分析i 1時,進入程式,執行語句a 3 即a a 3,a 3,再執行a 5,即a a 5 3 5 8 然後馬上輸出結果a 8,你用單步追蹤法,也可...
c語言有以下程式,c語言 有以下程式 include stdio h main
2870 其實是兩個數 28 70 那3個if的意思其實就是要求x使得 x 7 0 x 1 3 0 x 3 1 x 2 2 0 x 2 0 春雨 潤物 terranlong說得已經很對了。如果還看不明白話把程式排版一下就好看了 include main printf n 程式不建議那樣寫,編碼的原則...