C語言程式分析,給我解釋一下下面這段程式,具體是怎麼完成的呢

2021-03-22 04:38:42 字數 5411 閱讀 4542

1樓:匿名使用者

這些都是事先定義的巨集和常量值,你要追根究底下去,最終會在某個.h檔案發現他的原始定義。

看字面應該能明白大致意思吧,真不行查幫助文件,裡面應該有說明的。

c語言程式分析,給我解釋一下下面這段程式,具體是怎麼完成的呢

2樓:匿名使用者

#define active_high !!

這樣程式中的巨集替換最終是:if ( !!(p0_1) ),相當於if ( p0_1!=0 )

請給我詳細解釋一下這段程式 謝謝了!!!c語言的!

3樓:匿名使用者

首先看到樓主這個程式的話,就明顯的是冒泡法來排序陣列。

但你的程式中有幾個錯誤。這裡我也不知道是你的錯誤還是我的錯誤,但可以肯定的是,如果你是用冒泡法來實現排序陣列,那麼你的程式定然存在錯誤。

首先你的int n,是陣列的元素個數,還是bb[n]裡面的那個n,一般這樣的話n都必須是陣列元素的個數,既如果是陣列b[10],那麼n必須取9。

而且你的第二個迴圈中的判斷條件必須是j<9-i;這才是冒泡法的原理正確的寫法應該是

void fun(int bb, int n)如果樓主真的是用冒泡法,而自己又不理解冒泡法,那麼在這上面的解釋估計你也懂不了。所以建議樓主去看譚浩強「c語言程式設計」第六章的「陣列」會有詳細的講解冒泡法,比起我們在這裡講解要好的多。

祝你好運

4樓:匿名使用者

看起來,這個是一段氣泡排序的程式,按照從大到小的順序排列

下面這段c語言程式的執行結果是多少呢?能不能給我詳細解釋一下??感激不盡!!

5樓:匿名使用者

int 4位元組

兩個char 2位元組

以16進製表示一個 int 每個xx表示一位元組 就是xx xx xx xx

低址 高址

那麼兩個char就是前兩個xx

程式裡就是

0a 01 00 00

作為int的值就是 0x0000010a

換算成10進位制吧

6樓:匿名使用者

char型別是一個位元組,int型別是4個位元組(32位機),一開始宣告的聯合體x的大小是一個int,也就是四個位元組,你的程式將x的頭兩個位元組初始化為00000001 00001010,而未被初始化的高兩位元組仍不變,因此這個長度為4位元組的記憶體內容為:

1100 1100 1100 1100 0000 0001 0000 1010

也就是cccc010a,int型最高位為符號位因此是負數,十進位制為:

-859045622

給點分吧!!

c語言高手幫我解釋一下我的程式,希望能詳細的分段分析它 20

7樓:匿名使用者

#include

#include

#include

typedef struct information

information;

void addinformation(void)

fprintf(fp, "%d %s %s %s %f %d %d\n", info.numb, info.starttime, info.

begin, info.end, info.lasttime, info.

canload, info.alreadyload);

fclose(fp);

} int gethour(char *s)

*q = '\0';

return atoi(p);

} int getminute(char *s)

p++;

return atoi(p);

} void showinformation(void)

time(&t);

timeinfo = localtime(&t);

while(!feof(fp))

else printf("\n");

} fclose(fp);

} void searchbynum(void)

while(!feof(fp)) }

fclose(fp);

} void searchbyend(void)

while(!feof(fp)) }

fclose(fp);

} void searchway(void) }

void buy(void)

time(&t);

timeinfo = localtime(&t);

while(1)

else if(gethour(info.starttime) == timeinfo->tm_hour) }

else }

else printf("sorry, the tickets are all sold out!");

break;

} }fclose(fp);

} void cancel(void)

time(&t);

timeinfo = localtime(&t);

while(1)

else if(gethour(info.starttime) == timeinfo->tm_hour) }

else

break;

} }fclose(fp);

} void forticket(void) }

int main() }

}就是這個程式

請問下面這段程式,誰能幫我解讀一下!我需要有一定c語言基礎的人作答,解讀完程式還要能得出正確結果!

8樓:匿名使用者

很好解釋:

a[0]表示第一行的首地址,也是第一行第一個元素的首地址。a[0]+1指向了a[0][1]。所以列印了1234

a表示陣列的首地址,這是一個行級別的指標。a+1 指向了第二行。所以從第二行的首開始列印

234(typeof(&a))p &a這個地址,相當於一個指向一個3行2列元素的陣列。所以p其實這樣後等價

p[2][3][2]="012345678"

儲存結構如下:

0123

4567

8空空空

所以 p+1就是p[1][3][2]開始列印:678完畢!

9樓:匿名使用者

char a[3][2] = ;

strcpy((char *)a, "01234"); //將」01234」儲存到二維陣列a中

char *p = (char*)malloc(10); //分配10位元組空間

strcpy(p, "012345678"); //將 "012345678"儲存到p所指空間

printf("%s\n", (char *)(a[0] + 1)); //a[0]為二維陣列a第0行的首地址,+1為第0行的第1個元素地址

printf("%s\n", (char *)(a + 1)); //a為二維陣列的首地址,+1為第1行的首地址

以陣列a的長度為一個指標單位(6位元組),+1則是第6個字元地址。

free(p);//釋放指標

(本人根據c陣列下標方式數數,從第0行第0個字元開始)

結果1234

234678

10樓:匿名使用者

typeof是神馬語言的?c語言有這個東東?

c語言問題:以下是一個遞迴函式的例子,請幫我分析一下,這段程式是怎麼執行的?值的變化是怎麼樣的?

11樓:

從主函式開始執行,遇到呼叫函式時,直接跳到下面的函式定義中執行,然後把返回值帶到主函式,繼續執行主函式下面的部分。

#include

void main()

int diecheng(int num) \\定義函式

12樓:派派咔咔

進入主函式首先宣告diecheng函式然後列印diecheng(5),進入diecheng函式,num=5,所以result5=5*diecheng(4),進入diecheng(4)result4=4*diecheng(3)進入diecheng(3) result2=3*diecheng(2) 進入diecheng(2) result2=2*diecheng(1),進入diecheng(1) result1=1*diecheng(0),diecheng(0)=1,result1=1;result2=2;result3=6;result4=24;result5=120,所以結果是120

給我解釋一下這個c語言程式段為什麼執行時候要輸入兩次呢

13樓:匿名使用者

scanf("%lf",&x);

不要在scanf中隨意使用\n,他表示忽略一切空白符直至下一個非空白符出現

14樓:常玉標

/*scanf("%lf\n",&x);//把換行符去掉就行了,這是緩衝區的問題。

scanf () 函式的問題

簡單解釋一下,scanf() 函式中 \n 相當於一個空格,例如 %d\n 首先scanf 跳過空格讀取一個整數,然後跳到下一個非空白字元處,像這樣寫很容易是一些互動式程式掛起,直到使用者輸入一個非空白字元為止。

建議 scanf("%lf",&x);

15樓:斯霞公良雨星

通過在**中新增讀入資料的函式,來達到輸入資料的目的。

常用的讀入資料的函式有,scanf,

getchar,

gets等。

scanf是格式化輸入,可以用來輸入各種型別。

getchar功能為讀入一個單個字元。

gets功能為讀入一行輸入存為字串,並把換行符替換為字串結束符。

這幾個函式都在stdio.h中,所以使用的時候,需要在檔案頭新增如下語句:

#include

以scanf為例,做以下程式:

#include

int main()

幫我解釋一下這個c語言程式的兩個if語句是怎麼具體執行的,程式的除錯功能不會用。

16樓:匿名使用者

if(xif(y>0)   z=0;

else  z*=2;

即if(x0)

z=0;

else

z*=2;

}那麼顯然此處z值未變化

17樓:匿名使用者

#include

int main()

printf("%d\n",z);

return 0;}

誰能幫我解釋一下下面的C程式?謝謝了

前面的typedef和後面的far lpt message配合起來為結構體tagpt message起了個 遠指標別名lpt message 以後就可以用形如lpt message p 這樣的寫法來宣告指向結構體tagpt message的遠指標了,等價於struct tagpt message f...

幫我解釋一下下面的生辰,謝謝幫我解釋一下下面的生辰八字,謝謝!

性別 女 出生 公元1988年9月22日10時30分 陽曆 農曆 一九八八年八月十二日巳時 當月節氣 白露 9月7日18 27 中氣 秋分 9月23日3 42 生辰八字 戊辰年 辛酉月 庚辰日 辛巳時 一 你的八字命盤 下列是你的八字命盤。你是白龍,出生於黃龍年。日天干代表你,所以你是屬金。年 祖先...

幫忙解釋一下下面程式的意思,求高手幫我解釋一下下邊這兩句程式什麼意思急

getchar意思就是讀bai入一個字元,相du當於zhic 的cin,對於switch和case,下面舉個例子 daoswitch 表示式 putchar a 0 輸出 a putchar a 5 輸出 3 是c語言bai。是各 種命令 方法 邏du輯等zhi,比如case是switch語句中的,...