c語言題目,看不懂啊!求解釋,C語言 25題 完全看不懂啊

2021-03-24 11:50:46 字數 5286 閱讀 4077

1樓:匿名使用者

我也不懂。。你這段**到底有什麼意義。。找到最大的字元。。然後把它賦值成結束符。。

到底有神馬特殊作用。 最後輸出個mo。。。有什麼意思

2樓:匿名使用者

這個程式很簡單啊!程式不難,那就一步一步來,把它搞懂首先程式是從main()函式開始執行,

第一步:字串賦值

定義了字元陣列a用來儲存字串"morning"

第二步定義整形初值i,j

第三步執行for迴圈 for迴圈的含義就是將字串第一個字元後面的每個

字元與另外一個字元ascii碼值進行比較,而是前者ascii碼值大於後者,就用

前者的ascii碼值更新後者的ascii碼值。直到迴圈結束第四步a[j]=a[7]就是將'\0'賦給a[j]第五步puts(a);就是列印新的a字串(其實就是字串中從前字元遞增的子串)

程式要實現的功能:就是輸出字串中從第一個字元開始遞增的子串

c語言 25題 完全看不懂啊 20

3樓:盧臺長

答案是a,getchar()是得到一個字元,putchar是輸出一個字元,只要不等於感嘆號!,就把字元輸出,如果等於!就不輸出,退出while迴圈。

4樓:酷哥

當字串元素不等!時輸出,即輸出!之前的字串

c語言問題,這道題看不懂,求大神解釋,謝謝

5樓:雲戰天涯

指標題:p指標是指向第一個節點的,也就是e,s指標指向g,題目要求把g插入到f後面,下面的四個方法中選出不能把g插入到f後面的一個。

對於a選項:p=p->next:表示p指標指向f

:s->next=p:表示s的next指向f,而這裡s->next應該為\0,所以錯誤

6樓:匿名使用者

a答案中 p=p->next;p就指向f那個data 把e 的data拋棄了。

s->next = p;即 s的下一節點是p,p->next = s; p下一節點又指向s ,變成p s2個節點互相指。

所以是錯的。

一個c語言題目 做法看不懂 求大神解釋一下

7樓:匿名使用者

這裡使用一個6x6陣列來裝1個5x5的矩陣,每一行的第一個資料即a[i][0]用來裝這一行所有資料的和,每一列的第一個資料即a[0][i]用來裝這一列資料的和。

把每行和每列的第一個資料初始化化為0是為了利用疊加法求每行(列)元素的和。

例 for (j=1;j<=5;j++)

a[i][0]+=a[i][j];

這是把a[i][0]=a[i][1]+a[i][2]+a[i][3]+a[i][4]+a[i][5]

c語言的一道程式題!!!看不懂為什麼!!求解釋詳細,謝謝!! 5

8樓:召走刀文

這個主要涉及到變數作用域的問題,兩個原則

區域性變數與全域性變數重名時,遮蔽全域性變數

{}裡宣告的區域性變數的作用域就是{}的範圍。本質上跟函式的{}是一個道理

**中,會遮蔽掉外面的全域性變數a,此時函式f的引數是5,所以計算後s 為5。

之後的s+=f(&a);中,a是全域性變數a(因為int a=5的作用範圍是那個{}),所以s為7

在printf中的a是全域性變數的a,因為經過上面f函式的計算,所以a為3

9樓:周潔倫之謎

注意3點:全域性變數和區域性變數(區域性變數優先順序高),傳地址和傳引數,++操作

int f(int *a) //傳地址,會改變傳入的引數比如 int c = 2; int d = f(&c); 結果d=2,c=3

所以:int s=0;

s+=f(&a); s=7,a=3;這裡是全域性aprintf("%d %d\n",a,s);

10樓:w休息的風

首先你定義了一個全域性變數int a=2;

然後函式f(int *a)目的是把你傳遞過來的實引數加1.注意:return (*a)++;這句是先執行返回,先把指標a指向的值返回,然後再把該指向的物件進行加1操作。

主函式裡面是這樣執行的,

定義了一個s,後面有個括號,裡面又定義了個區域性變數a,初始化為5;然後你呼叫函式f,執行完以後,s的值變成5,而臨時變數a的值變成了6,繼續執行,臨時變數的a被釋放了。後面又呼叫了函式f,但是這個變數a是你定義的全域性變數,值為2,呼叫完以後,s的值就變成了7,而a的值加1變成了3.所以最後輸出值為:

3 7.

明白了嗎?

注意兩點:1是函式f返回值那,是先返回後,再把指向的物件加1,2、就是主函式裡面的區域性變數a,和全域性變數a的區別和使用。

11樓:匿名使用者

#include

#include

int a = 2;

int f(int *a)

void main()

中起作用

內起作用。建議寫程式不要寫成與全域性變數同名。

s+=f(&a); //在這個{}內,s = s + f(&a)= 0 + 5 = 5

//然後(*a)內值再加1,此時在這個{}內a 變成了 6}s=s+f(&a);   //此時s = 5,整個檔案內全域性變數int a = 2 ,在上一個{}內區域性變數不起作用了。

//s = s + f(&a) = 5 + 2 = 7//此時(*a)內值加所以輸出結果a = 3 ,s = 7

}以下是codeblock內執行結果

a=3  s=7

12樓:匿名使用者

這部分裡面重新宣告瞭變數a,使用的就是區域性的這個變數;

出了}之後,這個a的生命期結束,再使用變數a時用的就是外面宣告的全域性變數。

return(*a)++;

++在後,返回值是自加之前的值,然後自身加1,所以第一次返回5,然後區域性變數a變成6,第二句函式f返回2,加上5就是7,全域性變數a變成3。

13樓:吳龍

主要還是定義的變數作用域的問題。

還有一個容易忽略的問題,return (*a)++;這句話的意思是 先返回*a,然後*a++,即最後*a增一。不是直接返回(*a)++。

進入main函式,定義變數s=0;

下面這裡有個,相當於一個作用域,也就是裡定義的變數只在這裡面有效,出了,針對的就是外一個作用域。由於在定義變數a=5,是區域性變數,所以s+=f(&a),s=0+5=5,同時內的a加以1,a=6;然後出了,作用域消失,內定義的a,銷燬。

然後s+=f(&a),此時的a就是全域性變數的a=2,所以s+=f(&a),s=5+2=7,同時a+1=3;

最後輸出,a=3,s=7.

14樓:匿名使用者

這裡有2個a變數 一個是全域性

變數 一個是函式內的變數。

第一行全域性變數a=0 (下面我們用a1表示他)在main函式中

int a=5;

s+=f(&a);

這個a = 5 是區域性變數 (我們用a2表示)經過上面計算後 s=5 ;a2=6, ; 下面s+=f(&a);

printf("%d %d\n",a,s);

都是a1 ;所以s = 7 ,a1 = 3了結果就是c答案

15樓:周生

這涉及到兩個問題

1 return之後是不會再執行++操作的

2 區域性優先原則,但是區域性變數只在宣告他的區域性有效,出了這個區域性就失效了

16樓:匿名使用者

在main函式中{}中的int a的作用域僅限於這個{}內,所以出了這{}後s=5,而a仍然等於2,然後s+=f(&a); 就使得s=7,a=3了。這題主要考察的是變數的定義域,第一個a=2是全域性的,第二個是區域性的,只限於那個{}內。起始說白了就是

int a;

}這種情況,區域性定義有效,但是出了{}就是外層的定義有效了。

17樓:使者

輸出的a是全域性的a,第一個s+ 計算的s= 0 + 5;第二個s = 5 +2

18樓:匿名使用者

這是一道函式呼叫題,void main()為主函式。程式先執行主函式,所以到第一個 s+=f(&a);又因為它是呼叫的,要看到這裡 int f(int *a)

實參把a=5;賦給形參,由於是return(*a)++;所以s=5;

到第二個 s+=f(&a);

而第一個 int a=2; 是全域性變數

所以s=7;

第一個 int a=2; 經過 return(*a)++;後也變成3了

19樓:小拇指亦有愛

int a=2; 全域性變數

int f(int *a)

void main()

//區域性失去作用,

s+=f(&a); //相當於s=5+2 ,然後a+1=2+1=3

printf("%d %d\n",a,s);

}a:2 7

b:2 10

c:3 7

d:3 11

20樓:匿名使用者

我認為是3,9,求大神解答

21樓:張祿

在看看指標和引用那裡

22樓:匿名使用者

區域性變數全域性變數 呵呵 上面解釋的很清楚

23樓:pprain_水杯

第二個s+=f(&a);使a+1

一道c語言程式設計題,看不懂,求解釋

24樓:丁丁愛璐璐

#include //標頭檔案

main()

列印出a的所有數權值

} void sort(int x,int n) }

25樓:匿名使用者

void sort(int x,int n);

int *p,i,a[10];

p=a;

for(i=0;i<10;i++)

scanf("%d",p++);

p=a;

sort(p,10);

for(p=a,i=0;i<10;i++) }定義陣列

抄 及指向

襲陣列的指標

輸入數值 並輸出sort

void sort(int x,int n)對數值進行起泡排序

c語言題目,求解,C語言題目求解

x就是16進位制的,0就是零字元,一個十六進位制的數佔一個位元組,零字元在算位元組時不佔位元組,之後結果就是佔一個位元組 我就說要點了。1 double x,y x 1 y x 3 2 y的值為什麼是2.0?3 2兩個整型相除得整型1。2 main x 1值為0那麼輸出的應該為0 為什麼答案是1?單...

C語言的一道程式題看不懂為什麼!!求解釋詳細,謝謝

int a 2 int f int a void main s f a s是外部定義的所以還存在,此時再執行f 返回外部定義的a的值,即2 所以s s 2 5 2 7,但注意a此時還有效,所以指標的值自加一後,a變成3 printf d d n a,s 因此輸出是3 7 int f int a 這個...

C語言的一道題目,求解釋,一道C語言題目求解釋!

輸出的是字串長度,應該是7 fun函式的形參看似是字元陣列char s,實際是char s,c語言裡陣列名的本質版是指標,所以函式裡 權可以宣告char p s 這是p和s其實都指向記憶體裡的同一個地址 然後while迴圈的作用是讓p指向這個字元陣列的最後一個字元 由於字串都是已尾零結尾的 即最後一...