1樓:
分析 fun(26)的返回值:
dowhile(num);
第1次迴圈
1,k *= 26 % 10 就是 k *= 6; 即k= k * 6 即 k = 1 * 6 就k = 6
2,num = num / 10 即 num = 26 / 10 即num = 2;
第2次迴圈
1,k *= 2 % 10 就是 k *= 2; 即 k = 6 * 2 就k =12
2,num = num / 10 即 num = 2 / 10 即num = 0; 這時不滿足迴圈條件,退出迴圈。
綜述: fun函式就是把 引數num 分離出各位,然後各位相乘,例如輸入 323 那麼返回值就是 3 * 2 * 3
2樓:匿名使用者
dowhile(num);
這段**從num的個位開始,逐位拿出來和k相乘。
3樓:九離天
k*=num%10;就是k=k*num%10
4樓:匿名使用者
首先num不為0時(n為26)就有k的輸出值為1,然後對26進行10求餘,k應該為6,輸出為16才對,呵呵僅供參考,可以去為一下你們老師
怎麼理解這段c**,結果為什麼是12?
5樓:gta小雞
統計0~6中所有偶數之和,結果為0+2+4+6=12
6樓:知道小小白
這段**就是算小於7的正偶數和。0+2+4+6 = 12
c語言初學者,求大神解釋下面這段話,越詳細越好。尤其是那幾個wr語句以及裡面的東西。謝謝
7樓:匿名使用者
這是什麼啊!
感覺0x80+i,應該是一個十六進位制的東東。
大體上的意思是什麼就不清楚了
8樓:匿名使用者
那是個函式,com那個是傳送命令,我記得清屏需要傳送兩個命令。應該是1602吧
c語言,這組語句求解釋(很簡單的語句,但是想不通)
9樓:冰上游魚
這跟編譯器等有關。 這個**會被編譯成不同的彙編**。
10樓:
大家測試一個輸出
i=8;
printf("%d,%d,%d,%d,%d\n",i++,i,i--,i--,i--);
你會發現輸出了5個8也就是說i++,i--操作之後都沒有影像i的值,但是++i,--i會影響,希望大家去驗證這句話。
那麼在printf裡的運算順序是從右向左。然後等運算完了再從左向右輸出,程式執行的順序如下:
printf("%d\n",-i--);//第1步 i本來是8 ,--在後面直接忽略,-8進棧
printf("%d\n",-i++);//第2步 i本來是8 ,++在後面直接忽略,-8進棧
printf("%d\n",i--);//第3步 i本來是8 ,--在後面直接忽略,8進棧
printf("%d\n",i++);//第4步 i本來是8 ,++在後面直接忽略,8進棧
printf("%d\n",--i);//第5步 i本來是8 ,--在前面自減1 ,7進棧
printf("%d\n",++i);//第6步 i本來是7 ,++在前面自加1,8進棧
在螢幕列印時候出棧因此為8 7 8 8 -8 -8
11樓:匿名使用者
這是一個很典型的將數字字元'0'到'9',轉換成對應的整數值的方法。由於在ascii字元編碼中,'0'到'9'是順序編碼的(30h~39h,h表示16進位制,換成10進位制是48d~57d,d表示10進位制)。你的程式假設字串為數字字串,*p是'0'到'9'中的一個,但是*p始終是字元,不是整數值,要得到其對應的整數值,就用*p-'0'。
c編譯器將把*p和'0'轉化成其對應的整數編碼,然後相減,則得到這兩個字元在ascii編碼中的差值(也叫偏移量),這就是*p這個字元對應的整數值。我們看一個例子:
假設*p=='6',*p-'0'就變成'6'-'0',轉化成起對應的ascii編碼就是54d-48d,就等於6d,就是整數值6。
另外你的程式有個問題:while(*p != null)應該改成
while(*p != nul)或者while(*p != '\0')
null是一個空指標,不是空字元。空字元的ascii編碼是0,型別是char,空指標的型別是void *
12樓:
糾結這些語法的東西很沒有意義。。。。
少用自加自減(連續使用的情況下)。
計算機不會糊塗,不代表程式設計師不會糊塗。
13樓:
首先要理解++(或--)在前++i(--i)和++(或--)在後i++(i--)有什麼區別;
這裡以++i和i++為例說明一下(--同理);而且他們都是表示式1、++i這個表示式先對i做自加,而且表示式等於自加後i的值;
所以如果初試i=8;
執行++i以後,i=9,表示式等於9.
2、i++這個表示式後對i做自加,而且表示式等於自加前i的值;
所以如果初試i=8;
執行++i以後,i=9,表示式等於8.
其次,printf列印表示式,它列印的是表示式的最終值,而且他是先從後往前計算表示式,然後列印表示式;
對於提問的例子,有了上面的基礎,現在解釋如下:
printf("%d\n%d\n%d\n%d\n%d\n%d\n",++i,--i,i++,i--,-i++,-i--);
6、++i,執行後表示式8;
5、--i,執行後表示式7;
4、i++,執行後表示式8;
3、i--,執行後表示式8;
2、-i++,執行後表示式-8;
1、-i--,執行後表示式-8;
14樓:匿名使用者
這是編譯器編譯分析執行的不一樣 導致你會有這個問題的。
1,printf語句是從右向左分析執行, 正確的答案應該是 8 7 7 -7 -8
因為您用的軟體(個人認為是優先順序問題) 把-i--認為是 (-i)-- 這樣的情況下 就會得出你說的結果。
2,請根據考試大綱, 用指定的軟體
15樓:匿名使用者
我的結果是 8 7 7 8 -7 -8 (編譯器是dev-c++4.9.9.2)
我和二樓看法一樣..還是由printf函式入棧順序來看首先,++ --這兩個的優先順序高於-(現在分的時候是分到一級的,實際上不是)
最右邊的-i--也就是-(i--),結果就是-8,i的值變為7-i++ 也就是-(i++),結果就是-7,i==8i-- 結果8,i==7
i++ 結果7,i==8
--i 結果就是i,i==7
++i 結果就是i,i==8
倒過去就是了..
我這邊可以很好解釋
c語言初學者,幾個簡單問題,求解釋!
16樓:匿名使用者
這個怎麼解釋呢,哪句話不懂啊
17樓:
沒有break就一直執行下去啊
18樓:問號朵朵
可以執行,這主要是讓你理解自加運算子、continue和break語句
可以執行,這主要是讓你理解自加運算子、continue和break語句
1、 while(x<15) y++,x+=++y;
printf("%d,%d\n",y,x);
第一次進入迴圈後,y自加1,但此時y還是0,因為是y++不是++y。之後執行x+=++y,此時的y值已經是1了,然後再++y就是2了,++y在計算中是取++後的y。因為兩條語句之間是逗號,所以都在迴圈體中。
2、do
while(s<15);
第一次進入迴圈,s+=i++:因為是i++所以,計算中先取值後+,s就等於4。
if(s%7==0)continue;如果能s被7整除,就不執行迴圈體後面的語句,進入下一輪迴圈。
3、 if(y>50) break;
如果y>50就不執行迴圈體後面的語句並跳出迴圈。
4、 case 0:
case 3:a+=2;
case 1:
case 2:a+=3;
default:a+=5;
i從0到4,因為沒有break語句,為0時5個case全執行;為1時case 1: case 2 default:執行,以此類推。
針對hejitianxia的跟貼,還要補充一點,完全屬於**。
第一題:我認為逗號運算子計算順序為:從左至右,最後計算的表示式的值和型別便是整個表示式的值和型別,簡單的例子是:
a=(1,2,3); 結果為a=3。所以y++,x+=++y是先算的y++然後算x+=++y。
第二題:s在第二次迴圈就等於7,else ++i;在第二次迴圈就沒執行。
第三題:只要設定了跳出語句就不是死迴圈。while(a=14);其中a=14是條賦值語句,每一次執行到while(a=14);就將a賦值為14,迴圈體中有a+=2;所以a=16。
同時a=14又是while的迴圈條件,14不為0,while一直迴圈直到y>50結束迴圈。
再次宣告:只是討論。
c語言這段程式求解,為什麼輸出結果是0,11,10,12
19樓:阡陌她人只為你
因為b--<=2顯然不成立所以為0,&&運算先看左邊如果左邊為0那麼無論右邊為什麼整個都為0,所以當判斷左邊為0後就不再執行後面的了 。
20樓:匿名使用者
#include
void main()
21樓:匿名使用者
b--<=2是false
不執行c++
22樓:匿名使用者
&&操做的特性,當左邊判斷為false時,將不再操作右邊的部分,||操作亦然。
a++<=10&&b--<=2已經為false了, c++根本沒有操作。so
求解釋一段c語言程式的執行結果,程式及結果如圖所示
23樓:千矢羽
子函式a的形參是指標——int *p,使得呼叫子函式時輸入的是地址—版—&x:指的是x的地址;
子函式的權用處是輸出x地址+1的值,printf("%d\n",*++p)輸出垃圾值
++p,是無論執行什麼語句都先加+1再執行語句相當於:
p=p+1;
printf("%d\n",*p);
24樓:凹凸曼和怪獸
列印bai出來應該是
個很大的未知du數,因為a(&x)傳入的zhi引數是daox的地址,p是一個指標,所以內p=x的地址容 而不是20,*++p指代的是先將p做加的操作 也就是將x的地址做加1操作,然後再取加1後地址裡面的值,而你現在只設定了x的地址上的值為20,而x加1的地址上的值是個未知數,所以答案是一個未知數;
25樓:匿名使用者
在函式a中, printf 列印*++p,意思就是列印*(++p), 也就把傳過來的x的地址加一後,列印這個變化後的地址的內容,裡面亂碼。
26樓:匿名使用者
在函式a( *p);函式引數*p指標變數,函式實現中的 *++p等於*(++p)實際上一個地址,++p 等於p =p+1;而後取地址。
求大神指教,對於C語言初學者應該怎樣去學習那些符號語言,或者
學習c語言其實不難,把握兩個方向 資料結構 函式用法 1 由於c是在dos模式下執行,建議學一點相關的知識 2 c語言屬於程式語言,如果想編一個好程式,需要學習好資料結構 3 作為一個程式設計師,需要強的邏輯思維和靈活多變的頭腦 4 在程式設計上講,需要一定的英語基礎,其實有很多函式基本上就是英語單...
C語言初學者求助,程式設計題,大神看看我編的程式是否有錯誤
好吧我覺copy得樓上兩位簡直bai就是亂來的。這個是最基本的判斷du選擇語句。上題中,假設zhia小於30,則m 1.否則dao a大於等於30 且a小於40,則m 2.同理,a在40到49之間,m 3 a在50到59之間,m 4.a在60到99之間,m 5 case的作用是,讓程式進行跳轉。其實...
c語言的問題,我是初學者。下面的程式為什麼可以編譯但會停
關於 c 語言程式出錯的型別有很多。例如 語法錯誤 隱藏的未知錯誤等。其中 語法錯誤是最容易排除的。例如 int num 10 如果在該語句後面缺少了一個分號,那麼編譯器就會報錯 正確的語句應該是 int num 10 但是隱藏的未知錯誤,那麼除錯起來可就是非常困難了,如果沒有豐富的程式設計經驗,那...