求C語言大神幫我分析一下這一段順序表函式,尤其是前兩個for迴圈

2021-03-27 16:04:48 字數 3159 閱讀 7821

1樓:于于祥祥

這是一個在一個已經排好序的順序表裡插入一個數的程式。

第一個for迴圈是找出要插入資料的位置,即n<=(*l).data[i]的時候,那麼要插入的位置就是此時的i位,然後將這個位置儲存到m。

(*l).listlen++;要插入資料,所以連結串列長度加一。

第二個for迴圈是移位功能,將上邊找到的插入位置之後的資料整體後移一位,給需要插入的資料留出一個位置,具體是從後往前移動,移完之後,將需要插入的資料放入空出來的地方,即(*l).data[m]=n;所以此句應該放到第二個for迴圈的外邊,放到裡邊的話,執行一次第二個for迴圈就會把n插入到(*l).data[m],而此位置的資料還沒有移動到下一位,則此資料就會丟失。

所以正確的做法是:

for(j=(*l).listlen;j>=m;j--)(*l).data[m]=n;

希望能幫到你。

2樓:欲往遙遠星辰

這個順序表是從小到大的整數表。第一個for 迴圈找出比n大的(*l).data[i],並且把位置i記錄在m中;第二個for迴圈,把(*l).

listlen增加1後,把m到(*l).listlen-2的data, 複製給m+1到(*l).listlen-1。

(所以我感覺for(j=(*l).listlen;j>=m;j--)這裡有錯誤,好像應該是for(j=(*l).listlen-2;j>=m;j--))。

這樣就多了一個(*l).data[m]位置,正好把n插到這個。

c語言求s=1!+2!+3!+…+n!(n由輸入決定)。求大神能詳細解讀一下這個程式,尤其是for語句裡面是什麼意思

3樓:我是果瘋

第一二行**:int i,j,n;

long int t=1,sum=0;//定義了三個整數型(短整型)的變數,定義兩個長整整型變數並初始化。

第三行**:printf("input n:",&n);//提示輸入。

第四行**:scanf("%d",&n);利用scanf()函式輸入n。

第五行**:for (i=1;i<=n;i++)//進入for迴圈,外部for迴圈的主要作用是進行階乘的求和。

第六七八行**:t=1;

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

t=t*j;//引用t這個變數進行對i這個階乘的計算,並將結果儲存在t中。內部的for迴圈的主要作用是計算階乘。

第九行**:sun=sum+t;//計算階乘的和。

第十行代**:printf("n!=%ld",sum);//利用printf()函式對結果進行輸出。

4樓:風林火陰山雷

您好!很高興為您解答。

解釋如下:

#include

void main()

printf("n!=%ld",sum);//輸出計算結果}望採納~如您還有不解,歡迎追問~

5樓:匿名使用者

for裡面是迴圈 i=1是第一次迴圈是i的值,i<=n是i的迴圈範圍,i++是i的值每次加1

6樓:nice丨

剛學c??要看懂 for裡面的最好懂得方法是你代幾個數一步一步試試 然後你應該會明白吧

求c語言大神幫我看一下,這個主程式怎麼修改可以是這個程式迴圈執行不退出

7樓:匿名使用者

third可以用一個變數進行接收,之後對變數進行判斷,巢狀if ……goto

求個c語言大神幫忙看一看這題!! 最好幫我解釋一下是什麼意思???

8樓:匿名使用者

這麼多人回答,看來你這道題確實太簡單了,

首先看題目,要求能算出3*3陣列中對角線上的數字和,也正好是對應陣列中的a00,a11,a22,

在大致看下填空,int定義變數,後面空了,那就是要定義變數,再往後看就看到sum憑空出現,那這裡一定是定義sum

後面用了for迴圈,用變數i來對應我們要加起來的a00,a11,a22,注意不是一次加起來,是迴圈一次加一次,3次迴圈完才加起來的,那麼迴圈語句就是sum=sum+a[i][i];

再回頭看看,要給sum定義初值0才能達到累加的效果,所以第一空 sum=0;

第二空 =sum+a[i][i];

注意標點符號都不能錯,表示語句結束

9樓:老子很涼

1,第一空 sum,第二空a[i][i]

2.元素之和sum沒定義呢,所以第一空如上。

求3*3矩陣的對角線元素sum=a[0][0]+a[1][1]+a[2][2],所以答案如上。

10樓:六翼幻世

第一空是sum=0,定義好sum變數,並把變數的值初始化為0

第二空是a[i][i],對角線上的元素,也就是行列相等的,所以迴圈去把二維陣列裡兩個下標相同的是變數的值加起來

11樓:自我程式設計

sum是累加變數,所以第一個空需要定義sum並初值0,填sum=0;

a是3x3的二維陣列,對角線元素分別是:a[0][0],a[1][1],a[2][2].

所以迴圈累加那裡填a[i][i];

#include

int main()

;int sum=0;//第一個填空

int i;

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

sum+=a[i][i];//第二個填空

printf("sum=%d",sum);

return 0;}

12樓:匿名使用者

sum=0

由於明顯成效中sum沒有定義因此填空需要定義此變數,並且作為累加變數沒有在程式中賦初值,因此需要在此空中完成初值為0的賦值

a[i][i]

題目中的行號和列號相同的要求,於是用i作為行號和列號訪問對角線元素

13樓:藍

sum累加對角線的數,定義賦初值為0;

int sum = 0;

for迴圈進行累加:

sum += a[i][i];

該語句等效於sum = sum + a[i][i];

14樓:匿名使用者

int sum=0

a[i][i]

C語言,求詳細解釋一下這一段是什麼意思

這段 功能是來 輸入一系列字串,自 每個都是一個顏色 直到輸入 結束 每個顏色值,存到color陣列中,color本身是指標陣列,記憶體空間由malloc分配,每個str複製到對應位置 n用來儲存總的輸入顏色個數。此段太長,你具體一點。在輸入字bai符串第一個du 字元不為 號前時,zhi將字串儲存...

幫忙翻譯一下這一段吧,幫忙翻譯一下這一段英文

用 有道 翻譯就可以了 www.youdao.com 幫忙翻譯一下這一段英文 supporting text here.copy paste fonts.choose the only optionto retain text.adjust the spacing to adapt to chine...

幫我翻譯一段日文,幫我翻譯一下這一段文字 日語

不難!一個日語二級水平的就可以譯出了 的等等等等等等等等等等 幫我翻譯一段日語 商品已送貨 本舗 非常感謝在多家蝦店中選擇本店。感謝惠版顧,您預訂的商權品將通過大和運輸快遞給您,商品運輸編號為 4017 8925 4370 針對使用大和運輸郵件服務的顧客。雖然在傳票發行系統上有大和運輸自動發給客戶關...