1樓:犍為真人
20:每個case後都沒有出現break,所以它們會一直執行到最後,即執行到default,在default中出現v0+=1,v2+=1,所以輸入多少個字元,v0,v1就會增加多少。v1+=1出現在case 'u',但是它之前的case中,都沒有break語句,所以,只要是a,a,e,e,i,i,o,o,u,u都會執行v1+=1。
重點去看一下書上switch中的break特點。
21:這是個逗號運算子,逗號兩邊是兩個賦值表示式(不是語句,重要!)。
30:傳給函式引數的是 &c,即c的位址,假設是1000,執行z++,於是z所代表的位址1004(沒有影響c)。下次呼叫時,我們仍然傳遞&c,即1000,所以它的值並沒有變。
39:c和d是不一樣的,當執行這兩句後,如果data.a的值後來發生了變化,c中的p會跟著變,但是d中的p卻不會變。
c中的p才是真正的與data.a指向同一記憶體位址。d不符合題意,不用改。
21:p是指標,不宜直接賦值。q是指標的指標,*q是指標,所以也不宜直接賦值。q和p不是一種型別,前者是指標,後者是指標的指標,也不能互相賦值。
32:p-a是個整型數,比如後來執行了p++,那麼p-a就等於1了,此時p[0]=1,但是a[0]=0,而a[p-a]其實就和p[0]相等。可以這麼說,a[p-a]就相當於p[0]。
35:把format的值代進去,(format,"a+=b",a,b)就相當於取代%s,是字串。
a 和b 分別取代%d,%d,整數。
39:去看看union。低這節在前,高位元組在後,0x000000d,13。
17:不清楚。
36:函式引數是值傳遞的,z=x*y,此時z的值是8,但它不會影響c的值。自己對比一下指標作為函式,還有引用作為函式。
2樓:匿名使用者
第(20)題,case後面沒有break;所以即使執行完該case語句也會接著執行下一條,因為每個case都沒有break所以每次switch都要執行一次default,那麼你的這句話共12個字元(含回車),屬於case情況的只有aeio,因此case ′u′:case ′u′:v1+=1;
執行四遍,default執行12遍。
(25)好像的確不能這麼寫
(30)z++是指引數z(它是指標啊)在執行完該語句後加一,他只是個引數而已,函式結束就銷毀了,下次傳rude還是整數c的位址,z還是加一,不影響輸出
(39)大哥,你的p沒初始化,它指向誰你知道嗎,不知道就亂賦值,豈不是出問題
(21)a你給p賦1那豈不是給指標亂賦值,1即是0x00000001,那應該是作業系統占用的地方,b和a同理*q就是p,c亂彈琴,不同資料型別啊
(32)p和a都個代表乙個位址值,雖然是位址值,但是他們一樣可以相減,當成數來算,結果為零那就是取a的第乙個元素(彙編裡面經常拿位址作計算)
(35)printf(format,"a+=b",a,b);相當於把format指標作為第乙個引數,因為printf的第乙個引數本來就是乙個位址值,這句話相當於
(39)這個題貌似不太嚴謹(個人認為),union是這樣的乙個結構,他按照最長的單位來分配記憶體,比如union裡面有個double還有個int那麼就分配sizeof(double)的記憶體,取數時,按int取就只取前幾個位元組,按double則取完整,因為這些數放在連續的記憶體中,只是你的取法不同而已。但是現在大多數機子的int型別占用4個位元組比char[2]還多兩個,所以我說他不嚴謹,而以前int只佔2個位元組,那麼答案就合理了,在記憶體中的存放為:[0d][00](十六進製制)前面為低,後面為高,按int取得話,會把這兩部分看作一體,即彙編中所說的高高低低原則,那麼00放高位,0d放低位即000d,這是十六進製制,轉化為十進位制就是13,當然這些系統都幫你做好了,你只要會用就可以了
。。。。。。
你的題真多啊
。。。。。。
(17)老問題,p沒初始化,指向的空間不確定
(36)這個涉及到引用傳遞和值傳遞,看來你學得很少啊,在這裡(c語言中只有值傳遞,但是可以用指標模擬引用傳遞c++裡面直接就有引用傳遞)值傳遞是系統新建變數來儲存接收到的值,注意這些變數都是新建的與原來的無關,當函式結束時,這些引數也就銷毀了,誰讓他們不是指標,他們的所儲存的值也就一併銷毀,那麼你在怎麼算也白搭,所以如果想通過函式來改變外部變數的值,就一定要傳指標進去,因為指標即使銷毀了,但是他所指的記憶體空間的值還在,不知道這樣說你明白否
ps:你的分很難賺啊
求教一道二級c語言課本上的選擇題!謝謝各位
7無7言 答案確實是15,關於巨集的定義建議你看一下那個關於加不加括號的異同知識點,具體語言論述我忘了,就這道題而言,將i 10,j 15代入,相當於執行了k 10 10 15?10 15 也就是k 100 10?10 15 答案是15 如果巨集定義時巨集體外加一括號,寫成 define min x...
二級C語言,最後一批問題處理!(大部分是選擇題)
1.c while e 即e成立的時候,而有e必須不等於0,因此 e 非e 就等於0,即a為正確的 2.b w 3 此時,w先結合 優先順序問題 即指向第乙個元素的值再加3,即指向第一行的第四個元素,此時再加 即該元素w 0 3 得值,故a沒錯,答案b w指向後乙個元素在第四列元素,此時w只有三列元...
幾道c語言的選擇題,大家幫忙看看
1.b 比 優先順序高,所以 最後算.而y 1,左邊不管是什麼,最終結果都是1 2.b陣列名是常量,不允許改變.3.db a,b變成9,然後a a變成2.再判斷b 0,條件不成立,結束迴圈,再是b 後面的 起作用,b變成8 4.c不用多說了,b,c,d,e,f 5.cd a 1指向的是zhang的第...