c語言習題求s2解答過程,為什麼這道c語言題要加 s2 i 0 ???

2021-12-19 10:04:02 字數 1432 閱讀 6661

1樓:嘻倪孢

你只要懂 a++,a*++b 是怎麼意思就可以了

a++是先用在加 ++b是先加在用(好想是,自己查一哈)。a*++b等價於a=a*(++b)

2樓:你的側臉狠美

由於巨集替代,

s1=min(a=b,b-a);

s2=t(a++,a*++b,a+b+c);

會被替換成

s1=a=b

s2=a++*a+b+c*a*++b/4;

我們來分析第乙個s1, s1 = a = ( (b

由於b不會小於b-a,所以執行s1=a=b-a;所以a的值是2所以a,b,c分別為2,3,5。

接下來s2=a++*a+b+c*a*++b/4;

第乙個a++*a結果會是2*3,因為是後++,後面的++b/4,因為是前++,所以是4/4s2 = 2*3 + 3 + 5*3*1; 結果為24.

不懂就繼續問

3樓:魘魅

我們來分析下:

1)先傳遞0和1234給fun函式,因為s2>10,函式往下執行,s1=4,然後把s1和s2/10(123)再次傳遞給

fun函式。

2)由於s2/10(123)是第二次傳遞中s2<10判斷式中的s2,他還是不能滿足條件,函式往下執行。由於s1=s1*10+s2%10;s1變成了43,s2/10就是把123/10=12,把43和12再次傳遞給fun

3)12依然滿足不了if的條件,根據上面的規則,s1變成43*10+12%10就是432,s2變成1

4)s2變成1滿足if條件,函式返回s1*10+s2%10的值,其中s1傳遞過來的是432,s2是1,算出得4321.

這樣可以麼?

為什麼這道c語言題要加 s2[i]='\0' ???

4樓:智_囊_小_太

對於bai這個程式,strcat函式把s2綴合到s1上。du此時s1比s2的有效zhi

字元長度要長,接下來dao的步驟是讓專s2的字元對應與截止到屬s1的空字元之前的所有對應位置的字元同步(不包括s1的空字元),而由於s1比s2長,所以導致s2被同步後,並不正確地以空字元結束,如果不對s2做結尾處理,則在接下來的puts輸出的時候會輸出奇怪的東西。

例如s1(假定字串不含空格)是:a c j l \0

s2:b c s \0

strcat之後的結果會使得s1變成:a c j l b c s \0

迴圈之後會使s2變成:a c j l b c s ? ? ? ?...(後面全是)

其中問號是未定義的值,不一定是什麼字元。

如果不s2[i]='\0'那麼puts的輸出就是:acjlbcs(後面還有一大堆亂七八糟的東西)

而做過處理後,輸出結果就是正常的acjlbcs望採納

為什麼這道c語言題要加s2,為什麼這道c語言題要加 s2 i 0 ???

對於bai這個程式,strcat函式把s2綴合到s1上。du此時s1比s2的有效zhi 字元長度要長,接下來dao的步驟是讓專s2的字元對應與截止到屬s1的空字元之前的所有對應位置的字元同步 不包括s1的空字元 而由於s1比s2長,所以導致s2被同步後,並不正確地以空字元結束,如果不對s2做結尾處理...

C語言問題為什麼選B過程求解大學C語言,為什麼選B,求解!

首先 是轉義字元,所以 的結果就是 其次,7s是指輸出字串佔7位,所以前方有空格。7s意思就是輸出後抄面的字串,襲 長度7 這裡如果bai7小於後du面字串長度則沒什麼意zhi義,dao還是按字串原樣輸出,如果大於後面字串,則會在字串前補空格 字串原本的雙引號是不會輸出的。所以a和c都不對,是轉義符...

兩道C語言的簡單題目不懂求解答為什麼選c,d特別是第十題求詳細解題方法。謝啦

a a是1行4列的陣列,而賦值列表中有5個元素,是放不下的b 定義二維陣列的時候要求列數不能為空,而行數可以由後面的賦值列表決定,若沒有賦值列表那麼行數也不能為空 c b是2行3列的陣列,而賦值列表中有3行 1個 就是一行的資料 超過陣列定義的行數 d 正確,相當於定義了乙個1行3列的陣列,y 0 ...