C语言/C++基础知识
1.scanf()函數的返回值
?
關于scanf返回值:scanf返回接收到的變量值的個數,?scanf的返回值由參數決定。例如:
scanf("%d%d",?&a,&b);
如果a和b都被成功讀入,那么scanf的返回值就是2
如果只有a被成功讀入,返回值為1
如果a和b都未被成功讀入,返回值為0
如果遇到錯誤或遇到end?of?file,返回值為EOF。且返回值為int型。
?
2.printf()函數的返回值
?
原理同scanf()函數的返回值,不同的是printf()函數返回一個int值,表示被打印的字符數。
例如分析下面這個程序結果:
#include <iostream> #include <string.h> #include <stdio.h>using namespace std;int main() {int i = 43;printf("%d\n",printf("%d\n",printf("%d\n",i)));return 0; }
結果為:
i=43,先輸出43;43為兩個字符再加上'\n',一共三個字符,所以輸出3;2和'\n'兩個字符,所以輸出2。
3.C++中的小數點表示
C++中小數點表示需要頭文件#include?<iomanip>
Cout<<fixed<<setprecision(2)<<x<<endl;
4.delay函數與Sleep函數
Sleep()函數:
第一個字母S必須大寫,VC里用Sleep()這個函數替代了C語言中的delay()(頭文件是dos.h)這個函數。
Sleep()函數頭文件是#include <windows.h>,和delay()用法一樣,Sleep()里的參數是以毫秒為單位的。
5.memset()函數
函數原型:void *memset(void *s,int ch,size_t n);
作用就是把數組s中的元素以字節為單位進行填充,填充的數字為ch,返回的是指向s的指針。
比如:當我們定義char s[N];時,我們memset(s,1,sizeof(s)); 那么我們輸出每一個s[i]答案會是1,但是如果我們定義int s[N];時,答案卻是16843009,原因很簡單,memset()函數是以字節為單位進行填充的,也就是說在int數組s中,因為int占4字節,那么就是00000001000000010000000100000001。
6.qsort()函數
當然qsort()函數是對指定的任何數組進行排序。頭文件是stdlib.h
函數原型是:void qsort(void *s,size_t n,sizeof(s[0]),cmp);
第一個參數是參與排序的數組名,第二個參數是參與排序的元素個數,第三個參數是單個元素的大小,第四個參數就是比較函數。對于cmp函數,是這樣定義的:
int cmp(void const *a,void const *b) {return *(Node *)a - *(Node *)b; }
7.strchr()和strstr()函數
char *strchr(char *str,char c)
函數功能:從字符串str中尋找字符character第一次出現的位置。
返回說明:返回指向第一次出現字符character位置的指針,如果沒找到則返回NULL。
char *strstr(char *str1, char *str2);
功能:找出str2字符串在str1字符串中第一次出現的位置(不包括str2的串結束符)。
返回值:返回該位置的指針,如找不到,返回空指針。
8.itoa函數和atoi函數
itoa函數:
原 型:char *itoa(int value, char *string,int radix); ? ? ? ? ? ? ? ? ? ? ?
功 能:把一整數轉換為字符串。
itoa函數有3個參數:第一個參數是要轉換的數字,第二個參數是目標字符串,第三個參數是轉移數字時所用的基數
返回值:指向num這個字符串的指針。
atoi函數:
原型: int atoi(const char *nptr);
功 能: 把字符串轉換成整型數.
頭文件: #include <stdlib.h>
名字來源:array to integer 的縮寫.
函數說明: 參數nptr字符串,如果第一個非空格字符不存在或者不是數字也不是正負號則返回零,否則開始做類型轉換,之后檢測到非數字(包括結束符 \0) 字符時停止轉換,返回整型數。
9.sprintf函數的用法
在將各種類型的數據構造成字符串時,sprintf 的強大功能很少會讓你失望。由于sprintf 跟printf 在用法上幾乎一樣,只是打印的目的地不同而已,前者打印到字符串中,后者則直接在命令行上輸出。這也導致sprintf 比printf有用得多。
char* who = "I";
char* whom = "CSDN";
sprintf(s, "%s love %s.", who, whom); //產生:"I love CSDN. "
在printf中指定格式輸出很重要:%04d代表輸出4位,不足的加前導零。
?
10.atan2()函數
本函數返回的是一個范圍為-PI~PI的角度,比如直線的兩個端點坐標分別是A(x1,y1)和B(x2,y2)
那么,atan2(y2-y1,x2-x1)就表示直線AB與x軸正方向所成的角度大小,如果x2-x1=0,那么角度為90度。
總結
以上是生活随笔為你收集整理的C语言/C++基础知识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 经典C++面试题
- 下一篇: 单源最短路径(Dijkstra算法)