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

2021-03-03 23:24:55 字數 6155 閱讀 5582

1樓:丁丁愛璐璐

#include //標頭檔案

main()

列印出a的所有數權值

} void sort(int x,int n) }

2樓:匿名使用者

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語言一道求程式執行結果題,一直看不懂,求大蝦詳細解釋下!謝謝了! 5

3樓:匿名使用者

把y轉化為d進製,

dowhile(x);

4樓:匿名使用者

converse(m,n) 將十進位制數 m 轉為 n進製數 並輸出

思路是m =x1 * n^0 + x2 * n^1 +x3 * n^2 +````````+xk * n^k

輸出的 xk xk-1 xk-2`````x2 x1 這一串 便是 十進位制數 m 轉為 n進製數得到的結果了

5樓:匿名使用者

converse(int y, int d)實現將變數y中的資料,按 d 中進製,進行字元化輸出。

如題:converse(20,2), 就是將十進位制數 20 的以二進位制形式進行輸入。

一道c語言題 知道解答過程 看不懂 求解釋 我 初學 麻煩解釋清楚點 謝謝

6樓:匿名使用者

你好!先說明一下,s是不能指向字串的,只能指向字串的首字元。

說一下s++ 和 ++s的區別:s++ 是使用了s再遞增,++s是遞增後使用。

在這裡,先判斷*p是否是空格,判斷結束後*p遞增(即指向下乙個字元),這時的*p已經是指向前面的*p後面的位置了,可以看似一輛開動的車,然後再判斷是否是空格。謝謝!

7樓:匿名使用者

s++是先賦值再自加 如:

int s=1;

s=s++;

執行後:

s=1;

但下一次接受s就不是等於1了 等於2了 賦值之後自加了所以 s++和s不相等

8樓:匿名使用者

假設s指向字串" word"

語句if(*s++==' '&& *s!=' ')第乙個s指向" word",此時*s=' '(空格)然後s++,s指向"word",此時*s='w'

9樓:隨楓輕逝

lz的這句if(*s++==' '&& *s!=' ')的意思是:先看*s的值是不是=空格,如果=就再把s++使其指向下一位,再看*s的值是不是=空格,如果不=空格就說明條件成立了

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

10樓:召走刀文

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

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

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

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

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

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

11樓:周潔倫之謎

注意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);

12樓: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的區別和使用。

13樓:匿名使用者

#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

14樓:匿名使用者

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

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

return(*a)++;

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

15樓:吳龍

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

還有乙個容易忽略的問題,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.

16樓:匿名使用者

這裡有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答案

17樓:周生

這涉及到兩個問題

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

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

18樓:匿名使用者

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

int a;

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

19樓:使者

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

20樓:匿名使用者

這是一道函式呼叫題,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了

21樓:小拇指亦有愛

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

22樓:匿名使用者

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

23樓:張祿

在看看指標和引用那裡

24樓:匿名使用者

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

25樓:pprain_水杯

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

c語言程式設計 有程式 看不懂 求解釋

26樓:vancouver華

步驟分解:

設 1 為亮,0 為滅。

將燈全部關閉。

將凡是2和2的倍數的燈開啟。

將凡是自身的倍數(包括自身)的燈作相反處理。

重複 3 直至結束。

遍歷所有亮的燈泡輸出。

我對**進行了一點可讀化處理。

#include

#include

int main()

; // 這裡相當於步驟 1,同時也相當於第乙個將燈泡關閉的人。

int i,j,n,w; // w 是廢的變數,無意義。

w=0;

scanf("%d",&n);

for(j=2;j<=n;j++) // 迴圈的第一次是步驟 2,之後的迴圈都屬於步驟 3。

else a[i]=a[i]; // 這一句跟樓上說的一樣,寫了些什麼鬼。}}

for(i=1;i<=n;i++) // 這裡是最後的遍歷輸出,遍歷所有等於值 1 的燈泡輸出即可。

return 0;

}最後,原**非常非常非常難以閱讀,記住**是寫出來給人看的,不要隨意忽略花括號,如果 if-else 語句為了帥氣要忽略花括號的話,請務必只寫一行,並且一定要放在同一行。

27樓:聽不清啊

#include

#include

int main()

; //這裡賦值要注意,,表示第一人已把所有燈都關了int i,j,n,w;

w=0;

scanf("%d",&n);

for(j=2;j<=n;j++) //如樓上所說從2開始就好,第j個人操作開關

}for(i=1;i<=n;i++) //操作完畢,檢查所有的燈,a[i]==1的是開啟的

return 0;}

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

28樓:雲戰天涯

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

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

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

一道C語言程式題求解,一道C語言程式設計題求解

float y w 就是每一項的值,即 1 2 1 4 1 8,要加項小於10的 6,也就是要 float y w的絕對值大於10的 6才迴圈,在不用abs函式的求絕對值的時候,假定要x的絕對值 x可能為正數或負數 大於10的 6,那麼自然就是x z1 同為正數 或者x z1 同為負數 其實這題 太...

求解一道C語言程式設計題目,求一道C語言程式設計題

說一下思想 先定義乙個int min 1000000 或者其他大於4的數,因為陣列 專最大就4,按行屬列遍歷陣列所有元素,min min a i j a i j min 輸出的min即為所求 include define n 2 int getmin int a n int m,int n int ...

一道C語言程式設計題求解一道簡單的C語言程式設計題

樓主,抄樓上不太會說話,不要理,bai等等我貼出 沒有其他語言基礎du的c語言初學者起zhi步是慢了一dao點,但是要渣油 include int main return 0 dim arr斐波 那契數bai 列du 19 as integer arr斐波那 zhi契數dao列回 答 0 1 arr...