C 語言是一種通用的高級語言,最初是由丹尼斯·裏奇在貝爾實驗室為開發 UNIX 操作係統而設計的。C 語言最開始是於 1972 年在 DEC PDP-11 計算機上被首次實現。UNIX 操作係統,C編譯器,和幾乎所有的 UNIX 應用程序都是用 C 語言編寫的。由於各種原因,C 語言現在已經成為一種廣泛使用的專業語言。C語言的主要特征是:
- 易於學習。
- 結構化語言。
- 它產生高效率的程序。
- 它可以處理底層的活動。
- 它可以在多種計算機平台上編譯。
那麽C語言的函數的特征是什麽呢?有哪些常用的函數呢?今天我們就來盤點一下,希望對大家學習和練習C語言有所幫助。
C語言函數定義
C 語言中的函數定義的一般形式如下:
return_type function_name( parameter list )
{
body of the function
}
在 C 語言中,函數由一個函數頭和一個函數主體組成。下麵列出一個函數的所有組成部分:
返回類型:一個函數可以返回一個值。return_type 是函數返回的值的數據類型。有些函數執行所需的操作而不返回值,在這種情況下,return_type 是關鍵字 void。
函數名稱:這是函數的實際名稱。函數名和參數列表一起構成了函數簽名。
參數:參數就像是占位符。當函數被調用時,您向參數傳遞一個值,這個值被稱為實際參數。參數列表包括函數參數的類型、順序、數量。參數是可選的,也就是說,函數可能不包含參數。
函數主體:函數主體包含一組定義函數執行任務的語句。
C語言常用函數
1.I/O函數
(1)scanf函數:
int scanf(const char *format…..);
從標準輸入流stdin中按格式format將數據寫到參數表中;若操作成功,返回寫到參數表中的參數個數,否則返回EOF;
2)在while中加上%*c
While(scanf(“%d%*c”,&n)==1&&n!=0)即可
2.數學函數
(1)求絕對值
double fabs(double );
float fabsf(float);
long double fabsl(long double);
int abs(int);
long int labs(long int);
(2)floor函數:返回不大於參數的整數
float floor(float);
double floor(double);
(3)ceil函數:返回不小於參數的整數
float ceil(float);
double floor(double);
(4)pow:返回X^Y;
double pow(double x,double y);
(5)sqrt:返回x的開方
double sqrt(double x);
(6)log2,log10:返回底數的自然對數值
double log2(double x);
double log10(double x);
3.字符串處理函數
(1)char *strchr(const char *str,int ch);
返回str中第一次出現字符ch的位置指針,否則返回NULL;
(2)char *strstr(const char *str1,const char *str2);
返回str1中第一次出現str2的位置指針,否則返回NULL;
(3)int stricmp(const char *str1,const char *str2);
忽略字符的大小寫進行比較
(4)int strncmp(const char *str1,const char *str2,int count);
將str1前n個字符與str2的前n個字符進行比較
(5)char *strncpy(char *str1,const char *str2,int count);
將str2的前n個字符複製到str1中
(6)char *strrev(char *str);
將字符串str逆序,並返回逆置後的結果
4.常用使用函數
(1)double atof(const char *str);
將字符串str表示的數轉換成浮點數
(2)int atoi(const char *str);
將字符串str表示的數轉換成整數
(3)void qsort(void *buf,int count,int size,cmp);————>count為所需要進行排序的元素個數,size為每個元素所占用的空間
4. 輸入輸出函數(<stdio.h>)
(1)文件打開和關閉:
FILE *fopen(const char *filename, const char *mode);
int fclose(FILE * stream);
(2)字符輸入輸出:
int fgetc(FILE *fp);
int fputc(int c, FILE *fp);
getc和putc與這兩個函數類似,但通過宏定義實現。通常有下麵定義:
#define getchar() getc(stdin)
#define putchar(c) putc(c, stdout)
int ungetc(int c, FILE* stream);//把字符 c 退回流 stream
(3)格式化輸入輸出:
int scanf(const char *format, ...);
int printf(const char *format, ...);
int fscanf(FILE *stream, const char *format, ...);
int fprintf(FILE *stream, const char *format, ...);
int sscanf(char *s, const char *format, ...);
int sprintf(char *s, const char *format, ...);
(4)行式輸入輸出:
char *fgets(char *buffer, int n, FILE *stream);
int fputs(const char *buffer, FILE *stream);
char *gets(char *s);
int puts(const char *s);
(5)直接輸入輸出:
size_t fread(void *pointer, size_t size, size_t num, FILE *stream);
size_t fwrite(const void *pointer, size_t size, size_t num, FILE *stream);
5. 常用函數bsearch和qsort
(1)二分法查找函數bsearch:
void *bsearch(const void *key, const void *base, size_t n, size_t size, int (*cmp)(const void *keyval, const void *datum));
函數指針參數cmp的實參應是一個與字符串比較函數strcmp類似的函數,確定排序的順序,當第一個參數keyval比第二個參數datum大、相等或小時分別返回正、零或負值。
(2)快速排序函數qsort:
void qsort(void *base, size_t n, size_t size, int (*cmp)(const void *, const void *));
Qsort對於比較函數cmp的要求與bsearch一樣。設有數組base[0],...,base[n-1],元素大小為size。用qsort可以把這個數組的元素按cmp確定的上升順序重新排列
由於專業性和英語學習,計算機專業對於留學生來說也是充滿挑戰的學科,想要進一步學好CS,可以尋求 online tutoring 等學術資源。
https://www.studygate.com/blog-cn/programming%E7%BC%96%E7%A8%8B%E4%BB%A3%E5%86%99/
https://www.studygate.com/blog-cn/%E4%BB%A3%E7%A0%81coding%E4%BB%A3%E5%86%99/