一道c語言題目,求大神給答案輸出是多少

2021-03-08 18:04:30 字數 7016 閱讀 4014

1樓:匿名使用者

在這個程式中主要看哪個static這是靜態的意思 也就是說 當fun()函式運算完也不釋放x的值 直到mian()函式執行完才釋放x的值,這個程式的執行順序就是,先進入到mian()函式,做迴圈,s=s+fun()到這句的時候會去呼叫fun()函式 這是返回x=x+1=2 s=1+2 這時s=3 for迴圈中i的值自增後

i=2 這時s=3還是滿足條件,這樣一直迴圈下去,這個程式感覺不對,這樣就死迴圈了,因為fun()函式中的x值一直沒有被釋放 第二次執行的時候就變為x=2+1=3了。。這樣 主要就是static的作用

2樓:匿名使用者

static int x =1; //這句說明了x是個 靜態變數,每次呼叫函式修改的時候,會影響下次訪問時的值。所以有:

第一次呼叫fun()函式的時候,x = 1+1 =2;

第二次呼叫fun()函式的時候,x = 2+1 =3;

第三次呼叫fun()函式的時候,x = 3+1 =4;

.....

因此,main()中for迴圈

i=1時, s = 1+fun() = 1 + 2 =3;

i=2時, s = 3+fun() = 3 + 3 = 6;

i=3時, s = 6+fun() = 6 + 4 = 10;

........

由於 在迴圈中,i 是自加1 的,而s 也是增長的,而且增長的速度比 i 增長的快,所以始終有i<=s;

因此,這個程式會陷入死迴圈中~~根本就執行部了printf("%d\n",s);這條語句,因為程式一直在執行上面的迴圈語句....

3樓:黑色

只執行一次 隨後輸出3

一道c語言題目,求大神解答~~~

4樓:匿名使用者

先貼效果:

請輸入一個不多於5位的正整數:

25879

該數是 5 位數,正序是 25879 ,逆序是 97852再貼**:

#include "stdio.h"

#include "conio.h"

main()

else

printf(" 該數是 %d 位數,正序是 %d ,逆序是 %d \n",count,old,y);

} getch();

} 思路:

while(x>0)

把一個數 每次除10取餘,就得到個位了。

再把這個數除10(整除),就縮小為原來的10分之一了。在此處理就得到十位了。依次迴圈

直到為0結束!

為了按你的順序列印出來,我就特別處理了下。用old記錄原來輸入的x,y記錄新的數好運!

5樓:

#include "stdio.h"//

#include "string.h"//

void main(void)

6樓:魔囡

#include

int main()

printf("%d",digit);

return 0;}

7樓:匿名使用者

#include

void main()

for(i=1;i<=5;i++)//正序輸出(因為之前取整是按5位數取整,如果該數小於5位,則取整出現0)

if(a[i]!=0) printf("%d",a[i]);

for(i=5;i>=1;i--)//逆序輸出if(a[i]!=0) printf("%d",a[i]);}

8樓:90後_誠信

這個你可以輸入一個string的型別

一道c語言邏輯題目,求大神幫一下!

9樓:聽不清啊

#include

int main()

10樓:七琪淇

逐一驗證即可,偽**

實驗**:

#include

int main()

//假設b說的是真的,驗證:

res = 1;

if (res != 2 && res == 4)//假設c說的是真的,驗證:

res = 1;

if (res != 4 && res == 4)//假設d說的是真的,驗證:

res = 1;

if (res != 4 && res != 2)}實驗結果

一道c語言的題目,求大神解答。 5

11樓:雲中鶴隱

while(~scanf("%d",n)).

~是什麼

12樓:心河星塵

你忘記將每次迴圈前將sum清零了。還有格式等等問題。改法是#include

int main()

}sum = 0;

for(b=0;b

printf("%.2f\n",sum/n);

}return 0;}

13樓:匿名使用者

#include

int main()

{int n,i,j,a,b,sum=0;

while(~scanf("%d",n)){int a[n][n];

for(i=0;i是那個意思吧。

14樓:匿名使用者

你的程式 太混亂了~~ 本是一個簡單的程式被你搞複雜了

15樓:匿名使用者

while(~scanf("%d",&n))

n前面少一個取地址符

16樓:匿名使用者

陣列名和變數名衝突(a).

一道c語言的題目,跪求大神解答,拜託能不能解釋一下執行過程 5

17樓:油條大巴

#include

int main()

,*p1[3],(*p2)[3];

// 二維陣列p有3行,每行有3個整數.

// 應該寫成int p[3][3]=, ,  };

// p等於0x28fee4,這是十六進位制數,是記憶體地址,從這個記憶體地址開始,連續存放9個整數.

// p[0]等於0x28fee4,這是第0行的首地址,存放1,2,3這三個整數,每個整數佔用記憶體4個位元組,

//     其中,[0x28fee4]=p[0][0]=1,[0x28fee8]=p[0][1]=2,[0x28feec]=p[0][2]=3

// p[1]等於0x28fef0,這是第1行的首地址,存放4,5,6這三個整數,每個整數佔用記憶體4個位元組,

//     其中,[0x28fef0]=p[1][0]=4,[0x28fef4]=p[1][1]=5,[0x28fef8]=p[1][2]=6

// p[2]等於0x28fefc,這是第2行的首地址,存放7,8,9這三個整數,每個整數佔用記憶體4個位元組,

//     其中,[0x28fefc]=p[2][0]=7,[0x28ff00]=p[2][1]=8,[0x28ff04]=p[2][2]=9

for(i=0;i<3;i++) p1[i]=p[i];

// int *p1[3]是"指標陣列",是一種"陣列",裡面存放的是"指標",也就是存放"記憶體地址".

// 定義p1裡的數字"3"表示能存放3個"指標",也就是3個"記憶體地址".

// i分別等於0,1,2

// i=0時,p1[0]等於p[0]=0x28fee4, p1[0]指向p的第0行的首地址,也就是指向的首地址.

// i=1時,p1[1]等於p[1]=0x28fef0, p1[1]指向p的第1行的首地址,也就是指向的首地址.

// i=2時,p1[2]等於p[2]=0x28fefc, p1[2]指向p的第2行的首地址,也就是指向的首地址.

// p1等於0x28fed8,這是記憶體地址,

// 記憶體地址0x28fed8裡連續存放了三個資料:0x28fee4,0x28fef0,0x28fefc

// *p1=*(p1+0)等於0x28fee4,也就是 *p1 = p1[0]=p[0]=0x28fee4

//                        也就是*p1指向二維陣列p的第0行的首地址

// *(p1+1)等於0x28fef0,也就是 *(p1+1) = p1[1]=p[1]=0x28fef0

//                     也就是*(p1+1)指向二維陣列p的第1行的首地址

// *(p1+2)等於0x28fefc,也就是 *(p1+2) = p1[2]=p[2]=0x28fefc

//                     也就是*(p1+2)指向二維陣列p的第2行的首地址

// 所以,p1這個"指標陣列",存放了三個記憶體地址 ,

// 也就是 .

// 這三個資料就是三個"指標",也就是三個"記憶體地址",分別是二維陣列p的三行整數的首地址.

// 例如,*(p1+1)+0 指向 p[1] 的第0個整數4的記憶體地址

//      *(p1+1)+1 指向 p[1] 的第1個整數5的記憶體地址

//      *(p1+1)+2 指向 p[1] 的第2個整數6的記憶體地址

//      *(*(p1+0)+0) = p[0][0] = 1

//      *(*(p1+0)+1) = p[0][1] = 2

//      *(*(p1+0)+2) = p[0][2] = 3

//      *(*(p1+1)+0) = p[1][0] = 4

//      *(*(p1+1)+1) = p[1][1] = 5

//      *(*(p1+1)+2) = p[1][2] = 6

//      *(*(p1+2)+0) = p[2][0] = 7

//      *(*(p1+2)+1) = p[2][1] = 8

//      *(*(p1+2)+2) = p[2][2] = 9

p2=p;

// int (*p2)[3]是"陣列指標". 語句p2=p表示"陣列指標"p2指向二維資料p的首地址.

// 定義p2裡的數字"3"表示每行有3個整數.

// p2等於0x28fee4,這是記憶體地址,是二維資料p的首地址.

// *p2 = *(p2 + 0) = p[0] = 整數p[0][0]的記憶體地址

//       *(p2 + 1) = p[1] = 整數p[1][0]的記憶體地址

//       *(p2 + 2) = p[2] = 整數p[2][0]的記憶體地址

// *( *p2 + 0 ) = *( *(p2 + 0) + 0 ) = p[0][0] = 1

// *( *p2 + 1 ) = *( *(p2 + 0) + 1 ) = p[0][1] = 2

// *( *p2 + 2 ) = *( *(p2 + 0) + 2 ) = p[0][2] = 3

//                *( *(p2 + 1) + 0 ) = p[1][0] = 4

//                *( *(p2 + 1) + 1 ) = p[1][1] = 5

//                *( *(p2 + 1) + 2 ) = p[1][2] = 6

//                *( *(p2 + 2) + 0 ) = p[2][0] = 7

//                *( *(p2 + 2) + 1 ) = p[2][1] = 8

//                *( *(p2 + 2) + 2 ) = p[2][2] = 9

for(i=1;i<3;i++)

printf("%d,%d\n",*(*(p1+i)+1)+1,*(*++p2+1)+1);

// i分別等於1,2

// i=1時, *(*(p1+i)+1)+1 = *(*(p1+1)+1)+1

// 其中,*(p1+1) 等於0x28fef0,也就是 *(p1+1) = p1[1]=p[1]=0x28fef0

// 也就是 *(p1+1) 指向二維陣列p的第1行的第0個整數的記憶體地址

// 而 *(p1+1)+1 指向二維陣列p的第1行的第1個整數的記憶體地址

// *(*(p1+1)+1)就是提取"第1行的第1個整數",也就是

// *(*(p1+1)+1) = p[1][1] = 5

// 所以,*(*(p1+1)+1) + 1 = 5 + 1 = 6 (這是螢幕輸出的第一行第一個整數)

// 對於 *(*++p2+1) ,原本是 *( *(p2 + 0) + 1) = p[0][1] = 2

// 由於有"++p2"的運算,成為 *( *(p2 + 1) + 1 ) = p[1][1] = 5

// 所以, *(*++p2+1) + 1 = 5 + 1 =6 (這是螢幕輸出的第一行第二個整數)

// i=2時, *(*(p1+i)+1)+1 = *(*(p1+2)+1)+1

// 其中,*(p1+2) 等於0x28fefc,也就是 *(p1+2) = p1[2]=p[2]=0x28fefc

// 也就是 *(p1+2) 指向二維陣列p的第2行的第0個整數的記憶體地址

// 而 *(p1+2)+1 指向二維陣列p的第2行的第1個整數的記憶體地址

// *(*(p1+2)+1)就是提取"第2行的第1個整數",也就是

// *(*(p1+2)+1) = p[2][1] = 8

// 所以,*(*(p1+2)+1) + 1 = 8 + 1 = 9 (這是螢幕輸出的第二行第一個整數)

// 對於 *(*++p2+1) ,之前i等於1時,是 *( *(p2 + 1) + 1 )

// 由於有"++p2"的運算,現在成為 *( *(p2 + 2) + 1 ) = p[2][1] = 8

// 所以, *(*++p2+1) + 1 = 8 + 1 =9 (這是螢幕輸出的第二行第二個整數)

// 所以,程式輸出的第一行是6,6, 第二行是9,9

return 0;}

求教!一道C語言題目,求教一道c語言題,求詳細過程

你主函式裡m肯定還是1,func函式中的靜態變數應該是8了吧。你檢視變數值的位置是什麼樣的,如果在主函式裡檢視肯定是主函式中的m,即為1,因為發生作用域覆蓋了。你是第二次進入func後設定斷點,檢視m數值的可定為8。由程式執行結果為8 此時i 3,m 3 1 4,因此返回值為8 17 此時i 3 8...

求高人解答一道c語言題目求高人解答一道C語言題目

a程式是遇到3的倍數就不輸出,然後繼續判斷下一個數 b程式是遇到第一個3的倍數就退出迴圈,不再輸出。n 3 n 200 這句為 n 3 與 n 200全成立為真是1 有1個不 成立為假是0 當然不等價了,你第一個程式是從100為起點的.到200為終點,這是一個條件成立則繼續執行.b是象一樓說的那樣....

c語言題目求答案解析,C語言題目,,求答案解析。

請參bai考du這zhi 篇回dao答專 屬 求一道c語言題目解答 pow 函式原型是 double pow double,double n pow 1 rate,year 這句裡year 是int 型,改為double 另外輸入函式 將 f 改為 lf 這句話的意思是 你輸入的時候要用這種形式 m...