這兩天發現一個問題,我最近發的幾篇博文稀裏糊塗地被轉到別的網站去了,目前發現有兩個網站轉載了,一個註明了做者出處(博客園 lltong),但沒給任何連接。另外一個網站呢,就是直接抓的,並且還抓的亂七八糟的,呵呵,不知這樣的內容給網友怎麼去看。純屬本身寫的一點筆記,別人轉載我也不反對,只是但願能尊重下做者,起碼要註明下出處,另外也多用點心複製粘貼,別誤導了其餘網友。從今起我也加上個人博客地址連接,讓他們一塊兒抓去。估計這篇文章的這個開頭也抓走了。呵呵安全
不知是否是我操做不當,每次編輯文章時,原tag標籤總記錄不上。若是不是個例的話,但願博客園大大們能早晚修復下這個小bug哦。函數
//字符串反轉網站
1 #include <stdio.h> 2 #include <string.h> 3 void reverse(char s[]); 4 5 main(){ 6 char s[] = "abcd"; 7 reverse(s); 8 printf("%s\n", s); //dcba 9 return 0; 10 } 11 12 void reverse(char s[]){ 13 int i,l; 14 char t; 15 for(i=0,l=strlen(s)-1; i<l; i++,l--){ 16 t = s[i] ; 17 s[i] = s[l]; 18 s[l] = t; 19 } 20 }
//遞歸實現字符串反轉spa
1 #include <stdio.h> 2 #include <string.h> 3 void reverse(char s[],int n); 4 5 main(){ 6 char s[] = "abcd"; 7 reverse(s,strlen(s)-1); //dcba 8 return 0; 9 } 10 11 void reverse(char s[],int n){ 12 if(n >= 0){ 13 putchar(s[n]); 14 reverse(s, n-1); 15 } 16 }
//遞歸累加code
1 #include <stdio.h> 2 long sum(int n); 3 4 main(){ 5 printf("%d\n",sum(10)); 6 return 0; 7 } 8 9 long sum(int n){ 10 if(n > 0){ 11 return n + sum(n-1); 12 } 13 }
//快速排序(基本上是對着書本敲的,目前理解還有點困難,還好跟着敲時沒出什麼錯)blog
1 #include <stdio.h> 3 void qsort(int v[],int left,int right); 4 void swap(int v[], int i, int j); 5 6 main(){ 7 int arr[9] = {1,2,8,5,9,2,10,0,100}; 8 qsort(arr,0,9); 9 int i; 10 for(i=0; i<9; i++){ 11 printf("%d,", arr[i]); //0,1,2,2,5,8,9,10,100 12 } 13 14 return 0; 15 } 16 17 void qsort(int v[],int left,int right){ 18 int i,last; 19 void swap(int v[], int i, int j); 20 21 if(left >= right){ 22 return; 23 } 24 swap(v, left, (left + right) / 2); 25 last = left; 26 for(i=left+1; i<=right; i++){ 27 if(v[i] < v[left]){ 28 swap(v, ++last, i); 29 } 30 } 31 swap(v, left, last); 32 qsort(v, left, last-1); 33 qsort(v, last+1, right); 34 } 35 36 void swap(int v[], int i, int j){ 37 int temp; 38 temp = v[i]; 39 v[i] = v[j]; 40 v[j] = temp; 41 }
標準庫中,提供了qsort函數排序
預處理器:#include指令(編譯時把指定文件的內容包含到當前文件中)、#define指令遞歸
#include "文件名"作用域
#include <文件名>字符串
宏定義
#define 名字 替換文本
替換文本能夠是任意字符串,如替換文本有多行,每行末尾加上\。
宏定義的做用域:定義點到被編譯的源文件的末尾處。
1 #include <stdio.h> 2 #define MAXLENGTH 100 3 #define MORELINE "abc \ 4 def" 5 #define forever for(;;) 6 #define max(a,b) a > b ? a :b 7 #define min(a,b) ((a) < (b) ? (a) : (b)) 8 9 main(){ 10 printf("%d\n", MAXLENGTH); //100 11 printf("MAXLENGTH\n"); //MAXLENGTH 12 printf("%s\n",MORELINE); //abc def 13 //forever; //無限循環 14 printf("%d\n", max(10,9)); //10 看起來像函數調用,實質上是直接將替換文本插入到代碼 15 printf("%d\n", min(10,9)); //9 16 return 0; 17 }
//宏定義實則替換,與函數調用不一樣,以下:
1 #include <stdio.h> 2 #define max(a,b) (a) > (b) ? (a) : (b) //(++i) > (j) ? (++i) : (j); 3 4 main(){ 5 int i = 1; 6 int j = 1; 7 printf("%d\n",max(++i,j)); //3 8 }
剛纔編譯器出了點小問題:cannot open output file E:\C\hello.cpp
臨時解決辦法:從新新建一文件,把原文件內容拷貝進去就行了。(呵呵,.cpp,下回要更正)
附:
一、有一富翁,爲了確保本身的人身安全,僱了雙胞胎兄弟兩個做保鏢。兄弟兩個確實盡職盡責,爲了保證主人的安全,他們作出以下行事準則:a.每週1、2、三,哥哥說謊;b.每逢4、5、六,弟弟說謊;c.其餘時間兩人都說真話。一天,富翁的一個朋友急着找富翁,他知道要想找到富翁只能問兄弟倆,而且他也知道兄弟倆個的作事準則,但不知道誰是哥哥,誰是弟弟。另外,若是要知道答案,就必須知道今天是星期幾。因而他便問其中的一我的:昨天是誰說謊的日子?結果兩人都說:是我說謊的日子。你能猜出今天是星幾嗎?
二、爸爸爲了考考兒子的智力,給兒子出了道題。爸爸說:「我手裏有1元、2元、5元的人民幣共60張,總值是200元,而且1元面值的人民幣比2元的人民幣多4張。兒子,給爸爸算算這三種面值的人民幣各有多少張?」兒子眨了眨眼睛,摸摸腦殼,也不知道怎麼算。你能算出來嗎?
原文做者:lltong