版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
01初識C語言主講:沈涵飛C語言程序設(shè)計學(xué)習(xí)程序設(shè)計從C語言開始2020年11月TIOBE排行榜TIOBE編程語言指數(shù)是一種編程語言的流行程度的指標(biāo),該指標(biāo)每月更新一次。占有率是根據(jù)世界各地的熟練工程師、課程和第三方供應(yīng)商的數(shù)據(jù)統(tǒng)計來的,用于計算市場占有率的搜索引擎包括谷歌、MSN、雅虎、維基百科和YouTube。TIOBE指數(shù)只是反映某個編程語言的熱門程度,并不能說明一門編程語言好不好,或者一門語言所編寫的代碼數(shù)量多少。2023年08月TIOBE排行榜2020年,C語言還是排名第一。2023年,Python排名第一,這表明在人工智能時代,Python的重要性在增加。在計算機(jī)領(lǐng)域,C語言可以認(rèn)為是常用程序設(shè)計語言的起點(diǎn)。掌握多種編程語言并不難,難的是利用語言來解決挑戰(zhàn)性的問題。TIOBE指數(shù)長期趨勢2020年11月編程語言占有率主要特點(diǎn)和應(yīng)用領(lǐng)域1C16.21%生于1970年代初,最靠近硬件,系統(tǒng)級開發(fā),性能最強(qiáng)2Python12.21%人工智能、數(shù)據(jù)處理、快速生成程序的原型3Java11.68%安卓移動應(yīng)用、Web開發(fā)、企業(yè)級應(yīng)用,跨平臺4C++7.60%C語言的增強(qiáng)版,加入了面向?qū)ο筇匦?C#4.67%微軟平臺的JAVA語言,Web開發(fā)、移動應(yīng)用@微軟6VisualBasic.NET4.01%VisualBasic在.NetFramework平臺上的升級版本7JavaScript2.03%瀏覽器端編程,JQuery,Bootstrap,Node.jsandGWT的基礎(chǔ)8PHP1.79%Web開發(fā)9R1.64%統(tǒng)計計算和統(tǒng)計制圖的優(yōu)秀工具10SQL1.54%數(shù)據(jù)庫結(jié)構(gòu)化查詢語言主流編程語言的特點(diǎn)和應(yīng)用領(lǐng)域/tiobe-index/CC++Objective-CJAVAPHPC#編程語言的首次發(fā)布時間1972198319952000ManylaterlanguageshaveborroweddirectlyorindirectlyfromC,includingC++,D,Go,Rust,Java,JavaScript,Limbo,LPC,C#,Objective-C,Perl,PHP,Python,Verilog(hardwaredescriptionlanguage),andUnix’sCshell.TheselanguageshavedrawnmanyoftheircontrolstructuresandotherbasicfeaturesfromC,usuallywithoverallsyntacticalsimilaritytoCthatsometimesincludesidenticalsimplecontrolstructures.維基百科許多后來的語言直接或間接地從C中借用,包括C++,D,Go,Rust,Java,JavaScript,Limbo,LPC,C#,Objective-C,Perl,PHP,Python,Verilog(硬件描述語言)和UNIX的Cshell。這些語言從C語言中提取了許多控制結(jié)構(gòu)和其他基本特征,通常在語法上與C語言相似,有時包括相同的簡單控制結(jié)構(gòu)。C語言代表的是結(jié)構(gòu)化程序設(shè)計生于1972年的C語言是現(xiàn)代編程語言的鼻祖Java代表的是面向?qū)ο蟪绦蛟O(shè)計建議選擇:C語言->JAVA語言基礎(chǔ)根據(jù)應(yīng)用來選擇學(xué)習(xí)編程語言及學(xué)習(xí)深度編程語言學(xué)習(xí)的建議結(jié)構(gòu)化程序設(shè)計StructuredProgramming面向?qū)ο蟪绦蛟O(shè)計Object-OrientedProgramming軟件開發(fā)工具包SDKSoftwareDevelopmentKit一般都是一些被軟件工程師用于為特定的軟件包、軟件框架、硬件平臺、操作系統(tǒng)等建立應(yīng)用軟件的開發(fā)工具的集合。應(yīng)用程序編程接口APIApplicationProgrammingInterface一些預(yù)先定義的函數(shù),目的是提供應(yīng)用程序與開發(fā)人員基于某軟件或硬件得以訪問一組例程的能力,而又無需訪問源碼,或理解內(nèi)部工作機(jī)制的細(xì)節(jié)。編程語言的差別主要表現(xiàn)在應(yīng)用領(lǐng)域小結(jié)學(xué)習(xí)程序設(shè)計從C語言開始
程序設(shè)計:結(jié)構(gòu)化和面向?qū)ο蠼Y(jié)構(gòu)化的代表:C面向?qū)ο蟠恚篔AVA結(jié)構(gòu)化程序設(shè)計是基礎(chǔ)不止于學(xué)習(xí)C語言語法設(shè)計思路、方法、最佳實踐、拓展……初識C語言主講:沈涵飛C語言程序設(shè)計如何學(xué)好程序設(shè)計模仿、理解和運(yùn)用學(xué)習(xí)一門新程序設(shè)計語言的唯一途徑就是使用它編寫程序。如何學(xué)好程序設(shè)計——K&R《C程序設(shè)計語言(第2版)》第1頁BrianW.Kernighan&DennisM.Ritchie模仿、理解和運(yùn)用模仿:在學(xué)習(xí)過程中,經(jīng)常會遇到不明白的內(nèi)容,但這絲毫不影響你編寫簡單的程序。這看似鼓勵你“不求甚解”,但實為考慮到學(xué)習(xí)規(guī)律而作出的決策:初學(xué)者學(xué)習(xí)和理解能力不夠,自信心也不夠,不適合在動手之前被灌輸大量的理論。正確的學(xué)習(xí)方法是“抓住主要矛盾”——始終把學(xué)習(xí)、實驗的焦點(diǎn)集中在最有趣的部分。如果直觀地解決方案行得通,就不必追究其背后的原理?!獎⑷昙眩ā端惴ǜ傎惾腴T經(jīng)典》作者)理解:圍繞實例,積累必要的感性認(rèn)識之后,理解概念和原理會更快更有效。好的例子會說話!運(yùn)用:透徹掌握原理后,再開發(fā)新程序去解決新的問題,你對知識和原理的理解更為深入,運(yùn)用是更高層次的模仿。模仿理解運(yùn)用享受程序設(shè)計帶來的樂趣和成就感模仿、理解、應(yīng)用快速學(xué)完80%的內(nèi)容熟練掌握基本操作及時提出問題初識C語言主講:沈涵飛C語言程序設(shè)計第1個程序Hello,World這是無數(shù)偉大程序員的第一個C語言程序。“Hello,World”程序指的是指在計算機(jī)屏幕上輸出“Hello,World”(意為“世界,你好”)這行字符串的計算機(jī)程序。這個程序是K&R《C程序設(shè)計語言》的第1個程序。一般來說,這是每一種計算機(jī)編程語言中最基本、最簡單的程序,亦通常是初學(xué)者所編寫的第一個程序。它還可以用來確定該語言的編譯器、程序開發(fā)環(huán)境,以及運(yùn)行環(huán)境是否已經(jīng)安裝妥當(dāng)。在屏幕輸出Hello,WorldHello,WorldStep快捷鍵作用其他方法1Ctrl+N創(chuàng)建新文件點(diǎn)擊圖標(biāo);菜單2Ctrl+J,換行C程序模板鼠標(biāo)右鍵3輸入代碼4F5編譯并運(yùn)行程序點(diǎn)擊圖標(biāo)5Ctrl+S保存文件10秒完成你的第一個程序小結(jié)第1個程序Hello,World創(chuàng)建新文件Ctrl+N保存文件Ctrl+S插入模板Ctrl+J,EnterF5編譯并運(yùn)行程序復(fù)制:Ctrl+C粘貼:Ctrl+V剪切:Ctrl+X熟練使用快捷鍵語句:表示動作,以分號結(jié)尾printf函數(shù):3個符號();""puts:簡化版的printf
puts(“Hello,World”);重視實驗,善于模仿始終把學(xué)習(xí)、實驗的焦點(diǎn)集中在最有趣的部分探索:\n的含義#include<stdio.h>
intmain(intargc,char*argv[]){printf("Hello,World\n");return0;}初識C語言主講:沈涵飛C語言程序設(shè)計算術(shù)表達(dá)式的計算計算表達(dá)式的值3+43-43×48÷49÷4printf("%d\n",3+4);printf("%d\n",3-4);printf("%d\n",3*4);printf("%d\n",8/4);printf("%d\n",9/4);算術(shù)表達(dá)式的計算:整數(shù)和浮點(diǎn)數(shù)1)整數(shù)%d運(yùn)算符兩邊都是整數(shù),則結(jié)果也是整數(shù)2)實數(shù)%f運(yùn)算符兩邊都是實數(shù),則結(jié)果也是實數(shù)Q:運(yùn)算符一邊都是實數(shù),一邊是整數(shù),則結(jié)果是?A:將整數(shù)強(qiáng)制轉(zhuǎn)換成實數(shù),再進(jìn)行計算。printf("%d\n",9/4);printf("%f\n",9.0/4.0);除法和取余:羽毛球雙打9個人在一起,有點(diǎn)無聊,就想打羽毛球。羽毛球雙打是4個人一塊場地,那么需要幾塊場地,還剩下幾個人只能旁觀?printf(“9個人可湊成%d塊場地,還剩下%d個人旁觀。",9/4,9%4);printf("%d%d",9/4,9%4);小結(jié)算術(shù)表達(dá)式的計算C語言嚴(yán)格區(qū)分?jǐn)?shù)據(jù)類型整數(shù)的除法和取余:9個人打羽毛球整數(shù)和浮點(diǎn)的混合運(yùn)算和類型的隱形轉(zhuǎn)換計算平方根使用數(shù)學(xué)庫函數(shù)sqrt初學(xué)者:在全英文狀態(tài)下寫代碼#include<stdio.h>#include<math.h>intmain(){printf("%d%d\n",9/4,9%4);printf("%f\n",9.0/4.0);printf("%f\n",sqrt(2));
return0;}初識C語言主講:沈涵飛C語言程序設(shè)計C程序基本結(jié)構(gòu)DICO和A+B問題A+B問題和DICO輸入兩個整數(shù),計算這兩個整數(shù)的和輸入:兩個整數(shù)a和b輸出:輸出計算結(jié)果347計算Compute輸出Output輸入InputA+B問題和DICO347計算Compute輸出Output輸入Input聲明Declarationinta,b,z;輸入Inputscanf(“%d%d”,&a,&b);計算Computez=a+b;輸出Outputprintf(“%d\n”,z);結(jié)構(gòu)化程序設(shè)計StructuredProgramming結(jié)構(gòu)化程序設(shè)計強(qiáng)調(diào)程序設(shè)計風(fēng)格和程序結(jié)構(gòu)的規(guī)范化,提倡清晰的結(jié)構(gòu)。結(jié)構(gòu)化程序設(shè)計方法的基本思路是:把一個復(fù)雜問題的求解過程分階段進(jìn)行,每個階段處理的問題都控制在人們?nèi)菀桌斫夂吞幚淼姆秶鷥?nèi)。結(jié)構(gòu)化程序設(shè)計提倡:(1)自頂向下;(2)逐步細(xì)化;(3)模塊化設(shè)計;(4)結(jié)構(gòu)化編碼。結(jié)構(gòu)化程序設(shè)計特點(diǎn)是將程序中的數(shù)據(jù)與處理數(shù)據(jù)的方法分離。面向?qū)ο蟪绦蛟O(shè)計:Object-OrientedProgramming,縮寫:OOP小結(jié)C程序基本結(jié)構(gòu)DICO:聲明、輸入、計算、輸出聲明、輸入和輸出有固定的模式計算是程序的重點(diǎn)C語言的風(fēng)格是結(jié)構(gòu)化程序設(shè)計將程序中的數(shù)據(jù)與處理數(shù)據(jù)的方法分離聲明Declarationinta,b,z;輸入Inputscanf(“%d%d”,&a,&b);計算Computez=a+b;輸出Outputprintf(“%d\n”,z);初識C語言主講:沈涵飛C語言程序設(shè)計學(xué)習(xí)好幫手:程序評測系統(tǒng)初識C語言主講:沈涵飛C語言程序設(shè)計學(xué)習(xí)好幫手:程序評測系統(tǒng)什么是在線評測系統(tǒng)OnlineJudge在線評測系統(tǒng)(OnlineJudge,OJ)源于國際大學(xué)生程序設(shè)計競賽(ACM/ICPC),是采用黑盒測試原理進(jìn)行計算機(jī)程序正確性判斷的自動化程序。該系統(tǒng)具有比賽公平性好、評測自動化程度高、節(jié)約人力成本等優(yōu)點(diǎn),廣泛應(yīng)用于各類計算機(jī)程序設(shè)計比賽和教學(xué)。國內(nèi)著名的在線評測系統(tǒng)有北京大學(xué)和浙江大學(xué)的OnlineJudge。在線評測系統(tǒng)為C/C++/JAVA等編程語言的初學(xué)者,提供了大量基礎(chǔ)練習(xí),幫助初學(xué)者在較短的時間內(nèi)掌握牢固的基本編程技能。評測機(jī)的工作原理標(biāo)準(zhǔn)輸入文件標(biāo)準(zhǔn)輸入文件比對編譯可執(zhí)行文件用戶代碼執(zhí)行產(chǎn)生程序輸出監(jiān)控進(jìn)程監(jiān)控比對結(jié)果評測系統(tǒng)的工作流程1、編譯根據(jù)不同語言執(zhí)行不同的編譯命令,產(chǎn)生可執(zhí)行文件。3、運(yùn)行子進(jìn)程執(zhí)行子進(jìn)程,并且將子進(jìn)程的輸入輸出流重定向到文件,父進(jìn)程監(jiān)視執(zhí)行情況,對于超過限制、非法操作進(jìn)行強(qiáng)制kill操作。2、預(yù)處理準(zhǔn)備好標(biāo)準(zhǔn)輸入輸出文件,fork產(chǎn)生運(yùn)行子進(jìn)程,限制運(yùn)行時的內(nèi)存和CPU資源,限制敏感的系統(tǒng)調(diào)用。4、產(chǎn)生運(yùn)行結(jié)果傳統(tǒng)形式將會比較程序的輸出文件和標(biāo)準(zhǔn)輸出文件的差異,給出結(jié)果。specialjudge下調(diào)用自定義checker比對文件。評估的原理說明(兩個數(shù)的較大值)輸入預(yù)期輸出代碼輸出結(jié)果5
355?5
555?3
553?0
550?假設(shè)待評估的代碼始終把輸入的第一個數(shù)作為最大值,則評估的正確率為50%。評估結(jié)果取決于測試用例的設(shè)計。評估的正確率為100%并不意味著代碼不存在錯誤,只是表明當(dāng)前的測試用例沒有發(fā)現(xiàn)錯誤。#include<stdio.h>intmain(void){inta,b;scanf("%d%d",&a,&b);printf("%d\n",a);return0;}教材配套評估系統(tǒng):基于HustOJ構(gòu)建教材配套習(xí)題:競賽&作業(yè)小結(jié)學(xué)習(xí)好幫手:程序評測系統(tǒng)首次使用需要注冊登錄選擇菜單“競賽&作業(yè)”在編譯器運(yùn)行無誤后,提交代碼Ctrl+V粘貼代碼提交并查看結(jié)果不要在一道題上花費(fèi)過多時間!運(yùn)算和輸入輸出C語言程序設(shè)計商和余數(shù):三位數(shù)反轉(zhuǎn)三位數(shù)反轉(zhuǎn)題目:三位數(shù)反轉(zhuǎn)輸入一個三位數(shù),分離出它的百位、十位、個位。反轉(zhuǎn)后輸出。樣例輸入:127樣例輸出:721#include<stdio.h>intmain(){intn,a,b,c;scanf("%d",&n);a=n/100;b=n/10%10;c=n%10;printf("%d%d%d\n",c,b,a);return0;}結(jié)構(gòu)化程序的基本結(jié)構(gòu)順序結(jié)構(gòu)、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)余數(shù)運(yùn)算:%10保留個位數(shù)除法運(yùn)算:/10去除個位數(shù)變量只用一次可以省略(函數(shù)只用一次可以省略,匿名函數(shù))(對象只用一次可以省略,匿名對象)小結(jié)
商和余數(shù):三位數(shù)反轉(zhuǎn)
#include<stdio.h>intmain(){intn,a,b,c;scanf("%d",&n);a=n/100;b=n/10%10;c=n%10;printf("%d%d%d\n",c,b,a);return0;}運(yùn)算和輸入輸出主講:沈涵飛C語言程序設(shè)計浮點(diǎn)數(shù):計算圓的周長和面積計算圓的周長和面積#include<stdio.h>intmain(){
doubler,c,a;scanf("%lf",&r);c=2*3.142*r;a=3.142*r*r;printf("%.2f\n%.2f\n",c,a);return0;}根據(jù)圓的半徑求圓的周長和面積,π值保留3位小數(shù),為3.142。輸入是半徑,浮點(diǎn)數(shù)。輸出為周長和面積,結(jié)果保留2位小數(shù),分兩行輸出周長和面積。1.06.283.14符號常量:提高代碼質(zhì)量#include<stdio.h>intmain(){doubler,c,a;scanf("%lf",&r);c=2*3.142*r;a=3.142*r*r;printf("%.2f\n%.2f\n",c,a);return0;}#include<stdio.h>#definePI3.142intmain(){doubler,c,a;scanf("%lf",&r);c=2*PI*r;a=PI*r*r;printf("%.2f\n%.2f\n",c,a);return0;}
只讀變量:提高代碼質(zhì)量#include<stdio.h>intmain(){doubler,c,a;scanf("%lf",&r);c=2*3.142*r;a=3.142*r*r;printf("%.2f\n%.2f\n",c,a);return0;}#include<stdio.h>intmain(){doubler,c,a;
constdoublePI=3.142;scanf("%lf",&r);c=2*PI*r;a=PI*r*r;printf("%.2f\n%.2f\n",c,a);return0;}
變量名和注釋:增強(qiáng)可讀性#include<stdio.h>#definePI3.142intmain(){doubler,c,a;scanf("%lf",&r);c=2*PI*r;a=PI*r*r;printf("%.2f\n%.2f\n",c,a);return0;}#include<stdio.h>#definePI3.142intmain(){doubleradius;/*圓的半徑*/doublecircumference;/*圓的周長*/doublearea;/*圓的面積*/scanf("%lf",&radius);circumference=2*PI*radius;area=PI*radius*radius;printf("%.2f\n",circumference);printf("%.2f\n",area);return0;}兩種浮點(diǎn)數(shù):float和double使用不同的輸入占位符%f%lf通常:float
4個字節(jié),double
8個字節(jié)C語言庫函數(shù)默認(rèn)使用double浮點(diǎn)數(shù)是無法精確表示的符號常量或者只讀變量替代幻數(shù)PI,constdoublePI有意義的變量名和注釋改善了程序的可讀性小結(jié)
浮點(diǎn)數(shù):計算圓的周長和面積
#include<stdio.h>#definePI3.142intmain(){
doubler,c,a;scanf("%lf",&r);c=2*PI*r;a=PI*r*r;printf("%.2f\n%.2lf\n",c,a);return0;}運(yùn)算和輸入輸出主講:沈涵飛C語言程序設(shè)計字符和ASCII字符集字符是程序處理的重要內(nèi)容ManylaterlanguageshaveborroweddirectlyorindirectlyfromC,includingC++,D,Go,Rust,Java,JavaScript,Limbo,LPC,C#,Objective-C,Perl,PHP,Python,Verilog(hardwaredescriptionlanguage),andUnix’sCshell.ASCII二進(jìn)制編碼和字符之間的一一映射,可以使用文本編輯器直接打開ASCII是AmericanStandardCodeforInformationInterchange縮寫,也就是美國標(biāo)準(zhǔn)信息交換代碼,是由美國國家標(biāo)準(zhǔn)學(xué)會(AmericanNationalStandardInstitute,ANSI)制定的,標(biāo)準(zhǔn)的單字節(jié)字符編碼方案,用于基于文本的數(shù)據(jù)。字符的本質(zhì):縮減版的intcharc='A';printf("%c\n",c);printf("%d\n",c);printf("%o\n",c);printf("%x\n",c);printf("%c\n",c+1);putchar(c);putchar('\n');printf("%d%d\n",sizeof(char),sizeof(int));A6510141BA14字符是單字節(jié)類型,縮減版的int輸入輸出使用%c或者getchar\putcharscanf(“%c”,&c);c=getchar();F1:使用C-Free的幫助查看ASCII碼表小結(jié)
字符和ASCII字符集
charc='A';printf("%c\n",c);printf("%d\n",c);printf("%o\n",c);printf("%x\n",c);printf("%c\n",c+1);putchar(c);putchar('\n');運(yùn)算和輸入輸出主講:沈涵飛C語言程序設(shè)計強(qiáng)大、經(jīng)典的scanf和printfprintf:轉(zhuǎn)義符CLanguageSimpleUsefulGraceful#include<stdio.h>intmain(intargc,char*argv[]){printf("CLanguage\n");printf("Simple\n");printf("Useful\n");printf("Graceful\n");return0;}printf:轉(zhuǎn)義符編程語言擁有轉(zhuǎn)義字符的原因基本上是兩點(diǎn):1)使用轉(zhuǎn)義字符來ASCll里面的控制字符及回車換行等字符,這些字符都沒有現(xiàn)成的文字代號,在鍵盤上找不到相應(yīng)的輸入。2)某一些特定的字符在編程語言中被定義為特殊用途的字符。printf:其他用法#include<stdio.h>intmain(){printf("Baconsaid:\"Knowledgeispower.\"\n");printf("Theonlytruewisdomis" "inknowingyouknownothing.\n");return0;}Baconsaid:"Knowledgeispower."Theonlytruewisdomisinknowingyouknownothing.printf:占位符#include<stdio.h>intmain(){printf("CLanguage:%s,%s,%s\n","Simple","Useful","Graceful");return0;}#include<stdio.h>intmain(){printf("Mynameis%s\n","Eric");return0;}printf:更有用的例子/*輸出計算結(jié)果,保留3位小數(shù)按照一定格式輸出年月日2015-03-12*/#include<stdio.h>intmain(){printf("Theresultis%.3f\n",3.14159);printf("todayis%d-%02d-%02d\n",2015,3,12);return0;}scanf:從標(biāo)準(zhǔn)輸入讀取數(shù)據(jù)/*三位數(shù)反轉(zhuǎn)*/#include<stdio.h>intmain(){inta,b,c;scanf("%1d%1d%1d",&a,&b,&c);printf("%d%d%d\n",c,b,a);return0;}scanf:從輸入中提取數(shù)據(jù)/*輸入:
todayis2015-3-12*/#include<stdio.h>intmain(){inty,m,d;scanf("todayis%d-%d-%d",&y,&m,&d);printf("%d%d%d\n",y,m,d);return0;}scanf的兄弟姐妹:sscanf和fscanf#include<stdio.h>intmain(){inty,m,d;sscanf("todayis2015-3-12","todayis%d-%d-%d",&y,&m,&d);printf("%d%d%d\n",y,m,d);printf("todayis%4d-%02d-%02d\n",y,m,d);return0;}常用的三種來源:標(biāo)準(zhǔn)輸入(鍵盤),字符串和文件對應(yīng)的輸入函數(shù):scanf,sscanf,fscanf轉(zhuǎn)義符\n\”占位符:%d%c%f%sscanf和printf還有兄弟姐妹scanf:sscanf,fscanfprintf:sprintf,fprintf經(jīng)典:在其他編程語言中,往往有scanf和printf的身影占位符體現(xiàn)了重要的編程思想:計算和輸出相分離小結(jié)強(qiáng)大、經(jīng)典的scanf和printf
運(yùn)算和輸入輸出主講:沈涵飛C語言程序設(shè)計字符和ASCII字符集字符是程序處理的重要內(nèi)容ManylaterlanguageshaveborroweddirectlyorindirectlyfromC,includingC++,D,Go,Rust,Java,JavaScript,Limbo,LPC,C#,Objective-C,Perl,PHP,Python,Verilog(hardwaredescriptionlanguage),andUnix’sCshell.ASCII二進(jìn)制編碼和字符之間的一一映射,可以使用文本編輯器直接打開ASCII是AmericanStandardCodeforInformationInterchange縮寫,也就是美國標(biāo)準(zhǔn)信息交換代碼,是由美國國家標(biāo)準(zhǔn)學(xué)會(AmericanNationalStandardInstitute,ANSI)制定的,標(biāo)準(zhǔn)的單字節(jié)字符編碼方案,用于基于文本的數(shù)據(jù)。美國信息交換用標(biāo)準(zhǔn)代碼(AmericanStandardCodeforInformationInterchange)字符的本質(zhì):縮減版的intcharc='A';printf("%c\n",c);printf("%d\n",c);printf("%o\n",c);printf("%x\n",c);printf("%c\n",c+1);putchar(c);putchar('\n');printf("%d%d\n",sizeof(char),sizeof(int));A6510141BA14字符類型char字符常量的表示:‘字符’,例如:’=’(61)、’,’(44)、’‘(32)、’a’(97)、’A’(65)、’0’(48)字符變量#include<stdio.h>intmain(void){chara;inti;a='a';printf("%d\n",a-32);printf("%c\n",a-32);for(i=0;i<26;i++)printf("%c",a+i);return0;}字符是單字節(jié)類型,縮減版的int輸入輸出使用%c或者getchar\putcharscanf(“%c”,&c);c=getchar();F1:使用C-Free的幫助查看ASCII碼表小結(jié)
字符和ASCII字符集
charc='A';printf("%c\n",c);printf("%d\n",c);printf("%o\n",c);printf("%x\n",c);printf("%c\n",c+1);putchar(c);putchar('\n');運(yùn)算和輸入輸出主講:沈涵飛C語言程序設(shè)計在命令行編譯和運(yùn)行程序命令行界面CLI命令行界面(英語:command-lineinterface,縮寫:CLI)是在圖形用戶界面得到普及之前使用最為廣泛的用戶界面,它通常不支持鼠標(biāo),用戶通過鍵盤輸入指令,計算機(jī)接收到指令后,予以執(zhí)行。命令行界面(CLI)沒有圖形用戶界面(GUI)那么方便用戶操作。命令行界面的軟件需要用戶記憶操作的命令,但命令行界面要較圖形用戶界面節(jié)約計算機(jī)系統(tǒng)的資源。在熟記命令的前提下,使用命令行界面往往要較使用圖形用戶界面的操作速度要快。所以,在現(xiàn)在的圖形用戶界面的操作系統(tǒng)中,通常都保留著可選的命令行界面。在服務(wù)器應(yīng)用領(lǐng)域,命令行優(yōu)勢明顯。命令行有利于自動化運(yùn)維。命令行優(yōu)勢:節(jié)約資源、自動化運(yùn)維C-Free是一個IDE,使用了開源的編譯器MinGW
IDE,IntegratedDevelopmentEnvironment,集成開發(fā)環(huán)境MinGW(MinimalistGNUforWindows)將GCC編譯器和GNUBinutils移植到Windows平臺下的產(chǎn)物環(huán)境配置在某些情況下很復(fù)雜,但至少掌握在命令行運(yùn)行程序小結(jié)在命令行編譯和運(yùn)行程序
運(yùn)算和輸入輸出主講:沈涵飛C語言程序設(shè)計文件、I/O重定向和管道一切都是文件Linux/UNIX將外圍設(shè)備抽象成文件進(jìn)行統(tǒng)一處理。鍵盤、顯示器、硬盤、以太網(wǎng)卡、目錄都是文件。文件本質(zhì)上就是一串?dāng)?shù)據(jù)流。通過內(nèi)容區(qū)分文件類型是留給應(yīng)用程序的任務(wù)。執(zhí)行一個shell命令行時通常會自動打開三個標(biāo)準(zhǔn)文件:標(biāo)準(zhǔn)輸入文件(stdin),通常對應(yīng)終端的鍵盤;標(biāo)準(zhǔn)輸出文件(stdout)和標(biāo)準(zhǔn)錯誤輸出文件(stderr),這兩個文件都對應(yīng)終端的屏幕。進(jìn)程將從標(biāo)準(zhǔn)輸入文件中得到輸入數(shù)據(jù),將正常輸出數(shù)據(jù)輸出到標(biāo)準(zhǔn)輸出文件,而將錯誤信息送到標(biāo)準(zhǔn)錯誤文件中。管道:連接多個的程序管道(英語:Pipeline):即是一個由標(biāo)準(zhǔn)輸入輸出鏈接起來的進(jìn)程集合,每一個進(jìn)程的輸出(stdout)被直接作為下一個進(jìn)程的輸入(stdin)。管道的概念以及垂直線的記號(|)都是由道格拉斯·麥克羅伊發(fā)明的,他是早期命令行Shell的作者。他發(fā)現(xiàn)他常常將一個程序的輸出作為另一個程序的輸入,于是便發(fā)明了“管道。他的想法在1973年被實現(xiàn),KenThompson將管道添加到了UNIX操作系統(tǒng)。這個點(diǎn)子最終被移植到了其他的操作系統(tǒng),比如DOS、OS/2、MicrosoftWindows和BeOS,而且常常使用相同的記號(垂直線)。文件:對I/O的最簡抽象,一切皆是字節(jié)流I/O重定向:輸入<輸出>輸入重定向:將輸入文件放到程序的標(biāo)準(zhǔn)輸入輸出重定向:將程序輸出保存到文件中管道:提供了一種充分利用已有程序的機(jī)制
echo34|aplusb|sqr小結(jié)文件、I/O重定向和管道
分支結(jié)構(gòu)C語言程序設(shè)計if語句的三種基本形式求兩個整數(shù)的較大值求兩個整數(shù)的較大值輸入:兩個整數(shù)輸出:較大的整數(shù)輸入示例:35輸出示例:5#include<stdio.h>intmain(){inta,b,max;scanf("%d%d",&a,&b);
max=a;if(b>max){max=b;}printf("%d\n",max);return0;}基本結(jié)構(gòu)1真(非0)假(0)#include<stdio.h>intmain(){inta,b,max;scanf("%d%d",&a,&b);max=a;
if(b>max){max=b;}printf("%d\n",max);return0;}表達(dá)式語句基本結(jié)構(gòu)2真假表達(dá)式#include<stdio.h>intmain(){inta,b,max;scanf("%d%d",&a,&b);if(a>b){ max=a;}else{ max=b;}printf("%d\n",max);return0;}語句1語句2max=(a>b)?a:b;條件決定了是
a還是
b
簡單分段函數(shù)的求值intx,y;scanf("%d",&x);if(x<1){y=x;}elseif(x<10){y=2*x-1;}else{y=3*x-11;}printf("%d\n",y);分段函數(shù)如下:x(x<1)y=2x-1(1<=x<10)3x-11(x>=10)輸入:x
(整數(shù)),輸出:
y示例輸入:4示例輸出:7基本結(jié)構(gòu)3/*分段函數(shù)*/
intx,y;scanf("%d",&x);if(x<1){y=x;}elseif(x<10){y=2*x-1;}else{y=3*x-11;}printf("%d\n",y);表達(dá)式1表達(dá)式4表達(dá)式3表達(dá)式2語句1語句2語句3語句4語句5假假假假真真真真123三種基本結(jié)構(gòu):單分支、兩個分支、多分支使用{}來界定多個語句,形成復(fù)合語句復(fù)合語句也稱為語句塊或程序塊復(fù)合語句語法上等同于單條語句語句塊中只有一個語句,大括號可省略兩個分支的if語句可以使用條件運(yùn)算符?:max=(a>b)?a:b條件決定了是
a還是
b
intx,y;scanf("%d",&x);if(x<1)y=x;elseif(x<10)y=2*x-1;elsey=3*x-11;printf("%d\n",y);小結(jié)
if語句的三種基本形式
分支結(jié)構(gòu)主講:沈涵飛C語言程序設(shè)計語法錯誤和邏輯錯誤簡單分段函數(shù)的求值分段函數(shù)如下:x(x<1)y=2x-1(1<=x<10)3x-11(x>=10)輸入:x
(整數(shù)),輸出:
y示例輸入:4示例輸出:7#include<stdio.h>intmain(){intx,y;scanf("%d",&x);if(x<1)y=x;if(1<=x<10)y=2*x-1;if(x>=10)y=3*x-11;printf("%d\n",y);return0;}錯在哪里?語法錯誤or邏輯錯誤#include<stdio.h>intmain(){intx,y;scanf("%d",&x);if(x<1)y=x;if(1<=x<10)y=2*x-1;if(x>=10)y=3*x-11;printf("%d\n",y);return0;}if(x>=1&&x<10)語法錯誤
初學(xué)者出現(xiàn)最多的錯誤,比如,分號“;”是每個語句的結(jié)束的標(biāo)志,在語句后忘記寫“;”發(fā)生語法錯誤的程序,編譯通不過,用戶可以根據(jù)軟件的提示信息來修改。邏輯錯誤
運(yùn)算符使用不正確、語句的先后順序不對、條件語句的邊界值不正確、循環(huán)語句的的初值與終值有誤等。程序能編譯通過,但運(yùn)行結(jié)果不正確。需要程序設(shè)計者細(xì)心地分析閱讀程序,并具有程序調(diào)試經(jīng)驗要重視代碼的測試注意積累常見的錯誤情況關(guān)系運(yùn)算的值:1或0小結(jié)
語法錯誤和邏輯錯誤
#include<stdio.h>intmain(){intx,y;scanf("%d",&x);if(x<1)y=x;if(1<=x<10)y=2*x-1;if(x>=10)y=3*x-11;printf("%d\n",y);return0;}if(x>=1&&x<10)分支結(jié)構(gòu)主講:沈涵飛C語言程序設(shè)計多路分支switch-case-break字符釋義字符釋義任務(wù)1
從鍵盤輸入一個字符,當(dāng)輸入的字符為“y”或“n”或“c”時,分別顯示“Yes”、“No”、“Cancel”,輸入其他字符時顯示“Illegal!”。任務(wù)2
從鍵盤輸入一個字符,當(dāng)輸入的字符為“Y”或“y”、“N”或“n”、”C”或“c”時,也就是說不區(qū)分大小寫,分別顯示“Yes”、“No”、“Cancel”,輸入其他字符時顯示“Illegal!”。switch-case-break是整體分支沒有break則順序執(zhí)行使用模板來寫語句使用switch語句更強(qiáng)調(diào)語義:并列,互斥完全可以使用if語句替代各個分支結(jié)構(gòu)之間是互斥關(guān)系x<60,x>=60&&x<75建議:將輸出保存到變量,然后統(tǒng)一輸出小結(jié)
switch-case-break
switch(c){case'y':case'Y':printf("Yes\n");break;case'n':case'N':printf("No\n");break;case'c':case'C':printf("Cancel\n");break;default:printf("Illegal!\n");break;}分支結(jié)構(gòu)主講:沈涵飛C語言程序設(shè)計運(yùn)算符和優(yōu)先級C語言中的運(yùn)算符運(yùn)算符說明算術(shù)運(yùn)算符包括加(+)、減(-)、乘(*)、除(/)、求余(或稱模運(yùn)算,%)、自增(++)、自減(--)共七種關(guān)系運(yùn)算符包括大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)和不等于(!=)六種邏輯運(yùn)算符用于邏輯運(yùn)算。包括與(&&)、或(||)、非(!)三種位操作運(yùn)算符按二進(jìn)制位進(jìn)行運(yùn)算。包括位與(&)、位或(|)、位非(~)、位異或(^)、左移(<<)、右移(>>)六種賦值運(yùn)算符分為簡單賦值(=)、復(fù)合算術(shù)賦值(+=,-=,*=,/=,%=)和復(fù)合位運(yùn)算賦值(&=,|=,^=,>>=,<<=)三類共十一種條件運(yùn)算符這是一個三目運(yùn)算符,用于條件求值(?:)逗號運(yùn)算符用于把若干表達(dá)式組合成一個表達(dá)式(,)指針運(yùn)算符用于取內(nèi)容(*)和取地址(&)二種運(yùn)算求字節(jié)數(shù)運(yùn)算符用于計算數(shù)據(jù)類型所占的字節(jié)數(shù)(sizeof)特殊運(yùn)算符有括號(),下標(biāo)[],成員(->,.)等幾種
C語言中的運(yùn)算符運(yùn)算符說明算術(shù)運(yùn)算符自增(++)、自減(--)
i++;(后綴后移)
++i;(i=i+1)
前綴改寫關(guān)系運(yùn)算符if(x>3)關(guān)系表達(dá)式的值:1
或0邏輯運(yùn)算符if(x>2+1&&x<=10)非零為真,零為假位操作運(yùn)算符按二進(jìn)制位進(jìn)行運(yùn)算賦值運(yùn)算符a
=a+5;可以寫成a+=5;條件運(yùn)算符三目運(yùn)算符,等同于兩個分支的if語句max=(a>b)?a:b逗號運(yùn)算符在很多編程語言中沒有逗號運(yùn)算符指針運(yùn)算符用于取內(nèi)容(*)和取地址(&)二種運(yùn)算求字節(jié)數(shù)運(yùn)算符用于計算數(shù)據(jù)類型所占的字節(jié)數(shù)(sizeof)特殊運(yùn)算符有括號(),下標(biāo)[],成員(->,.)等幾種
?。ǚ牵┧阈g(shù)運(yùn)算符關(guān)系運(yùn)算符&&|
|賦值運(yùn)算符先后結(jié)合性:左結(jié)合or右結(jié)合運(yùn)算符的結(jié)合性分為兩種:左結(jié)合性(自左至右)和右結(jié)合性(自右至左)。左結(jié)合性x-y+z的計算:y應(yīng)先與“-”號結(jié)合,執(zhí)行x-y運(yùn)算,然后再執(zhí)行+z的運(yùn)算。右結(jié)合性x=y=1的執(zhí)行:先執(zhí)行y=1再執(zhí)行x=(y=1)運(yùn)算。a>b?a:c>d?c:d;左結(jié)合右結(jié)合a>b?a:(c>d?c:d);自增自減運(yùn)算符++i;前綴改寫i=i+1;i++;后綴后移i;i=i+1;本質(zhì):先賦值or先加#include<stdio.h>intmain(){inti;i=5;printf("%d",++i);printf("%d",i++);i=5;printf("%d",i=i+1);printf("%d",i);i=i+1;return0;}6666運(yùn)算符不僅具有優(yōu)先級,還有結(jié)合性關(guān)系表達(dá)式的值用1和0表示C語言中的邏輯運(yùn)算:非零為真,零為假在不確定優(yōu)先級的情況下,使用括號自增自減運(yùn)算:前綴改寫,后綴后移三元運(yùn)算符,讓代碼更簡潔?:是,還是小結(jié)
運(yùn)算符和優(yōu)先級
運(yùn)算符說明算術(shù)運(yùn)算符
i++;(后綴后移)
++i;(i=i+1)
前綴改寫關(guān)系運(yùn)算符if(x>3)關(guān)系表達(dá)式的值:1
或0邏輯運(yùn)算符if(x>3&&x<=10)非零為真,零為假賦值運(yùn)算符a
=a+5;可以寫成a+=5;條件運(yùn)算符三目運(yùn)算符,max=(a>b)?a:b逗號運(yùn)算符在很多編程語言中沒有逗號運(yùn)算符分支結(jié)構(gòu)主講:沈涵飛C語言程序設(shè)計代碼格式化:讓代碼清晰易讀C-Free5集成了代碼格式化開源工具AstyleC-Free4需要自己定制使用代碼格式化建議:使用k/r模式,【工具】->【工具配置】->C/C++代碼格式化->參數(shù)必須保存好文件文件名和所在文件夾全部為英文字符:d:\code\P1302.cppC-Free的小Bug:有時不起作用,插入些無關(guān)的空格再試試小結(jié)
代碼格式化:讓代碼清晰易讀
#include<stdio.h>intmain(){intx,y;scanf("%d",&x);if(x<1)y=x;elseif(x<10)y=2*x-1;elsey=3*x-11;printf("%d\n",y);return0;}兩個整數(shù)的之和(A+B問題)#include<stdio.h>intmain(void){inta,b,z;scanf("%d%d",&a,&b);z=a+b;printf("%d\n",z);return0;}兩個整數(shù)的之和->三個整數(shù)之和#include<stdio.h>intmain(void){inta,b,z;scanf("%d%d",&a,&b);z=a+b;printf("%d\n",z);return0;}#include<stdio.h>intmain(void){inta,b,c,z;scanf("%d%d%d",&a,&b,&c);z=a+b+c;printf("%d\n",z);return0;}三個整數(shù)的之和->三個整數(shù)的平均數(shù)#include<stdio.h>intmain(void){inta,b,c,z;scanf("%d%d%d",&a,&b,&c);z=a+b+c;printf("%d\n",z);return0;}#include<stdio.h>intmain(void){inta,b,c;
doublez;scanf("%d%d%d",&a,&b,&c);z=(a+b+c)/3.0;printf("%.3lf\n",z);return0;}兩個整數(shù)的之和->兩個浮點(diǎn)數(shù)之和#include<stdio.h>intmain(void){inta,b,z;scanf("%d%d",&a,&b);z=a+b;printf("%d\n",z);return0;}#include<stdio.h>intmain(void){
doublea,b,z;scanf("%lf%lf",&a,&b);z=a+b;printf("%.3lf\n",z);return0;}兩個浮點(diǎn)數(shù)之和->三個浮點(diǎn)數(shù)之和#include<stdio.h>intmain(void){doublea,b,z;scanf("%lf%lf",&a,&b);z=a+b;printf("%.3lf\n",z);return0;}#include<stdio.h>intmain(void){doublea,b,c,z;scanf("%lf%lf%lf",&a,&b,&c);z=a+b+c;printf("%.3lf\n",z);return0;}三個浮點(diǎn)數(shù)之和->三個整數(shù)的平均數(shù)#include<stdio.h>intmain(void){doublea,b,c,z;scanf("%lf%lf%lf",&a,&b,&c);z=a+b+c;printf("%.3lf\n",z);return0;}#include<stdio.h>intmain(void){doublea,b,c,z;scanf("%lf%lf%lf",&a,&b,&c);z=(a+b+c)/3;printf("%.3lf\n",z);return0;}循環(huán)結(jié)構(gòu)C語言程序設(shè)計最簡單的循環(huán):簡單重復(fù)被罰抄100遍的小明小明上課不認(rèn)真聽講,在課堂上玩起了手機(jī)游戲,被老師發(fā)現(xiàn)了,被要求抄寫"goodgoodstudy,daydayup"一百遍。小明臨機(jī)一動,問老師,可不可以用電腦來寫,然后發(fā)郵件給老師。老師答應(yīng)了小明的請求。小明利用程序設(shè)計學(xué)過的內(nèi)容,很快就寫出來了100行的“goodgoodstudy,daydayup”。輸出:100行"goodgoodstudy,daydayup"先編寫單次操作的代碼簡單重復(fù)循環(huán)變量不出現(xiàn)在單次操作的代碼中重復(fù)100次:for(i=0;i<100;i++)for(i=1;i<=100;i++)也是可以的循環(huán)變量常常使用i,j,k測試技巧:驗證較小情況下的結(jié)果#include<stdio.h>intmain(intargc,char*argv[]){inti;for(i=0;i<100;i++){printf("goodgoodstudy,daydayup\n");}return0;}小結(jié)
最簡單的循環(huán):簡單重復(fù)
循環(huán)結(jié)構(gòu)主講:沈涵飛C語言程序設(shè)計循環(huán)表示序列:求1~100之和intsum=0;sum=sum+1;sum=sum+2;sum=sum+3;123sumintsum=0;sum+=1;sum+=2;sum+=3;加法復(fù)合賦值運(yùn)算符sum=0;sum=sum+1;sum=sum+2;......sum=sum+100;sum=0;i[1…100]sum=sum+i;sum=0;for(i=1;i<=100;i++){sum=sum+i;}
計算1+2+……+100之和[0,1,2,…,9]for(i=0;i<=9;i++)[0,1,2,…,n-1]for(i=0;i<n;i++)[n-1,…,1,0]for(i=n-1;i>=0;i--)[1,2,…,n]for(i=1;i<=n;i++)[1,2,3,4……for(i=1;;i++)小于n的奇數(shù)for(i=1;i<n;i=i+2)for循環(huán)表示序列循環(huán)結(jié)構(gòu)主講:沈涵飛C語言程序設(shè)計循環(huán)表示序列:水仙花數(shù)水仙花數(shù)是指一個三位數(shù),其各位數(shù)字立方和等于該本身。例:153是一個水仙花數(shù),因為13+53+33
=1+125+27=153。水仙花數(shù)共有4個,請編寫程序,輸出這4個水仙花數(shù),每行一個。水仙花數(shù)#include<stdio.h>intmain(){inti,a,b,c;i=153;a=i/100;b=i/10%10;c=i%10;if(i==a*a*a+b*b*b+c*c*c)printf("%d\n",i);return0;}復(fù)合語句(程序塊、語句塊)#include<stdio.h>intmain(){inti,a,b,c;
for(i=100;i<=999;i++){
a=i/100;b=i/10%10;c=i%10;if(i==a*a*a+b*b*b+c*c*c)printf("%d\n",i);}return0;}對序列1…100中的每個數(shù)挨個判斷水仙花數(shù):從單個數(shù)到一個序列先編寫好單次操作的代碼可以添加代碼,輸出中間結(jié)果確定序列,改寫成for循環(huán)勿忘初始化變量#include<stdio.h>intmain(){inti,sum;
sum=0;
for(i=1;i<=100;i++){sum=sum+i;}return0;}小結(jié)循環(huán)表示序列:水仙花數(shù)主講:沈涵飛C語言程序設(shè)計循環(huán)結(jié)構(gòu)三種基本循環(huán)結(jié)構(gòu)及運(yùn)行流程求1~100的和sum=0;sum=sum+1;sum=sum+2;......sum=sum+100;sum=0;i[1…100]sum=sum+i;sum=0;for(i=1;i<=100;i++){sum=sum+i;}
計算1+2+……+100之和for和while的相互轉(zhuǎn)換inti,sum=0;for(i=1;i<=100;i++){sum=sum+i;}printf("%d\n",sum);inti,sum=0;i=1;for(;i<=100;){sum=sum+i;i++;}printf("%d\n",sum);inti,sum=0;i=1;while(i<=100){sum=sum+i;i++;}printf("%d\n",sum);
for/while和do-whileinti,sum=0;for(i=1;i<=100;i++){sum=sum+i;}printf("%d\n",sum);inti,sum=0;i=1;while(i<=100){sum=sum+i;i++;}printf("%d\n",sum);inti,sum=0;i=1;do{sum=sum+i;i++;}while(i<=100);printf("%d\n",sum);forwhiledowhile等價差不多for/
while和do-whileinti,sum=0;i=101;while(i<=100){sum=sum+i;i++;}printf("%d\n",sum);inti,sum=0;i=101;do{sum=sum+i;i++;}while(i<=100);printf("%d\n",sum);whiledowhile至少執(zhí)行一次while語句運(yùn)行流程i<=100YNsum=sum+ii=i+1sum=0,i=1inti,sum=0;i=1;while(i<=100){sum=sum+i;i++;}printf("%d\n",sum);dowhile語句運(yùn)行流程i<=100YNsum=sum+ii=i+1sum=0,i=1inti,sum=0;i=1;do{sum=sum+i;i++;}while(i<=100);printf("%d\n",sum);小結(jié)for
while和do-whileinti,sum=0;for(i=1;i<=100;i++){sum=sum+i;}printf("%d\n",sum);inti,sum=0;i=1;while(i<=100){sum=sum+i;i++;}printf("%d\n",sum);inti,sum=0;i=1;do{sum=sum+i;i++;}while(i<=100);printf("%d\n",sum);forwhiledowhile等價差不多至少執(zhí)行一次主講:沈涵飛C語言程序設(shè)計循環(huán)結(jié)構(gòu)while循環(huán):3n+1問題3n+1問題猜想:對于任意大于1的自然數(shù),若n為奇數(shù),則將n變?yōu)?n+1,否則變?yōu)閚的一半。經(jīng)過若干次這樣的變換,一定會使n變?yōu)?。例如3→10→5→16→8→4→2→1。輸入n,輸出變換的次數(shù)。樣例輸入:3
樣例輸出:73n+1問題猜想:對于任意大于1的自然數(shù),若n為奇數(shù),則將n變?yōu)?n+1,否則變?yōu)閚的一半。經(jīng)過若干次這樣的變換,一定會使n變?yōu)?。例如3→10→5→16→8→4→2→1。輸入n,輸出變換的次數(shù)。樣例輸入:3
樣例輸出:7#include<stdio.h>intmain(){intn,c=0;scanf("%d",&n);while(n>1){if(n%2==1)n=3*n+1;elsen=n/2;c++;}printf("%d\n",c);return0;}計數(shù)器counter小結(jié)while循環(huán):3n+1問題for循環(huán):表示序列,多重循環(huán)while:其他情況for循環(huán)未必表示序列do-while:至少執(zhí)行一次,迭代for(i=1;i<=100;i++)sum=sum+i;while(n>1){n=(n%2==1)?3*n+1:n/2;c++;}for(c=0;n>1;c++)n=(n%2==1)?3*n+1:n/2;主講:沈涵飛C語言程序設(shè)計循環(huán)結(jié)構(gòu)do-while循環(huán)迭代法求平方根迭代法迭代法也稱輾轉(zhuǎn)法,是一種不斷用變量的舊值遞推新值的過程,跟迭代法相對應(yīng)的是直接法,即一次性解決問題。迭代法又分為精確迭代和近似迭代。“二分法”和“牛頓迭代法”屬于近似迭代法。迭代法是用計算機(jī)解決問題的一種基本方法。它利用計算機(jī)運(yùn)算速度快、適合做重復(fù)性操作的特點(diǎn),讓計算機(jī)對一組指令(或一定步驟)進(jìn)行重復(fù)執(zhí)行,在每次執(zhí)行這組指令(或這些步驟)時,都從變量的原值推出它的一個新值。計算15的平方根xy=1.001.0000008.0000008.0000004.9375004.9375003.9877373.9877373.8746343.8746343.8729843.8729843.8729833.8729833.872983iter3.87298335sqrt3.87298335牛頓法迭代求平方根對于給定的正數(shù)
,應(yīng)用牛頓法解二次方程可導(dǎo)出求開方值的計算程序這種迭代公式對于任意初值都是收斂的
doubleC,x,y=1;C=15;do{x=y;
y=(x+C/x)/2;}while(fabs(x-y)>1E-8);printf("%.8f\n",y);牛頓法迭代求平方根#include<stdio.h>#include<math.h>intmain(){doubleC=15,x,y=1;do{x=y;y=(x+C/x)/2;
printf("%f%f\n",x,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 老年糖尿病患者多重用藥的真實世界研究
- 真空冶煉工班組建設(shè)考核試卷含答案
- 我國上市公司現(xiàn)金持有量決定因素的實證剖析:理論、模型與策略
- 我國上市公司控股股東掏空行為剖析與治理路徑探究
- 水族造景工誠信模擬考核試卷含答案
- 老年糖尿病β細(xì)胞自噬特點(diǎn)與個體化治療策略
- 碳排放管理員創(chuàng)新應(yīng)用評優(yōu)考核試卷含答案
- 出版物發(fā)行員變革管理考核試卷含答案
- 粗鎢酸鈉溶液制備工操作強(qiáng)化考核試卷含答案
- 2026內(nèi)蒙古鄂爾多斯市城投商業(yè)運(yùn)營管理有限公司招聘46人備考題庫及參考答案詳解1套
- 2019-2020學(xué)年貴州省貴陽市八年級下學(xué)期期末考試物理試卷及答案解析
- 培訓(xùn)機(jī)構(gòu)轉(zhuǎn)課協(xié)議
- 河道治理、拓寬工程 投標(biāo)方案(技術(shù)方案)
- 創(chuàng)客教室建設(shè)方案
- 政治審查表(模板)
- (完整版)南京市房屋租賃合同
- 《最奇妙的蛋》完整版
- SEMI S1-1107原版完整文檔
- 內(nèi)蒙古衛(wèi)生健康委員會綜合保障中心公開招聘8人模擬預(yù)測(共1000題)筆試備考題庫及答案解析
- 2023年中級財務(wù)會計各章作業(yè)練習(xí)題
- 金屬罐三片罐成型方法與罐型
評論
0/150
提交評論