1樓:碧海風雲
第9題:【c】
核心知識點:1、逗號表示式,從左往右逐個計算表示式,整個表示式的值為最後一個表示式的值。2、++a與a++的區別,前者為先自加1而後引用當前值參與計算,後者為先引用當前值參與計算而後自加1。
x=(a=3,b=++a);
1)執行a=3,此時a值為3;2)執行++a,此時a值為4;3)執行b=++a,此時b值為4,a值為4;4)此時逗號表示式值為4,執行x=4,此時x值為4,a值為4,b值為4。
#include
#include
int main (void)
執行結果
第10題:【b】
a:連續賦值,除了最右的項外,其餘所有項都必須是可以賦值的變數,不可以是常量或者表示式。
b:y==1是一個邏輯表示式,從題幹得出其值為0,再將其賦值給x,最終結果是x被賦值0。
c:i=float(x);語法錯了。如果要實現將x強制轉換為float型別並賦值給i,應該寫作i=(float)(x);
d:求餘運算(%)參與運算的量均必須為整型。
2樓:
9 c.4 4 4;
這個題了解 逗號運算子的運算規則就行了 ; -----簡單來說就是:分別運算。取最後一個值。
a=3 ---> a==3 ; ++a -> a == 4; b=++a; -> b==4; x=b --> x=4;
10. c (如果是多選 ,把b也選上)
a. x*3 表示式不能賦值;
b. y==1 是一個c++中的bool值 x與bool型別不匹配(但是也可以這樣用)
c. i = float(x) 把x的值強制轉換為float型別 賦值給i 沒毛病;
d. i%-3 前面i是float 後面-3 都有問題;
兩道c語言題求解,知道的謝謝解答。(請寫出詳細分析過程!!謝謝!滿意答案與解釋者給分。)
3樓:睡不著想你了
你好,第一題選 d, 因為*ps是指這個指標指向的初始位置,也就是p,這個字母的位置,所以取不到o。
第二題無答案,剛開始j=10,i=9 然後 if(!(j%i)) break;也就是if(!(10餘9)) break;即if(!(1)) break;
也就是if(0) break; 因為它不成立,所以我們執行下一步,if(9>10-1) 不成立,我們再回到第一個迴圈。
接下來 j=11,i=9 if(!(11%9))break; if(9>11-1) 因為它不成立,我們又不能輸出了,而在i=10的情況也和這個一樣,所以最後無結果,我覺得你可能if(i>j-1) printf("%d",j);打漏了,應該是if(i>=j-1) printf("%d",j);
4樓:科博熊
第一題d項怎麼有兩項啊?
反正我確定*ps是絕對不能引用字母o的,因為*ps代表字母p的首地址。
第二題沒答案
因為首先j=10,然後到下一步i=9,
!(j%i)=0,是假的,所以又進行下一步, 判斷(i>j-1) ,實際上是9>9,又是假的。此次迴圈結束
所以又進行上一步j=11,然後又到下一步i=9,!(j%i)=0是假的,又進行下一步,9>10,假的。
於是返回上一步i=10,!(j%i)=0還是假的,10>10還是假的。沒有任何步驟被執行。
不知你有沒有打錯什麼字?
5樓:匿名使用者
問題一 你把s =2;去掉就可以了,不知道你想用s =2;表達什麼,就是這句錯了。 問題二 我也不懂,是不是因為a組預設字串後面有個\\0的,然後b
兩道c語言試題,求講解;謝謝
6樓:匿名使用者
編譯器有個前處理器,會把所有的巨集,所以第一個問題後就是:
printf(“%d”,30/3*10);很明顯,結果就是10*10 = 100
要想得出你希望的結論,可這樣寫巨集#define md (3*t)第二個問題就是左值和右值問題,說簡單就是傳值與傳地址的問題了,x是傳指標進去,屬於左值,所以,在裡面*x實際上就是對x的更改,而y傳入的是一個值,是一個右值,無法更改y的值的。
7樓:蘇星洗滌機械
1.#define 的作用是原封不動的代入,所以30/md就相當於30/3*10,乘除法是同級運算,從左向右算,所以結果是100。
2.p函式中x傳遞的是指標,指向的就是x這個變數所存在的地址,所以對指標的操作就會影響原有的x。而y的傳遞的是y的一個拷貝,變化的只是y的一個副本,所以原有的y沒有變化。
8樓:匿名使用者
#define t 10
#define md 3*t
printf(“%d”,30/md); 因為md=3*t 這一句30/md相當於30/3*t顯然等於100;
第二個程式涉及引數引用問題,
void p(int *x,int y) 中用*x 引用是採用&x形式讀取地址,可以改變x的值,而其中y與下面主函式中y佔用不同記憶體,故修改的只能是當前函式的y值而非主函式的值,若想改變,可以跟x採取同樣的引用方式
9樓:匿名使用者
#define 定義的兩個常量啊!
30/md=30/3*10=100
10樓:額滴那個腎啊
第一行定義了t=10,同理第二行定義 md=3*t 即是3*10
輸出30/3*10=10*10=100
第二題:首先x++是x先自加1,再在以後的語句中使用,而y--是以後使用y時才自減1,多以最後結果是1和3
11樓:匿名使用者
30/3*10=10*10=100.
y--表示y的值先賦好,再減、
++x表示x的值先加好,再賦值。。
12樓:陽光上的橋
#define t 10
#define md 3*t
printf("%d",30/md);
編譯之前進行預處理之後的**是:
printf("%d",30/3*10);
結果當然是100,30/3等於10,10*10等於100,乘除運算依次進行。
看呼叫:
p(&x,y);
y在函式p裡面被修改了,但是這個修改是函式的臨時空間,不會被修改的。
其實函式引數裡面的東西都不會被修改,包括前面一個引數&x(表示變數x的地址),函式裡面是通過這個地址對x變數的內容進行了修改,如果函式裡面對地址進行修改,返回後也是沒有影響的。
c語言選擇題,這兩道題求c語言大哥解答,詳細點哈,謝謝
13樓:匿名使用者
第一題*和++運算優先順序相等,運算自右向左*p++; 相當於p++後再*p,所以p指向&a[1], *p等於11
*比+的運算優先順序高
*p+=1;相當於*p=*p + 1;
答案為c
第二題答案為a
s是陣列首地址,不是指標,不可移動
14樓:白色靈雲
p(2,2)=3*(6*5*4*3*2*1)
15樓:匿名使用者
p(2,2)=3*(6*5*4*3*2* 1*)
c語言題目~求詳細解釋 答案我已經知道謝謝
16樓:匿名使用者
#include
main()
17樓:
通過字元陣列接受一個字串,然後判斷每個字元是不是‘0’~‘9’之間的字元,如果是,就把它變成字母表裡的倒數第幾個字母。比如字元為‘0’,那麼就變成z,'1'~y.....依次類推。
c語言簡單程式設計題目兩道,求高手做一下。高分
第1題 include include define max 200 int main void i file fp if fp fopen in.dat wb null fwrite a,sizeof a 1,fp 將資料寫入檔案,位元組的方式 for i 0 i max i return 0 第...
大佬們求兩道c語言程式設計題,一道C語言程式設計題,求解大佬
一 include stdio.h typedef struct nodenode int main int argc,char ar p for p s p p p next printf d p data printf n return 0 執行結果 題目沒有硬性要求,只有5個結點的連結串列本人...
初學者請教 兩道簡單的c語言程式設計題目
沐沐 我沒有改你的輸入語句,如果改了會更短一點。include void main else if j 2 0 t for j 1 j else if j 2 0 t day 30 d1 12 m1 30 y2 y1 1 365 m2 1 30 d2 t printf total day d n d...