1、合併兩個有序陣列a,b,並使合併後的陣列在a中。(假設a中有足夠的空間儲存兩個陣列中的元素)
void
mergesortedarray
(int a,
int m,
int b,
int n)
else
}while
(n>0)
while
(m>0)
}
1-1 寫乙個函式 void *memmove(void *dest, const void *src, size_t n) 將乙個字串陣列移動到目的位址為起點的位址。void
*memmove
(void
*dest,
const
void
*src, size_t n)
else
return p1;
}
v = *p++; // * 和 ++ 同級,自右向左結合 等價於 v = *(p++)技巧是:把當前節點的值用next的值覆蓋,然後刪除next節點, // 先取p所指目標變數的值,賦予變數v; 再對 p 對進行增1,即指標p指向下乙個目標變數。
v = (*p)++; // 先將變數 *p 的值賦予v,再對變數 *p進行增1
相當於刪除當前節點,實際是刪除了next節點而將next的值拿來覆蓋了當前節點的值。
3、埃拉託色尼(the sieve of eratosthenes) 質數篩選法(常考點)
演算法的核心思想:先將範圍內的數都假設為質數,然後從最小的質數開始,將質數的倍數更改為非質數。
//假設求2-200之間的質數
#include
#include
#define n 200
intmain()
}}int cnt =0;
//記錄質數個數
for(
int i=
2; i
++i)
}printf
("\n 質數個數為:\n",cnt)
;return0;
}
演算法的雙層迴圈處還可以優化以提高執行效率
//假設求2-200之間的質數
#include
#include
#define n 200
intmain()
}}int cnt =0;
//記錄質數個數
for(
int i=
2; i
++i)
}printf
("\n 質數個數為:\n",cnt)
;return0;
}
4、輸入一行字串,統計其中包括多少單詞,單詞之間用空格分隔。#include
#include
main()
}else
space=0;
// 新空格 }if
(space==0)
//如果字串不以空格結束,則單詞數增 1
num=num+1;
printf
("單詞總數為: %d\n"
,num)
;//輸出結果
}
程式分析:本題容易出錯的地方主要是對字串前後空格的判斷。
5、反轉乙個單鏈表(reverse linked list)
遞迴法
struct listnode ;
//遞迴反轉整個鍊錶
struct listnode* reverse(struct listnode* head)
非遞迴法(迭代法)
typedef struct listnode listnode;
listnode reverselist(listnode head)
return pre;
}
6、編寫乙個函式,利用遞迴方法找出乙個陣列中的最大值和最小值,要求遞迴呼叫函式的格式如下:
minmaxvalue(arr,n,&max,&min),其中arr是給定的陣列,n是陣列的個數,max、min分別是最大值和最小值。
void
minmaxvalue
(int arr,
int n,
int* max,
int* min)
//這裡的man和min都是出參
else
}
7、乙個c語言程式的編譯到執行的過程
編譯:這裡的編譯不是指程式從原始檔到二進位制程式的全部過程,而是指將經過預處理之後的程式轉換成特定彙編**(assembly code)的過程。
彙編:將上一步的彙編**轉換成機器碼(machine code),這一步產生的檔案叫做目標檔案,是二進位制格式。這一步會為每乙個原始檔產生乙個目標檔案。
8、內聯函式
呼叫內聯函式時,編譯器首先檢查呼叫是否正確(型別安全檢查或者自動進行型別轉換)。內聯函式與用 #define 命令實現的帶參巨集定義有些相似,但不完全相同:如果正確,則將內聯函式的**直接替換函式呼叫,並且用實參換形參,於是省去了函式呼叫的開銷。
因此,內聯機制增加了空間開銷而節約了時間開銷。(空間換時間)
用內聯函式可以達到用 #define 巨集置換的目的,但不會出現帶參巨集定義的***: 如自增運算時,容易出現錯誤,因為巨集是直接替換引數的,比如:
#define square(a) (a)*(a)
int a = 1;
int re = square(a++);
// 可能 a = 3 re = 2
// 因為編譯器可能以不同的方式對表示式((a++)*(a++)進行求值
慎用內聯函式1)使用內聯函式可以節省執行時間,但卻增加了目標程式的長度2)函式體內出現迴圈或遞迴等複雜的結構控制語句時,s不適合定義為內聯函式
3)乙個好的編譯器將會根據函式的函式體,自動取消不值得的內聯
與朋友交往需注意的十個問題
朋友,是人際關係中甚為重要的交際物件,有的人與朋友交際有始無終 半途而廢 有的甚至反目成仇 相互暗算 攻訐。其實,說到底這都是沒有掌握與朋友成功交際的技巧。那麼,如何與朋友成功交際嘴 筆者以為,除了真誠和寬容外,還應該注意下面10個問題 1 傾聽朋友的訴說。作為朋友,你要學會傾聽。當你的朋友遇到挫折...
wcf獲取客戶端位址及一些需注意的問題
提供方法執行的上下文環境 operationcontext context operationcontext.current 獲取傳進的訊息屬性 messageproperties properties context.incomingmessageproperties 獲取訊息傳送的遠端終結點ip...
問卷設計及問卷調查中的問題與技巧
應該說社會調查與問卷技術並沒有直接關係,社會調查範圍很廣,方法也很多,10年一次的人口普查 新聞記者的個案追蹤以及我們經常使用的問卷調查,都可以稱之為社會調查。現在我們越來越多地使用問卷調查,這是一種蒐集的資料來反映總體的有效方法。但在問卷設計及調查分析中,有些問題我們卻往往忽略,首先我先簡單說一下...