锘??xml version="1.0" encoding="utf-8" standalone="yes"?> Text鍖哄煙鐢ㄦ潵鍌ㄥ瓨鎸囦護(instruction)錛屾潵鍛婅瘔紼嬪簭姣忎竴姝ョ殑鎿嶄綔銆侴lobal Data鐢ㄤ簬瀛樻斁鍏ㄥ眬鍙橀噺錛宻tack鐢ㄤ簬瀛樻斁灞閮ㄥ彉閲忥紝heap鐢ㄤ簬瀛樻斁鍔ㄦ佸彉閲?(dynamic variable. 紼嬪簭鍒╃敤malloc緋葷粺璋冪敤錛岀洿鎺ヤ粠鍐呭瓨涓負dynamic variable寮杈熺┖闂?銆?span style="margin: 0px; padding: 0px; color: #ff0000;">Text鍜?span style="margin: 0px; padding: 0px; color: #ff0000;">Global data鍦ㄨ繘紼嬩竴寮濮嬬殑鏃跺欏氨紜畾浜嗭紝騫跺湪鏁翠釜榪涚▼涓繚鎸?span style="margin: 0px; padding: 0px; color: #ff0000;">鍥哄畾澶у皬銆?/span> Stack(鏍?span style="margin: 0px; padding: 0px; color: #000000;">)浠?span style="margin: 0px; padding: 0px; color: #ff0000;">stack frame涓哄崟浣嶃傚綋紼嬪簭璋冪敤鍑芥暟鐨勬椂鍊欙紝姣斿main()鍑芥暟涓皟鐢╥nner()鍑芥暟錛宻tack浼氬悜涓嬪闀夸竴涓猻tack frame銆係tack frame涓瓨鍌ㄨ鍑芥暟鐨?span style="margin: 0px; padding: 0px; color: #ff0000;">鍙傛暟鍜?span style="margin: 0px; padding: 0px; color: #ff0000;">灞閮ㄥ彉閲?/span>錛屼互鍙婅鍑芥暟鐨?span style="margin: 0px; padding: 0px; color: #ff0000;">榪斿洖鍦板潃(return address)銆傛鏃訛紝璁$畻鏈哄皢鎺у埗鏉冧粠main()杞Щ鍒癷nner()錛宨nner()鍑芥暟澶勪簬嬋媧?/span>(active)鐘舵併備綅浜嶴tack鏈涓嬫柟鐨刦rame鍜孏lobal Data灝辨瀯鎴愪簡褰撳墠鐨勭幆澧?context)銆傛縺媧誨嚱鏁板彲浠ヤ粠涓皟鐢ㄩ渶瑕佺殑鍙橀噺銆傚吀鍨嬬殑緙栫▼璇█閮藉彧鍏佽浣犱嬌鐢ㄤ綅浜巗tack鏈涓嬫柟鐨刦rame 錛岃屼笉鍏佽浣犺皟鐢ㄥ叾瀹冪殑frame (榪欎篃絎﹀悎stack緇撴瀯“鍏堣繘鍚庡嚭”鐨勭壒寰併備絾涔熸湁涓浜涜璦鍏佽浣犺皟鐢╯tack鐨勫叾瀹冮儴鍒嗭紝鐩稿綋浜庡厑璁鎬綘鍦ㄨ繍琛宨nner()鍑芥暟鐨勬椂鍊欒皟鐢╩ain()涓0鏄庣殑灞閮ㄥ彉閲忥紝姣斿Pascal)銆傚綋鍑芥暟鍙堣繘涓姝ヨ皟鐢ㄥ彟涓涓嚱鏁扮殑鏃跺欙紝涓涓柊鐨刦rame浼氱戶緇鍔犲埌stack涓嬫柟錛屾帶鍒舵潈杞Щ鍒版柊鐨勫嚱鏁頒腑銆傚綋嬋媧誨嚱鏁?span style="margin: 0px; padding: 0px; color: #ff0000;">榪斿洖鐨勬椂鍊欙紝浼氫粠stack涓?span style="margin: 0px; padding: 0px; color: #ff0000;">寮瑰嚭(pop錛屽氨鏄鍙栧茍鍒犻櫎)璇rame錛屽茍鏍規嵁frame涓褰曠殑榪斿洖鍦板潃錛屽皢鎺у埗鏉冧氦緇欒繑鍥炲湴鍧鎵鎸囧悜鐨勬寚浠?/span>(姣斿浠巌nner()鍑芥暟涓繑鍥烇紝緇х畫鎵цmain()涓祴鍊肩粰main2鐨勬搷浣?銆?/span> 涓嬪浘鏄痵tack鍦ㄨ繍琛岃繃紼嬩腑鐨勫彉鍖栵紝綆ご琛ㄧずstack澧為暱鐨勬柟鍚戯紝姣忎釜鏂瑰潡浠h〃涓涓猻tack frame銆傚紑濮嬬殑鏃跺欐垜浠湁涓涓負main()鏈嶅姟鐨刦rame錛岄殢鐫璋冪敤inner()錛屾垜浠負inner()澧炲姞涓涓猣rame銆傚湪inner()榪斿洖鏃訛紝鎴戜滑鍐嶆鍙湁main()鐨刦rame錛岀洿鍒版渶鍚巑ain()榪斿洖錛屽叾榪斿洖鍦板潃涓虹┖錛屾墍浠ヨ繘紼嬬粨鏉熴?br /> 鍦ㄨ繘紼嬭繍琛岀殑榪囩▼涓紝閫氳繃璋冪敤鍜岃繑鍥炲嚱鏁幫紝鎺у埗鏉?/span>涓嶆柇鍦ㄥ嚱鏁伴棿杞Щ銆傝繘紼嬪彲浠ュ湪璋冪敤鍑芥暟鐨勬椂鍊欙紝鍘熷嚱鏁扮殑stack frame涓繚瀛樻湁鍦ㄦ垜浠寮鏃剁殑鐘舵侊紝騫朵負鏂扮殑鍑芥暟寮杈熸墍闇鐨剆tack frame絀洪棿銆傚湪璋冪敤鍑芥暟榪斿洖鏃訛紝璇ュ嚱鏁扮殑stack frame鎵鍗犳嵁鐨勭┖闂撮殢鐫stack frame鐨勫脊鍑鴻屾竻絀恒傝繘紼嬪啀嬈″洖鍒板師鍑芥暟鐨剆tack frame涓繚瀛樼殑鐘舵侊紝騫舵牴鎹繑鍥炲湴鍧鎵鎸囧悜鐨勬寚浠ょ戶緇墽琛屻備笂闈㈣繃紼嬩笉鏂戶緇紝stack涓嶆柇澧為暱鎴栧噺灝忥紝鐩村埌main()榪斿洖鐨勬椂鍊欙紝stack瀹屽叏娓呯┖錛岃繘紼嬬粨鏉熴?/span> 褰撶▼搴忎腑浣跨敤malloc鐨勬椂鍊欙紝heap(鍫?span style="margin: 0px; padding: 0px; color: #000000;">)浼?/span>鍚戜笂澧為暱錛屽叾澧為暱鐨勯儴鍒嗗氨鎴愪負malloc浠庡唴瀛樹腑鍒嗛厤鐨勭┖闂淬俶alloc寮杈熺殑絀洪棿浼氫竴鐩村瓨鍦紝鐩村埌鎴戜滑鐢╢ree緋葷粺璋冪敤鏉ラ噴鏀撅紝鎴栬呰繘紼嬬粨鏉熴備竴涓粡鍏哥殑閿欒鏄?span style="margin: 0px; padding: 0px; color: #ff0000;">鍐呭瓨娉勬紡(memory leakage), 灝辨槸鎸囨垜浠病鏈夐噴鏀句笉鍐嶄嬌鐢ㄧ殑heap絀洪棿錛屽鑷磆eap涓嶆柇澧為暱錛岃屽唴瀛樺彲鐢ㄧ┖闂翠笉鏂噺灝戙?/span> 鐢變簬stack鍜宧eap鐨勫ぇ灝忓垯浼氶殢鐫榪涚▼鐨勮繍琛屽澶ф垨鑰呭彉灝忥紝褰搒tack鍜宧eap澧為暱鍒頒袱鑰呯浉閬囨椂鍊欙紝涔熷氨鏄唴瀛樼┖闂村浘涓殑钃濊壊鍖哄煙(unused area)瀹屽叏娑堝け鐨勬椂鍊欙紝榪涚▼浼氬嚭鐜?span style="margin: 0px; padding: 0px; color: #ff0000;">鏍堟孩鍑?/span>(stack overflow)鐨勯敊璇紝瀵艱嚧榪涚▼緇堟銆傚湪鐜頒唬璁$畻鏈轟腑錛屽唴鏍鎬竴鑸兘浼氫負榪涚▼鍒嗛厤瓚沖澶氱殑钃濊壊鍖哄煙錛屽鏋滄垜浠嵆鏃舵竻鐞嗙殑璇濓紝stack overflow鏄彲浠ラ伩鍏嶇殑銆備絾鏄紝鍦ㄨ繘琛屼竴浜涚煩闃佃繍綆楃殑鏃跺欙紝鐢變簬鎵闇鐨勫唴瀛樺緢澶э紝渚濈劧鍙兘鍑虹幇stack overflow鐨勬儏鍐點備竴縐嶈В鍐蟲柟寮忔槸澧炲ぇ鍐呮牳鍒嗛厤緇欐瘡涓繘紼嬬殑鍐呭瓨絀洪棿銆傚鏋滀緷鐒朵笉鑳借В鍐抽棶棰樼殑璇濓紝鎴戜滑灝遍渶瑕佸鍔犵墿鐞嗗唴瀛樸?br />
褰撶▼搴忔枃浠惰繍琛屼負榪涚▼鐨勬椂鍊欙紝榪涚▼鍦ㄥ唴瀛樹腑寰楀埌絀洪棿(榪涚▼鑷繁鐨勫皬鎴塊棿)銆傛瘡涓繘紼嬬┖闂存寜鐓у涓嬫柟寮忓垎涓轟笉鍚屽尯鍩?
鍐呭瓨絀洪棿
stack鍙樺寲
鍫嗗拰鏍堢殑鍖哄埆錛?br />
2.1鐢寵鏂瑰紡
stack:
鐢辯郴緇熻嚜鍔ㄥ垎閰嶃?nbsp; 渚嬪錛屽0鏄庡湪鍑芥暟涓竴涓眬閮ㄥ彉閲?nbsp; int b; 緋葷粺鑷姩鍦ㄦ爤涓負b寮杈熺┖
闂?nbsp;
heap:
闇瑕佺▼搴忓憳鑷繁鐢寵錛屽茍鎸囨槑澶у皬錛屽湪c涓璵alloc鍑芥暟
濡俻1 = (char *)malloc(10);
鍦–++涓敤new榪愮畻絎?nbsp;
濡俻2 = new char[10];
浣嗘槸娉ㄦ剰p1銆乸2鏈韓鏄湪鏍堜腑鐨勩?nbsp;
2.2
鐢寵鍚庣郴緇熺殑鍝嶅簲
鏍堬細鍙鏍堢殑鍓╀綑絀洪棿澶т簬鎵鐢寵絀洪棿錛岀郴緇熷皢涓虹▼搴忔彁渚涘唴瀛橈紝鍚﹀垯灝嗘姤寮傚父鎻愮ず鏍堟孩
鍑恒?nbsp;
鍫嗭細棣栧厛搴旇鐭ラ亾鎿嶄綔緋葷粺鏈変竴涓褰曠┖闂插唴瀛樺湴鍧鐨勯摼琛紝褰撶郴緇熸敹鍒扮▼搴忕殑鐢寵鏃訛紝
浼氶亶鍘嗚閾捐〃錛屽鎵劇涓涓┖闂村ぇ浜庢墍鐢寵絀洪棿鐨勫爢緇撶偣錛岀劧鍚庡皢璇ョ粨鐐逛粠絀洪棽緇撶偣閾捐〃
涓垹闄わ紝騫跺皢璇ョ粨鐐圭殑絀洪棿鍒嗛厤緇欑▼搴忥紝鍙﹀錛屽浜庡ぇ澶氭暟緋葷粺錛屼細鍦ㄨ繖鍧楀唴瀛樼┖闂翠腑鐨?nbsp;
棣栧湴鍧澶勮褰曟湰嬈″垎閰嶇殑澶у皬錛岃繖鏍鳳紝浠g爜涓殑delete璇彞鎵嶈兘姝g‘鐨勯噴鏀炬湰鍐呭瓨絀洪棿銆?nbsp;
鍙﹀錛岀敱浜庢壘鍒扮殑鍫嗙粨鐐圭殑澶у皬涓嶄竴瀹氭濂界瓑浜庣敵璇風殑澶у皬錛岀郴緇熶細鑷姩鐨勫皢澶氫綑鐨勯偅閮?nbsp;
鍒嗛噸鏂版斁鍏ョ┖闂查摼琛ㄤ腑銆?nbsp;
2.3鐢寵澶у皬鐨勯檺鍒?nbsp;
鏍堬細鍦╓indows涓?鏍堟槸鍚戜綆鍦板潃鎵╁睍鐨勬暟鎹粨鏋勶紝鏄竴鍧楄繛緇殑鍐呭瓨鐨勫尯鍩熴傝繖鍙ヨ瘽鐨勬剰
鎬濇槸鏍堥《鐨勫湴鍧鍜屾爤鐨勬渶澶у閲忔槸緋葷粺棰勫厛瑙勫畾濂界殑錛屽湪WINDOWS涓嬶紝鏍堢殑澶у皬鏄?M錛堜篃鏈?nbsp;
鐨勮鏄?M錛屾諱箣鏄竴涓紪璇戞椂灝辯‘瀹氱殑甯告暟錛夛紝濡傛灉鐢寵鐨勭┖闂磋秴榪囨爤鐨勫墿浣欑┖闂存椂錛屽皢
鎻愮ずoverflow銆傚洜姝わ紝鑳戒粠鏍堣幏寰楃殑絀洪棿杈冨皬銆?nbsp;
鍫嗭細鍫嗘槸鍚戦珮鍦板潃鎵╁睍鐨勬暟鎹粨鏋勶紝鏄笉榪炵畫鐨勫唴瀛樺尯鍩熴傝繖鏄敱浜庣郴緇熸槸鐢ㄩ摼琛ㄦ潵瀛樺偍
鐨勭┖闂插唴瀛樺湴鍧鐨勶紝鑷劧鏄笉榪炵畫鐨勶紝鑰岄摼琛ㄧ殑閬嶅巻鏂瑰悜鏄敱浣庡湴鍧鍚戦珮鍦板潃銆傚爢鐨勫ぇ灝?nbsp;
鍙楅檺浜庤綆楁満緋葷粺涓湁鏁堢殑铏氭嫙鍐呭瓨銆傜敱姝ゅ彲瑙侊紝鍫嗚幏寰楃殑絀洪棿姣旇緝鐏墊椿錛屼篃姣旇緝澶с?nbsp;
2.4鐢寵鏁堢巼鐨勬瘮杈冿細
鏍堢敱緋葷粺鑷姩鍒嗛厤錛岄熷害杈冨揩銆備絾紼嬪簭鍛樻槸鏃犳硶鎺у埗鐨勩?nbsp;
鍫嗘槸鐢眓ew鍒嗛厤鐨勫唴瀛橈紝涓鑸熷害姣旇緝鎱紝鑰屼笖瀹規槗浜х敓鍐呭瓨紕庣墖,涓嶈繃鐢ㄨ搗鏉ユ渶鏂逛究.
鍙﹀錛屽湪WINDOWS涓嬶紝鏈濂界殑鏂瑰紡鏄敤VirtualAlloc鍒嗛厤鍐呭瓨錛屼粬涓嶆槸鍦ㄥ爢錛屼篃涓嶆槸鍦ㄦ爤鏄?nbsp;
鐩存帴鍦ㄨ繘紼嬬殑鍦板潃絀洪棿涓繚鐣欎竴鍧楀唴瀛橈紝铏界劧鐢ㄨ搗鏉ユ渶涓嶆柟渚褲備絾鏄熷害蹇紝涔熸渶鐏墊椿銆?nbsp;
2.5鍫嗗拰鏍堜腑鐨勫瓨鍌ㄥ唴瀹?nbsp;
鏍堬細 鍦ㄥ嚱鏁拌皟鐢ㄦ椂錛岀涓涓繘鏍堢殑鏄富鍑芥暟涓悗鐨勪笅涓鏉℃寚浠わ紙鍑芥暟璋冪敤璇彞鐨勪笅涓鏉″彲
鎵ц璇彞錛夌殑鍦板潃錛岀劧鍚庢槸鍑芥暟鐨勫悇涓弬鏁幫紝鍦ㄥぇ澶氭暟鐨凜緙栬瘧鍣ㄤ腑錛屽弬鏁版槸鐢卞彸寰宸﹀叆鏍?nbsp;
鐨勶紝鐒跺悗鏄嚱鏁頒腑鐨勫眬閮ㄥ彉閲忋傛敞鎰忛潤鎬佸彉閲忔槸涓嶅叆鏍堢殑銆?nbsp;
褰撴湰嬈″嚱鏁拌皟鐢ㄧ粨鏉熷悗錛屽眬閮ㄥ彉閲忓厛鍑烘爤錛岀劧鍚庢槸鍙傛暟錛屾渶鍚庢爤欏舵寚閽堟寚鍚戞渶寮濮嬪瓨鐨勫湴
鍧錛屼篃灝辨槸涓誨嚱鏁頒腑鐨勪笅涓鏉℃寚浠わ紝紼嬪簭鐢辮鐐圭戶緇繍琛屻?nbsp;
鍫嗭細涓鑸槸鍦ㄥ爢鐨勫ご閮ㄧ敤涓涓瓧鑺傚瓨鏀懼爢鐨勫ぇ灝忋傚爢涓殑鍏蜂綋鍐呭鐢辯▼搴忓憳瀹夋帓銆?nbsp;
2.6瀛樺彇鏁堢巼鐨勬瘮杈?nbsp;
char s1[] = "aaaaaaaaaaaaaaa";
char *s2 = "bbbbbbbbbbbbbbbbb";
aaaaaaaaaaa鏄湪榪愯鏃跺埢璧嬪肩殑錛?nbsp;
鑰宐bbbbbbbbbb鏄湪緙栬瘧鏃跺氨紜畾鐨勶紱
浣嗘槸錛屽湪浠ュ悗鐨勫瓨鍙栦腑錛屽湪鏍堜笂鐨勬暟緇勬瘮鎸囬拡鎵鎸囧悜鐨勫瓧絎︿覆(渚嬪鍫?蹇?
2.7灝忕粨錛?nbsp;
鍫嗗拰鏍堢殑鍖哄埆鍙互鐢ㄥ涓嬬殑姣斿柣鏉ョ湅鍑猴細
浣跨敤鏍堝氨璞℃垜浠幓楗閲屽悆楗紝鍙鐐硅彍錛堝彂鍑虹敵璇鳳級銆佷粯閽便佸拰鍚冿紙浣跨敤錛夛紝鍚冮ケ浜嗗氨
璧幫紝涓嶅繀鐞嗕細鍒囪彍銆佹礂鑿滅瓑鍑嗗宸ヤ綔鍜屾礂紕椼佸埛閿呯瓑鎵熬宸ヤ綔錛屼粬鐨勫ソ澶勬槸蹇嵎錛屼絾鏄嚜
鐢卞害灝忋?nbsp;
浣跨敤鍫嗗氨璞℃槸鑷繁鍔ㄦ墜鍋氬枩嬈㈠悆鐨勮彍鑲達紝姣旇緝楹葷儲錛屼絾鏄瘮杈冪鍚堣嚜宸辯殑鍙e懗錛岃屼笖鑷敱
搴﹀ぇ銆?nbsp; (緇忓吀錛?
]]>
// 榪欎釜*浠h〃鐨勫肩敱鍚庨潰鐨勫弬鏁板垪琛ㄤ腑鐨勬暣鏁板瀷(int)鍊肩粰鍑?br />
// 渚嬪錛?/span>
printf("%.*s\n", 1, "abc"); // 杈撳嚭a
printf("%.*s\n", 2, "abc"); // 杈撳嚭ab
printf("%.*s\n", 3, "abc"); // 杈撳嚭abc >3鏄竴鏍風殑鏁堟灉 鍥犱負杈撳嚭綾誨瀷type = s錛岄亣鍒?\0'浼氱粨鏉?br />
]]>
{
int M,b;
int N[100],c=0;
scanf("%d%d",&b,&M);//杈撳叆榪涘埗b(2~10),瑕佽漿鍖栦負b榪涘埗鐨勬鏁存暟M(鍗佽繘鍒?
while(M)
{
N[c++]=M%b;
M=M/b;
}
for(int i=c-1;i>=0;i--)
printf("%d",N[i]);
printf("\n");
return 0;
}
]]>
#include<math.h>
int main()
{
char M[100]={0};
int N=0;
gets(M);
int len=strlen(M);
for(int i=0;i<len;i++)
{
N+=(M[i]-'0') * pow(2.0,len-i-1);
}
printf("%d\n",N);
return 0;
}
]]>
浠g爜濡備笅錛?br />
#define N 10
int Maxcom(int a, int b)
{
while(a!=b)
{
if(a>b)
a=a-b;
else if(b>a)
b=b-a;
}
return a;
}
int main()
{
int a[N][N];
int i,j,max;
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
if(i==1 && j==1)
a[i][j]=1;
else if( i>0 && j>0)
{
max = Maxcom(i,j);
if(max == 1)
a[i][j]=1;
else
a[i][j]=0;
}
else
a[i][j]=0;
}
}
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
printf("%d ",a[i][j]);
printf("\n");
}
printf("\n");
return 0;
}
]]>
for(j=0;j<N;j++)
for(k=0,c[i][j] = 0.0;k<N;k++)
c[i][j] +=a[i][k] * b[k][j];
浜岀淮鏁扮粍鐨勫垎閰嶏細
#include<stdlib.h>
int **malloc2d(int r, int c) //浜岀淮鏁扮粍鍒嗛厤鍑芥暟
{
int i;
int **t = (int **)malloc(r * sizeof(int *));
for(i=0;i<r;i++)
t[i] = (int *)malloc(c * sizeof(int));
return t;
}
int main()
{
int i,j;
int **a =malloc2d(3,3);
for(i=0;i<3;i++)
for(j=0;j<3;j++)
a[i][j]=i+j;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%d ",a[i][j]);
printf("\n");
}
return 0;
}
緇煎悎璁$畻浜岀淮鏁扮粍鐩鎬箻鐨勪箻縐?br />浠g爜濡備笅錛?br />
#include<stdlib.h>
int **malloc2d(int r, int c)
{
int i;
int **t = (int **)malloc(r * sizeof(int *));
for(i=0;i<r;i++)
t[i] = (int *)malloc(c * sizeof(int));
return t;
}
int main()
{
int i,j,k;
int **a =malloc2d(3,3);
int **b =malloc2d(3,3);
int **c =malloc2d(3,3);
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
a[i][j]=i+j;
b[i][j]=i+j;
}
}
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%d ",a[i][j]);
printf("\n");
}
printf("\n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
for(k=0,c[i][j] = 0.0;k<3;k++)
c[i][j] +=a[i][k] * b[k][j];
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%d ",c[i][j]);
printf("\n");
}
return 0;
}
]]>
#include<stdio.h>
#include<stdlib.h>
int compare(const void * a,const void * b)
{
return *(int*)a - *(int*)b;
}
int main()
{
int a[20],i;
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
qsort(a,10,sizeof(int),compare);
for(i=0;i<10;i++)
printf("%d ",a[i]);
return 0;
}
]]>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define Nmax 1000
#define Mmax 10000
char buf[Mmax]; int M=0;
int compare(const void *i, const void *j)
{
return strcmp(*(char **)i, *(char **)j);
}
int main()
{
int i, N;
char *a[Nmax];
for(N=0; N<Nmax; N++)
{
a[N]= &buf[M];
if(scanf("%s", a[N]) == EOF) break;
M+=strlen(a[N])+1;
}
qsort(a,N,sizeof(char*),compare); //鍥涗釜鍙傛暟鍒嗗埆浠h〃錛氬緟鎺掑簭鐨勬暟緇勯鍦板潃錛屾暟緇勪腑寰呮帓搴忕殑鍏冪礌鏁伴噺錛屽悇鍏冪礌鍗犵敤鐨勭┖闂達紝鎺掑簭鍑芥暟錛堢‘瀹氭帓搴忛『搴忥級
for(i=0;i<N;i++)
printf("%s\n",a[i]);
return 0;
}
]]>#include<stdio.h>
#include<string.h>
int main()
{
FILE *fp;
char pathName[20],txt1[100]={'\0'},txt2[20]={'\0'};
int fileLen;
printf("Please type the path name of the file\n");
scanf("%s",pathName);
fp=fopen(pathName,"w");
printf("Please input a string to this file\n");
scanf("%s",txt1);
fileLen=strlen(txt1);
fwrite(txt1,fileLen,1,fp);
fclose(fp);
printf("The file has been saved\n");
printf("The content of teh file: %s is\n",pathName);
fp=fopen(pathName,"r");
fread(txt2,fileLen,1,fp);
printf("%s\n",txt2);
return 0;
}
]]>
姣忔閫夊彇璐ㄩ噺鏈灝忕殑綆卞瓙瑁呭叆鑸癸紙鐢ㄥ啋娉℃帓搴忕畻娉曡В鍐籌級錛屼唬鐮佸涓嬶細
#include<stdio.h>
#include<stdlib.h>
void sort(int w[],int t[],int n)//w[]瀛樻斁姣忎釜闆嗚綆辯殑璐ㄩ噺錛宼[]瀛樻斁w[]鐨勪笅鏍?/span>
{
int i,j,tmp;
int *w_tmp=(int *)malloc(sizeof(int)*n);//寮杈熶竴涓復鏃舵暟緇勶紝瀛樻斁w[]鐨勫唴瀹癸紝鐢ㄤ簬鎺掑簭
for(i=0;i<n;i++)
t[i]=i;//鍒濆鍖栨暟緇則
for(i=0;i<n;i++)
w_tmp[i]=w[i];
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)//鍐掓場鎺掑簭瀹炵幇
if(w_tmp[j]>w_tmp[j+1])
{
tmp=w_tmp[j];
w_tmp[j]=w_tmp[j+1];
w_tmp[j+1]=tmp;
tmp=t[j];
t[j]=t[j+1];
t[j+1]=tmp;
}
}
void loading(int x[],int w[],int c,int n)
{
int i,s=0;
int *t=(int*)malloc(sizeof(int)*n);//鍔ㄦ佸紑杈熶竴涓復鏃舵暟緇勶紝瀛樻斁w[]鐨勪笅鏍?/span>
sort(w,t,n);
for(i=0;i<n;i++)
x[i]=0;
for(i=0;i<n && w[t[i]]<=c;i++){
x[t[i]]=1; //灝嗙t[i]涓泦瑁呯瑁呭叆璐ц埞涓?/span>
c=c-w[t[i]]; //鍙橀噺c涓瓨鏀捐揣鑸圭殑鍓╀綑杞借川閲?/span>
}
}
int main()
{
int x[5],w[5],c,i;
printf("Iput the maximum loading of the sheep\n");
scanf("%d",&c);
printf("Iput the weight of Five box\n");
for(i=0;i<5;i++)
scanf("%d",&w[i]);
loading(x,w,c,5);
printf("The following boxes will be loaded\n");
for(i=0;i<5;i++)
{
if(x[i]==1) printf("BOX:%d ",i);
}
return 0;
}
]]>
#include<string.h>
char* strins(char* str1,char* str2,int pos)
{
int s_len;
int d_len;
int i,j;
pos--;
s_len=strlen(str1);
d_len=strlen(str2);
for(i=s_len+1;i>=pos;i--) /*絀哄嚭str2鐨勭┖闂?/span>*/
str1[i+d_len]=str1[i];
for(j=pos;str2[j-pos]!='\0';j++) /*灝嗗瓧絎︿覆str2鎻掑叆str1涓殑鐗瑰畾浣嶇疆*/
str1[j]=str2[j-pos];
return str1;
}
void main()
{
char string1[200];
char string2[100];
int pos;
printf("璇瘋緭鍏ュ垵濮嬪瓧絎︿覆:");
gets(string1);
printf("璇瘋緭鍏ユ彃鍏ュ瓧絎︿覆:");
gets(string2);
printf("璇瘋緭鍏ユ彃鍏ヤ綅緗?");
scanf("%d",&pos);
strins(string1,string2,pos);
printf("鎻掑叆鍚庣殑瀛楃涓叉槸%s\n",string1);
}
]]>
#include<string.h>
void IntToStr(int n);
char str[80]={0};
void main()
{
int num;
printf("input an integer number:");
scanf("%d",&num);
IntToStr(num);
printf("The string is:%s\n",str);
}
void IntToStr(int n)
{
int i;
if(n==0)//鏁存暟涓?鏃訛紝閫掑綊緇撴潫
return;
for(i=strlen(str)-1;i>=0;i--) //灝嗗瓧絎︿覆鏁翠釜寰鍚庣Щ涓涓瓧絎?/span>
str[i+1]=str[i];
str[0]=n%10+0x30; //灝嗚鏁扮殑涓綅鏁拌漿鎹㈡垚瀛楃鏀懼湪瀛楃鏁扮粍鐨勭涓涓厓绱犵殑浣嶇疆錛?0x30琛ㄧず鍗佸叚榪涘埗鐨?錛屽叾瀹炲彲浠ヤ笉鍔?/span>
IntToStr(n/10);//灝嗚鏁扮殑鍟嗭紝鍗抽櫎涓綅澶栫殑鍏朵粬鏁伴氳繃閫掑綊杞崲
}
//閫掑綊榪囩▼錛氫緥濡傝緭鍏=148,閭d箞絎竴嬈¢掑綊鏃訛紝str[0]瀛樻斁鐨勬暟鏄?,n/10=14錛屽緱鍒扮浜屾閫掑綊鐨勬暟鏄?4錛?br />//8鍘熷厛瀛樺偍鍦╯tr[0]錛屼絾絎簩嬈¢掑綊鍚戝悗縐誨姩涓涓瓧絎︼紝鍙樻垚瀛樺湪str[1]鍐咃紝鑰?瀛樺湪str[0]鍐咃紱
//絎笁嬈¢掑綊鏃訛紝鍚岀悊鍙煡8鏀懼湪str[2],4鏀懼湪str[1],鑰?鏀懼湪str[0]錛岃繖鏍峰氨灝?48杞崲涓哄瓧絎︿覆銆?/span>
]]>
鐢–璇█浠g爜琛ㄧず濡備笅錛?br />
long F(int n);
void main()
{
int i;
for(i=1;i<=40;i++)
{
printf("F(%2d)=%-9ld",i,F(i));
if(i%4==0)
printf("\n");
}
}
long F(int n)//姹傜n欏圭殑鍊?/span>
{
if(n<=2)
return (1);
return(F(n-1)+F(n-2));
}
]]>
渚濇姣旇緝鐩擱偦鐨勪袱涓暟錛屽皢灝忔暟鏀懼湪鍓嶉潰錛屽ぇ鏁版斁鍦ㄥ悗闈€傚嵆鍦ㄧ涓瓚燂細棣栧厛姣旇緝絎?涓拰絎?涓暟錛屽皢灝忔暟鏀懼墠錛屽ぇ鏁版斁鍚庛傜劧鍚庢瘮杈冪2涓暟鍜岀3涓暟錛屽皢灝忔暟鏀懼墠錛屽ぇ鏁版斁鍚庯紝濡傛緇х畫錛岀洿鑷蟲瘮杈冩渶鍚庝袱涓暟錛屽皢灝忔暟鏀懼墠錛屽ぇ鏁版斁鍚庛傝嚦姝ょ涓瓚熺粨鏉燂紝灝嗘渶澶х殑鏁版斁鍒頒簡鏈鍚庛傚湪絎簩瓚燂細浠嶄粠絎竴瀵規暟寮濮嬫瘮杈冿紙鍥犱負鍙兘鐢變簬絎?涓暟鍜岀3涓暟鐨勪氦鎹紝浣垮緱絎?涓暟涓嶅啀灝忎簬絎?涓暟錛夛紝灝嗗皬鏁版斁鍓嶏紝澶ф暟鏀懼悗錛屼竴鐩存瘮杈冨埌鍊掓暟絎簩涓暟錛堝掓暟絎竴鐨勪綅緗笂宸茬粡鏄渶澶х殑錛夛紝絎簩瓚熺粨鏉燂紝鍦ㄥ掓暟絎簩鐨勪綅緗笂寰楀埌涓涓柊鐨勬渶澶ф暟錛堝叾瀹炲湪鏁翠釜鏁板垪涓槸絎簩澶х殑鏁幫級銆傚姝や笅鍘伙紝閲嶅浠ヤ笂榪囩▼錛岀洿鑷蟲渶緇堝畬鎴愭帓搴忋傞渶瑕佺敤浜岄噸寰幆鎺掑簭銆?br />Example:
#include<stdio.h>
int main()
{
int i,j,temp,tag;
int a[11]; //鏁扮粍絎?浣嶇┖鍑?br />
for(i=1;i<=10;i++)
scanf ("%d,",&a[i]);
for(j=1;j<=10;j++)
{
tag=1;
for (i=1;i<=10-j;i++)
{
if (a[i]>a[i+1])
{
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
tag=0;
}
}
if(1==tag)
{
break;
}
}
for(i=0;i<10;i++)
printf("%5d",a[i]);
return 0;
}
浠ヤ笅鏄夋嫨鎺掑簭娉曪細
姣忔澶栧驚鐜厛灝嗗畾浣嶅厓绱犵殑灝忔爣i鍊艱褰曞埌K錛岃涓篴[k]鏄渶灝忓鹼紝絎竴杞瘮杈冩椂錛岃嫢閬囧埌姣攁[k]鏇村皬鐨勬暟錛屽垯浜ゆ崲涓ゆ暟鐨勪笅鏍囷紝鐢變笅闈㈢殑if璇彞榪涜浜ゆ崲澶勭悊銆?br />榪欐牱絎竴杞氨閫夊嚭浜嗘渶灝忕殑鏁幫紝絎簩杞紝鍚岀悊閫夊嚭嬈″皬鐨勬暟鎺掑湪鏈灝忕殑鏁板悗闈€傚鏋滄槸杈撳叆10涓暟錛岄偅涔堣繘琛?杞帓搴忓悗灝卞彲瀹屾垚鏁翠釜鎺掑簭榪囩▼銆?br />
void main()
{
int i,j,t,a[10],k;
printf("input 10 numbers:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++)//榪欓噷涔熻娉ㄦ剰i=0;i<9;
{
k=i;
for(j=i+1;j<10;j++)
if(a[k]>a[j])
k=j;
if(k!=i)//濡傛灉k涓嶇瓑浜巌錛屾敼鍙樹簡錛屽垯浜ゆ崲涓や釜鏁扮殑浣嶇疆
{
t=a[i];
a[i]=a[k];
a[k]=t;
}
}
for(i=0;i<10;i++)//鏈鍚庤緭鍑哄凡緇忔帓濂藉簭鐨勬暟
printf("%5d",a[i]);
}
PS錛氬ぇ涓鍒氬紑濮嬫帴瑙﹁繖涓や釜鎺掑簭綆楁硶鏃訛紝鎰熻鏈夌偣涔憋紝鐜板湪鍥炶繃澶存潵浠旂粏鐪嬶紝鎬濊礬娓呮櫚浜嗕笉灝戙傛椂鍒誨洖欏捐繃鍘葷殑鐭ヨ瘑錛岃繘琛屾暣鐞嗭紝鍐嶈璇嗭紝寰堥噸瑕佸憖銆?-D
]]>鍘熺悊鍙婂叾璇︾粏璇佹槑
銆銆璁句袱鏁頒負a銆乥(b<a)錛岀敤gcd(a,b)琛ㄧずa錛宐鐨勬渶澶у叕綰︽暟錛宺=a mod b 涓篴闄や互b浠ュ悗鐨勪綑鏁幫紝杈楄漿鐩擱櫎娉曞嵆鏄璇佹槑gcd(a,b)=gcd(b,r)銆?
銆銆絎竴姝ワ細浠=gcd(a,b)錛屽垯璁綼=mc錛宐=nc
銆銆絎簩姝ワ細鏍規嵁鍓嶆彁鍙煡r =a-kb=mc-knc=(m-kn)c
銆銆絎笁姝ワ細鏍規嵁絎簩姝ョ粨鏋滃彲鐭涔熸槸r鐨勫洜鏁?
銆銆絎洓姝ワ細鍙互鏂畾m-kn涓巒浜掔礌銆愬惁鍒欙紝鍙m-kn=xd錛宯=yd錛?d>1)錛屽垯m=kn+xd=kyd+xd=(ky+x)d錛屽垯a=mc=(ky+x)dc錛宐=nc=ycd錛屾晠a涓巄鏈澶у叕綰︽暟鎴愪負cd錛岃岄潪c銆?
銆銆浠庤屽彲鐭cd(b,r)=c錛岀戶鑰実cd(a,b)=gcd(b,r)銆?
銆銆璇佹瘯銆?br />
鐢–琛ㄧず鍒欙細
int gcd(int a,int b)
銆銆{
銆銆int temp;
銆銆if(a<b)/*浜ゆ崲涓や釜鏁幫紝浣垮ぇ鏁版斁鍦╝涓?/
銆銆{
銆銆temp=a;
銆銆a=b;
銆銆b=temp;
銆銆}
銆銆while(b!=0)/*鍒╃敤杈楅櫎娉曪紝鐩村埌b涓?涓烘*/
銆銆{
銆銆temp=a%b;
銆銆a=b;
銆銆b=temp;
銆銆}
銆銆return a;
銆銆}
]]>
2 int Maxcommonfactor(int a,int b);
3 void main()
4 {
5 int a,b,c;
6 printf("input two integer number:");
7 scanf("%d%d",&a,&b);
8 c=Maxcommonfactor(a,b);
9 if(c!=-1)
10 printf("The biggest common factor of %d and %d is %d\n",a,b,c);
11 else
12 printf("The biggest common factor of %d and %d isn't exist\n",a,b);
13 }
14 int Maxcommonfactor(int a,int b)
15 {
16 if(a<=0||b<=0)
17 return(-1);
18 while(a!=b)
19 {
20 if(a>b)
21 a=a-b;
22 else if(b>a)
23 b=b-a;
24 }
25 return(a);//榪斿洖鐨勫間負鏈澶у叕綰︽暟
26 }
27
28
]]>