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語言問題,求高手解答,謝謝
scanf 分數 d n score 是錯的,這樣會導致你無法輸入任何資料。不信你可以先給score賦乙個初值,然後 printf d score 就會發現score永遠是初值。應該寫成scanf d score 如果你需要顯示 分數 應該再用乙個printf include void main s...
C語言程式問題,求高手 C語言問題,求大佬解答
我嫌麻煩是否可以把print star 換成別的字母 是可以的,可以按照你說的換成void a 也行。這只是初學者用用。你以後開發大程式,這麼多函式,你能分得清什麼函式做什麼用麼?所以要養成好習慣。括號是帶參。下劃線也沒有什麼固定的意義,就是增加程式的可讀性。不懂再問。望 可以。裡面是用來放引數的 ...
C語言問題求大神解答,求大神解答一下C語言問題?
a b 2,n b 4 1 計算 裡面的,b 2,n n b 5 2 1,逗號表示式返回最後一個表示式的值 賦值表示式的值就是被賦給的值,即1 所以括號裡面結果為1 2 計算a 1 4,先計算等號右邊的值 5 則a 5,等價於a a 5 12 5 2 樓主你好。b 2,n b 其實就是兩條語句,第一...