1樓:匿名使用者
第一題:
fun6(35);
首先執行k*=num%10;
根據優先順序,上述表示式等價於 k=k*(num%10)=1*(35%10)=1*5=5;
然後執行num/=10; 即num=35/10=3;
之後while(3)條件成立繼續迴圈。
首先執行k*=num%10;
根據優先順序,上述表示式等價於 k=k*(num%10)=5*(3%10)=5*3=15;
然後執行num/=10; 即num=3/10=0;
之後while(0)條件不成立退出迴圈。
因此結果為15;
第二題:
第一次執行fib(5);
因為n=5不滿足條件,所以執行fib(4)+fib(3);
因為n=4或3也不滿足條件,所以fib(4)繼續執行兩個函式fib(3)+fib(2);而fib(3)執行兩個函式fib(2)+fib(1);
因為n=3或2也不滿足條件,所以fib(3)繼續執行fib(2)+fib(1);而fib(2)執行fib(1)+fib(0);
綜上結果得到fib(5)=fib(4)+fib(3)=fib(3)+fib(2) + fib(2)+fib(1)=fib(2)+fib(1) + fib(1)+fib(0) + fib(1)+fib(0) + fib(1)=fib(2)+6=fib(1)+fib(0)+6=8;
這樣寫應該能懂吧
2樓:育知同創教育
7:k=1*35%10 得到k=5 num = 35/10=3;k=5*35%10=15,num = 3/10=0;迴圈結束;輸出15;
8:fib(5)=fib(4)+fib(3)=fib(3)+fib(2)+fib(2)+fib(1)=fib(2)+fib(1)+fib(1)+fib(0)+fib(1)+fib(0)+fib(1)=fib(1)+fib(0)+fib(1)+fib(1)+fib(0)+fib(1)+fib(0)+fib(1)=8
c語言兩道題,求執行結果。 請寫出詳細分析過程!!謝謝!滿意答案與解釋者給分
3樓:匿名使用者
main()
由 str="helloeverybody"來看,j->第一個y時(j=9),不再有比它更大的字元。
str[j]=str[i];//此時j=9, i = 14 str[14]='\0' ,即str[9] = '\0',結束符
puts(str); // = "helloever"}2、#include
int order(int a,int i)void main()
;for(n=0;n<7;n++)
if(order(a,n))
printf("%d,%d\n",a[n],a[n+1]);
}n=0 29<5為假,返回值為0,不輸出n=1 5<18為真,返回值為1, 輸出5,18n=2 18<8為假,返回值為0, 不輸出n=4 8<5為假,返回值為0,不輸出
n=5 5<3為假,返回值為0,不輸出
n=6 3<8為真,返回值1,輸出3,8
4樓:匿名使用者
3,8函式1;結果為helloever;
因為str[i]!='\0』,所以退出迴圈時,str[i]='\0『;
由於句子中y最大根據ascii表;所以句子第一個y被換成'\0'(因為y不大於y);所以printf函式遇到『、0』結束輸出,都答案如此!!!!
函式2:結果為5,18
3,8由於比較的返回值為徒true或者false;
所以當a[i]
兩道c語言試題,求講解;謝謝 5樓:匿名使用者 編譯器有個前處理器,會把所有的巨集,所以第一個問題後就是: printf(「%d」,30/3*10);很明顯,結果就是10*10 = 100 要想得出你希望的結論,可這樣寫巨集#define md (3*t)第二個問題就是左值和右值問題,說簡單就是傳值與傳地址的問題了,x是傳指標進去,屬於左值,所以,在裡面*x實際上就是對x的更改,而y傳入的是一個值,是一個右值,無法更改y的值的。 6樓:蘇星洗滌機械 1.#define 的作用是原封不動的代入,所以30/md就相當於30/3*10,乘除法是同級運算,從左向右算,所以結果是100。 2.p函式中x傳遞的是指標,指向的就是x這個變數所存在的地址,所以對指標的操作就會影響原有的x。而y的傳遞的是y的一個拷貝,變化的只是y的一個副本,所以原有的y沒有變化。 7樓:匿名使用者 #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採取同樣的引用方式 8樓:匿名使用者 #define 定義的兩個常量啊! 30/md=30/3*10=100 9樓:額滴那個腎啊 第一行定義了t=10,同理第二行定義 md=3*t 即是3*10 輸出30/3*10=10*10=100 第二題:首先x++是x先自加1,再在以後的語句中使用,而y--是以後使用y時才自減1,多以最後結果是1和3 10樓:匿名使用者 30/3*10=10*10=100. y--表示y的值先賦好,再減、 ++x表示x的值先加好,再賦值。。 11樓:陽光上的橋 #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語言問題,求大神解釋以下程式ret,getchar有什麼作用,最好能夠詳細點,謝謝,我是小白,初學者。,。 12樓:匿名使用者 ret這裡是用來接收scanf語句的返回值的。 scanf是個讀取輸入資料 的語句,返回值是成功讀取的資料個數。例如ret=scanf("%d,%d,&a,&b");這句,如果成功讀取了a和b,那麼scanf會返回2表示讀入了兩個資料。 下面的迴圈就是表示如果讀取的不是兩個數,就重新提示使用者輸入a和b。 至於getchar()是讀入一個字元,getchar()可以讀入包括換行符在內的ascii碼字元,使用者在輸入完a和b後一般會按一次回車,這個getchar就是用來讀取這個回車符的。 兩道c語言基礎題求解析,謝謝 13樓:1223永遠不棄 這要如何解析,第一題就是函式傳參問題,實參和形參型別一致 第二題就是結構體變數的三種定義方式 d選項只是結構體型別的定義,不是結構體變數的定義 下面有一些關於c語言問題,希望大夥兒侃侃,最好解釋詳細,謝謝呢? 14樓:匿名使用者 第一題:3 這是一道位運算,a&0377等同於011&011111111的運算,這兩個與一下值為011,也就是3 第二題:11 這也是位運算,先把3,10,15化為二進位制,依次為:011,1010,1111.a|b&c先執行b&c得到1010,再跟a或運算(一位一位或)得到1011,也就是11. 第三題: d) h/2*(a+b) h/2等於1,而代數中等於1.5.這是因為h為整型,h/2後也是整形,0.5捨去. 第四題:20 0 以上格式寫得讓人誤會,我重寫一下,你就會明白. main() ,固if語句範圍只有第一個;為此 x=y;y=t; printf("%d,%d\n",x,y); }第五題:8 4 void f(int y,int*x) x是按地址傳,而y是按值傳,當值傳到函式裡時,*x可以改變x的值,而y不能返回.保持原來的值... 第六題: 這是c語言的記憶體動態分配,不是很掌握,沒有把握,希望其它好心人幫忙一下補齊. 第七題:efgh 這道我簡單說下,語言點太多,要是不明白,發訊息給我,我就這題說詳細. return s+strlen(s)/2,返回的是一個指標,s指向首元素a,strlen(s)/2=4,固返回的指標指向第五個元素e.主函式中的 printf列印從第五個元素之後的字串. 第八題:6 這是一道遞規呼叫.主函式傳給函式時f()時,a=a[3]首元素是1;返回1+f(&a[1],2);f(&a[1],2)在呼叫函式時a=a[1],但此時首素是2而不是1;返回1+2+f(&a[1],1);最後呼叫函式,a=a[2],首元素為3,也只有一個;返回1+2+3,得到6 第九題:double max,&y 這題不需要解釋吧....還是簡單講一下,第一個空是函式宣告;要與定義的函式相符,第二個空,輸入時要加&,為什麼呢?我們要把輸入的值傳給變數對應的地址,固用地址符& 最後一題:14 位運算;12|012化簡得到:001100|001010=001110,換算成10進製得到14 其中注意,012是八進位制,1對應001,2對應010,一整個001010,因為兩個要等長,固補0; 哇,一口氣做完,真是夠累的...好久沒這麼做了... 呵呵,又來了; 我補充一下第六題,我看一下書,明白了. p=(double *) malloc(3*sizeof(double)); 15樓: 我說老兄,你到底學過程式設計沒有? 一道c語言程式填充題,問題如下,我看不懂為什麼這麼填,請詳細解釋一下,謝謝! 16樓:寂靜深闌斜 說下這段**思路。a、b兩個陣列,總有一個陣列元素最先被使用完,那麼之後存入c陣列的元素只能是另一個陣列的。i和j作為角標,就是用來表明a、b陣列各用了多少元素。 如果a、b陣列都沒用完,那麼就要判斷a、b誰出的元素小,小的存入c中(根據要求知c中元素由小到大排列)。 a的意思是取n的地址賦給指標p p表示取指標p裡的變數值,正確是p n b同理,輸出的是變數值,而不是地址,正確是printf d n p c格式輸入函式scanf後面引數是取地址值,乍看 p好像對,但是別忘了p是指標變數,本身作用就是儲存地址,所以正確是scanf d p 第一題嘛,if a 1 ... 弒緋 第一題 答案是 a 1,b 65535 原因 定義a和b為無符號的short整型,首先無符號,所以a 1,第二,本身short整型的輸出範圍是 32767到32767,但是因為是無符號的,所以是0到65535,而65536大於它,所以取最大值,65535 第二題 答案是 第一個輸出 23456... 碧海風雲 第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,...二級c語言選擇題 兩道求詳細解釋
兩道c語言題
兩道C語言題目,求答案和解析,謝謝