C語言問題,求高手解答,謝謝,一個很簡單的C語言問題,求高手解答,謝謝!

2021-08-06 07:18:36 字數 4790 閱讀 3040

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 其實就是兩條語句,第一...