1樓:
這是基本遞迴方法。
你做這題可以用排除法吧
a 這個printf每次會輸出一串,肯定不行了b fun函式傳入引數其實是字串指標,fun(*(s+1))傳入的是char型別,好歹也得char *的指標型別啊
c 和a一樣 每次必定輸出一個字串。我們應該每次輸出一個字元。
那就d吧
關於d,fun(s+1)肯定傳入了字元指標,fun裡面最後那句是 printf("%c",*s); 遞迴傳入s+1,則最後會變成fun(s+strlen(s)-1),這個時候就可以輸出最後一個字元了。最好是上機跟蹤除錯一下。
2樓:手持鍋盔奔小康
void fun(char *s)
不急,慢慢推,
執行第一次的時候,s為首地址的對吧,我們假設為s0,在呼叫fun(s+1)時,進入一個遞迴,此時,還未呼叫到列印的地方,那麼此時s為第二個字元,此時s為s1,
依次類推,當執行到最後一位是列印的資料為s(end),此時s(end)為空字元,return了對吧,那麼返回上一個,也就是字串最後一個不為空的字元,並列印結束後再返回,
然後再逐個列印,就將字串逆向列印出來了
3樓:匿名使用者
使用遞迴的方法。
假設 s指標指向字元陣列 helloword!
那麼 s代表的是字元陣列的首地址。printf("%c",*s);即輸出 h
程式呼叫 fun(s+1); 進行遞迴。直到最後一個元素!
最後從後面進行逐個輸出。即可達到相反次序顯示
4樓:匿名使用者
遞迴呼叫問題,答案是找到指標所指向的結束標誌『\0』,找到之後就return,具體我就沒執行過,希望能幫到你,
5樓:看灰過來了
這是個遞迴呼叫的函式,每次fun(s+1),一直到遇到\0,函式遞迴呼叫結束,那if後的條件就成立了,這時從後向前一步一步執行遞迴函式,一直推到最開始。從而實現逆序輸出
一個很簡單的c語言問題,求高手解答,謝謝!
6樓:風清響
scanf("分數= %d\n",&score);是錯的,這樣會導致你無法輸入任何資料。
不信你可以先給score賦一個初值,然後
printf("%d",score);就會發現score永遠是初值。
應該寫成scanf("%d",&score);
如果你需要顯示「分數=」,應該再用一個printf#include
void main()
switch(score)}
7樓:汐_楓
scanf("分數
= %d\n",&score);//不是printf沒有輸出功能,僅限格式化型別,且對於整形
資料\n是不允許在裡面的,兩種改法:
scanf("分數= %d",&score);//輸入 分數=12或者scanf("%d",&score);//直接輸入數字 12還有switch裡面也錯了
8樓:匿名使用者
多了scanf("分數= %d\n",&score);去掉試試
c語言問題,請教高手解答!非常謝謝!!
9樓:匿名使用者
#include
const int c=2009;
int main()
int n,p,s,i,j,t;
printf("please input n and p:");
scanf("%d,%d",&n,&p);
s=0;t=1;
for(i=1;i<=n;i++)
t=t*p%c;
printf("t value is %d\n",t);
for(j=1;j<=i;j++)
s=(s+t)%c;
printf("s value is %d\n",s);
printf("%d\n",s);
getch();
return 0;
可以新增輸出**檢視每一步的輸出結果, 每步的結果統計(e,f)如下:
其中s為替代累加, 根據等差公式計算結果為s=s(上次結果)+n*t. 最終的求餘結果為782.
當數值小於常量c時,求餘結果為其本身。
7道c語言題,求高手解答。
10樓:匿名使用者
1 swap呼叫的時候實參傳給形參,x給m,y給n 。而這裡面有一個重大的問題就是x與m並不是同一個記憶體單元,y與n也不是同一個記憶體單元,這就暗示著你對m和n的改變並沒有使得x和y有任何的效果,因為它們是不同的記憶體單元,所以你交換的只是m和n記憶體單元中的值,而對x y沒有任何影響,此題關鍵分清楚它們是佔據不同的記憶體單元的。這個主要就是對記憶體地址和記憶體中存放的值搞此就ok,所以指標要學好!
2 答案應該是c不是d 。 m成立 等價於m為真 等價於m非0 等價於m不是0 等價於m不等於0 即m!=0
3 答案應該是b不是d 。 由2題推導可知w等價於w!=0 而!w就是w!=0的否命題就是w==0
4 你再好好驗證一下吧,在vc6中printf("%");是沒有任何輸出的,只有printf("%%");才會輸出一個%
5 第二行是一個逗號表示式,但沒有用,你依次執行一下先是給x和y賦值6,接著把x賦給z,z=6,然後++y,y變成了7整個表示式的值是++y的值也就是7. 但你搞清啊,最後printf("%d",z);這個輸出的是啥? 是z的值啊!!
不是上邊表示式的值,z的值是6呀! 如果第二行這樣寫:z=(x,++y);這樣的話結果是7 注意看有沒有括號。
6 選b
7 應該是8,fseek的第二個引數應該是偏移量,第三個引數0說明是從頭開始,也就是數字1開始的,對於數字1它的偏移是0,數字2是1,數字3是2,依次數字9應該是8
11樓:匿名使用者
1、很常見的問題了,這麼跟你說吧,呼叫swap(x,y);的時候,把x和y複製了一份,成為形參,形引數據交換了,那麼x,y實際值沒變,不是嗎?
2、表示式m和表示式m!=0是等價的,c語言中所有的邏輯表示式的真假都是由表示式的值來判斷的,當值為非0數則為真,為0則為假。當m為非0時,m為真,m!
=0也為真,但m為0時,m為假,m!=0也為假。
3、同2
4、%本來就有自己的含義,也即是說合法的情況是%後面必須有一個格式符,如果沒有,編譯器也會認為合法,預設的情況,那就是%,只是如果你想列印一個%和一個s的話就不能只寫一個%了
5、優先順序的問題,逗號優先順序很低的,z=x,++y;等價於(z=x),(++y);
6、b7、第三個引數0等價於巨集seek_set,即檔案開始處,9
c語言問題!請高手解答!謝謝
12樓:匿名使用者
你分析程式,首先看main函式,輸入兩個數字~
進入for迴圈,迴圈次數是你輸入兩個數字的差~
進入一個判斷就是90-120之前的i是否等於 rsum(i)的返回值~
那麼看rsum函式:sum=0,進入while迴圈~
sum=sum*10+(j%10);(sum是0,%是代表的取餘,就是除法裡的餘數,比較相近~)
那麼就拿兩個數來舉例,90和99:
90:sum = 0 * 10 + (90 % 10)其實還是0~j = j/10就剩下是90/10=9對吧,!=0成立~
再一次進入while迴圈~sum = 0 * 10 +(9% 10); 這時因為不夠除,所以餘數就是本身。所以sum=9~
j = j/10,因為不夠除,所以它變成0,不滿足while的條件,跳出while迴圈,return出9~90等於9嗎~不等於,所以for迴圈的if不滿足,進行下一輪,執行91~
99:sum = 0 * 10 + (99 % 10)得到sum = 9~j = j/10就剩下是99/10=9對吧,!=0成立~
再一次進入while迴圈~sum = 9 * 10 +(9% 10); 這時因為不夠除,所以餘數就是本身。所以sum=99~
j = j/10,因為不夠除,所以它變成0,不滿足while的條件,跳出while迴圈,return出99,那麼這時候i也是99~所以條件成立,列印出99~
13樓:腦筋急轉
rsum函式的作用就是倒序 比如 rsum(56) = 65main()迴圈裡
從90到120 之間 尋找正序反序一樣的數字 只有三個for (i = n; i < m; i++)if (i == rsum(i))
printf("%d ", i);
//遇到 正序 == 倒序的就輸出
14樓:匿名使用者
此題求的就是 一個數是否左右對稱。
99 = 十位 9 * 10 + 個位 9 = 個位 9 * 10 + 十位 9
101、111 類似
int rsum(int j) 函式所完成的就是從右獲取每個整數的值,然後再逐步反向計算數值。
請高手解答c語言問題,謝謝!
15樓:苦孩子
003.14 0000
3.142
%m.n, 其中m表示佔幾列,n表示保留到小數點後幾位,一般在預設的情況下保留到小數點後六位,
第一個為預設的情況,
第二個為保留到小數點後三位
16樓:喬納森
1. false
2. 0
3. 3.14,3.142
在機子上試試就可以出結果的呀?要勤奮呢。。。還得動腦子思考
C求高手解答謝謝,請高手解答c語言問題,謝謝!
employee char name 10 char address 20 char city 20 char youbian 6 name 10 abc address 20 abc city 10 abc youbian 6 000000 cout 初始化完成 建構函式用初始化連結串列應在類內,...
c語言問題求高手解答,C語言問題求高手解答
幫你寫好了,這裡幫你編譯執行了,沒任何問題,不放心的話你自己試試struct staff int main void if head null puts 沒有任何資料,抱歉!else current head while current null current head while current...
c語言問題,求高手指教,一個C語言問題,求高手指教!
典型的求素數的 這是等於是可能的 如果不是素數,那麼k不等到i就break跳出迴圈了,這個你明白 所以k小雨i的時候就不是素數 如果是素數,那麼k會迴圈到i,這個是for的機制得出的。那麼k和i相等 所以判斷是否是素數的條件就是判斷k和i是否相等 只要k不大於i即使素數,大於等於包含等於,所以可以這...