C語言中的思考題

2021-05-26 17:17:11 字數 1885 閱讀 9695

1、學完迴圈之後,如何把乙個十進位制正整數按二進位制形式輸出。作用,理解陣列的作用。注:不用陣列很難搞定,當然會用遞迴的話肯定學過陣列。

2、學完函式之後,如何把乙個浮點數的整數部分新增千分位符後輸出。

用庫函式

函式名: fcvt

功 能: 把乙個浮點數轉換為字串

用 法: char *fcvt(double value, int ndigit, int *decpt, int *sign);

引數:

value:要轉換的浮點數,輸入引數

ndigit:小數點後面的位數,輸入引數(超過的數字捨入。如果少於指定精度,用0填充)

decpt:表示小數點的位置,輸出引數

sign:表示符號,0為正數,1為負數,輸出引數

(字串中僅儲存數字,小數點位置和value的符號可以從該呼叫之後的dec和sign獲取。dec引數指向乙個整數值,這個整數值給出了小數點的位置,該位置是相對該字串的開始位置進行計數的,0或負值指出小數點在第乙個數字的左邊。引數sign指向乙個整數指出value的符號,如果value為正數,該整數為0,如果value為負數,它設定為乙個非0值。

ecvt和fcvt為轉換使用單個靜態分配的緩衝區,每次呼叫都消毀以前呼叫的結果。)

程式例:

#include

#include

#include

int main(void)

輸出為:

string = 9876000000 dec = 1    sign = 0

string = 123450000000000 dec = 3 sign = 1

string = 67890 dec = 5 sign = 0

問題一:

結果有差異

問題二:

記憶體用庫函式

函式名: gcvt

功 能: 把浮點數轉換成字串

用 法: char *gcvt(double value, int ndigit, char *buf);

引數 value——被轉換的值。

digits——儲存的有效數字位數。

buffe——結果的儲存位置。

說明 gcvt函式把乙個浮點值轉換成乙個字串(包括乙個小數點和可能的

符號位元組)並儲存該字串在buffer中。該buffer應足夠大以便容納轉換

的值加上結尾的空格字元,它是自動新增的。如果乙個緩衝區的尺寸為

digits的尺寸+1,該函式覆蓋該緩衝區的末尾。這是因為轉換的字串包

括乙個小數點以及可能包含符號和指數資訊。不提供上溢位。gcvt試圖

以十進位制格式產生digits數字,如果不可能,它以指數格式產生digits數字,

在轉換時可能截除尾部的0。

#include

#include

int main(void)

程式輸出為:

string = 9.876

string = -123.46

string = 67800

可以!使用sprintf函式

函式功能:把格式化的資料寫入某個字串

標頭檔案:

stdio.h

函式原型:int sprintf( char *buffer, const char *format [, argument] … );

返回值:字串長度(strlen)

修改後的**如下:

#include  

#include  

#include  

#define   float_precision   7

void   main()

float   aa=254.3已經轉化為char   cc[100]= "254.3 "

討論 思考題

1 功能 編寫函式 float fun 利用以簡單迭代方法 xn 1 cos xn 求方程 cos x x 0 的乙個實根。迭代步驟如下 1 取x1 初值為0.0 2 x0 x1 把x1 的值賦給x0 3 x1 cos x0 求出乙個新的x1 4 若x0 x1 的絕對值小於 0.000001 執行步...

討論 思考題

1 功能 請編寫函式 void fun char s n char b 將 m行n列的二維陣列中的字元資料按列的順序依次放到乙個字串中。例如 二維陣列中的資料為 w w w w s s s s h h h h 則字串中的內容應是 wshwshwshwsh 2 功能 編寫函式 void fun cha...

趣味思考題

1.一間囚房裡關押著兩個犯人。每天監獄都會為這間囚房提供一罐湯,讓這兩個犯人自己來分。起初,這兩個人經常會發生爭執,因為他們總是有人認為對方的湯比自己的多。後來他們找到了乙個兩全其美的辦法 乙個人分湯,讓另乙個人先選。於是爭端就這麼解決了。可是,現在這間囚房裡又加進來乙個新犯人,現在是三個人來分湯。...