版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
PAGE課題項目一課程準備課型講練授課班級授課時數(shù)2教學目標初步熟悉C語言程序開發(fā)過程和VisualC++開發(fā)程序的步驟理解語句的概念掌握C語言程序和C函數(shù)(包括主函數(shù))的結(jié)構(gòu)教學重點掌握C語言程序和C函數(shù)(包括主函數(shù))的結(jié)構(gòu)教學難點“程序”概念的理解;程序設計過程的掌握;學情分析高中畢業(yè)的大部分學生對程序設計比較生疏,沒有形成概念,因而重點是語法知識的理解掌握,首次上課顯得尤其重要,盡可能多地引起學生的學習興趣,為日后的學習打下良基。教學效果教后記課程準備模塊一:課程介紹中國慕課注冊中國慕課比例(40%),平時分數(shù)(20%),期末(40%)學習方法,課前預習教學內(nèi)容,課中學習,課后復習模塊二:新課講授[學習目標]知識目標:初步熟悉C語言程序開發(fā)過程和VisualC++開發(fā)程序的步驟理解語句的概念掌握C語言程序和C函數(shù)(包括主函數(shù))的結(jié)構(gòu)能力目標:能夠初步對C語言程序進行調(diào)試任務1.1 計算機語言介紹1.1.1計算機語言發(fā)展人與人之間的交流需要通過語言。人和計算機交流信息也需要語言解決問題。計算機語言(ComputerLanguage)指用于人與計算機之間通訊的語言,是人與計算機之間傳遞信息的媒介。計算機系統(tǒng)最重要的特征之一是通過一種語言發(fā)出指令傳達給機器。計算機語言經(jīng)歷了以下幾個發(fā)展階段。機器語言人們通過編寫“0”、“1”這樣的二進制數(shù)字串去控制電腦,其實就是控制計算機硬件的高低電平或通路開路,每一操作碼在計算機內(nèi)部都有相應的電路來完成它。計算機只能識別和接受由0和1組成二進制代碼,這類由計算機能直接識別和執(zhí)行的一種機器指令的集合稱為機器指令(machineinstruction)。機器指令的集合就是該計算機的機器語言。一般計算機的指令長度為16,即以16個0和1組成的各種排列組合,例如,1100110000000001。這種計算機能直接識別和接受的二進制代碼稱為機器指令。機器指令的集合,就是該計算機的機器語言。匯編語言一種用于電子計算機、微處理器、微控制器或其他可編程器件的低級語言,亦稱為符號語言。在匯編語言中,用助記符(Mnemonics)代替機器指令的操作碼,用地址符號(Symbol)或標號(Label)代替指令或操作數(shù)的地址。程序員用匯編語言寫出源程序,再用匯編編譯器將其編譯為機器碼,由計算機最終執(zhí)行。匯編語言編寫程序的過程如圖1-1所示。圖1-1匯編語言編寫程序的過程雖然匯編語言筆記氣源簡單,好記一些。但仍然難以普及,不同型號的計算機的機器語言和匯編源是互不通用的。高級語言是獨立于機器,面向過程或?qū)ο蟮木幊陶Z言,與低級語言相對。它是以人類的日常語言為基礎的一種編程語言,使用一般人易于接受的文字來表示(例如漢字、不規(guī)則英文或其他外語),從而使程序編寫員編寫更容易,亦有較高的可讀性。20世紀50年代創(chuàng)造出了第一個計算機高級語言-FORTRAN語言,目前的高級語言有Java,C,C++,C#,Pascal,Python等。計算機是不能直接識別高級語言程序的,也要進行翻譯用一種稱為編譯程序的軟件把高級語言寫的程序(也稱為源程序)轉(zhuǎn)換為機器指令的程序(稱為目標程序),然后讓計算機執(zhí)行機器指令程序,最后得到結(jié)果。高級語言經(jīng)歷了非結(jié)構(gòu)化的語言、結(jié)構(gòu)化的語言、面向?qū)ο蟮恼Z言三個階段。非結(jié)構(gòu)化語言編程比較隨意,只要符合語法規(guī)則即可,程序中可以隨意跳轉(zhuǎn),導致程序很難閱讀及維護。比如BASIC,F(xiàn)ORTRAN等結(jié)構(gòu)化的語言程序必須由良好特性的基本結(jié)構(gòu)構(gòu)成,不允許隨意跳轉(zhuǎn),程序從上到下順序執(zhí)行各個基本結(jié)構(gòu)。比如QBASIC等。面向?qū)ο蟮恼Z言是一類以對象作為基本程序結(jié)構(gòu)單位的程序設計語言,語言中提供了類、繼承等成分。1.1.2C語言介紹C語言是20世紀70年代初由美國貝爾實驗室在B語言的基礎上發(fā)展起來的,它保持了B語言精練、接近硬件的特點,又改進了B語言過于簡單的缺點。在C語言的基礎上,貝爾實驗室在1983年推出了C++。C++進一步擴展和完善了C語言,成為一種面向?qū)ο蟮某绦蛟O計語言。C語言的主要特點如下:(1)C語言簡潔、緊湊,使用方便靈活。標準C語言(ANSIC.只有32個關鍵字,9種控制語句。書寫形式自由,一行可以書寫多條語句,一個語句也可以寫在不同行上。(2)運算符豐富共有34種運算符,可以實現(xiàn)其它高級語言中難以實現(xiàn)的運算(3)數(shù)據(jù)類型豐富C語言具有現(xiàn)代化語言的各種數(shù)據(jù)類型;用戶能自己擴充數(shù)據(jù)類型,實現(xiàn)各種復雜的數(shù)據(jù)結(jié)構(gòu),完成用于具體問題的數(shù)據(jù)描述。(4)以函數(shù)作為模塊單位C語言是一種結(jié)構(gòu)化語言。C語言的主要成分是函數(shù)。函數(shù)是C語言程序的基本結(jié)構(gòu)模塊,程序可以由不同功能的函數(shù)有機組裝而成,從而可以達到結(jié)構(gòu)化程序設計中模塊的要求。另外,C語言提供了3種基本結(jié)構(gòu)(順序、選擇、循環(huán)),使程序流程具有良好的結(jié)構(gòu)性。(5)C語言有豐富的數(shù)據(jù)類型C語言具有現(xiàn)代化語言的各種數(shù)據(jù)類型;用戶能自己擴充數(shù)據(jù)類型,實現(xiàn)各種復雜的數(shù)據(jù)結(jié)構(gòu),完成用于具體問題的數(shù)據(jù)描述。(6)C語言具有較高的移植性,目標代碼質(zhì)量高、運行效率高用C語言編寫的程序,其生成的目標代碼質(zhì)量高、運行效率高,一般只比匯編程序生成的目標代碼效率低10%~20%。(7)允許直接訪問物理地址C語言允許對硬件內(nèi)存地址進行直接讀寫,以此可以實現(xiàn)匯編語言的主要功能,并可直接操作硬件。C語言不但具備高級語言所具有的良好特性,又包含了許多低級語言的優(yōu)勢,故在系統(tǒng)軟件編程領域有著廣泛的應用。C語言的以上特點,讀者現(xiàn)在也許還不能深刻理解,待學完C語言以后再回顧一下,就會有比較深的體會。任務1.2C工具介紹在了解了基本的C語言知識后,我們需要上機實現(xiàn)一個C語言程序,以便更好的增加對程序的理解和認識。下面我們介紹三種可以運行C語言的環(huán)境。1.2.1VisualC++6.0環(huán)境介紹VisualC++6.0簡稱VC或者VC6.0,一個功能強大的可視化軟件開發(fā)工具。VisualC++6.0不僅是一個C++編譯器,而且是一個基于Windows操作系統(tǒng)的可視化集成開發(fā)環(huán)境(integrateddevelopmentenvironment,IDE)。很多C語言的教材上采用的都是這一環(huán)境,目前計算機等級考試中采用的C語言環(huán)境平臺就是它,另外一般C語言競賽也將VisualC++作為平臺之一,比如由工業(yè)和信息化部人才交流中心舉辦的藍橋杯大賽。 VisualC++6.0運行C語言的啟動步驟如下:雙擊,打開后集成環(huán)境如圖1-2所示。圖1-2VisualC++6.0集成開發(fā)環(huán)境的窗口新建文件步驟,首先單擊“文件”→“新建”菜單命令,打開后效果如圖1-2-2所示。圖1-2-2VisualC++6.0“文件”選項卡3)單擊“C++SourceFill”,在“文件名”輸入框中輸入程序名(如:hello),在VisualC++6.0環(huán)境下編輯的C語言源程序的擴展名默認是.cpp。單擊“確定”按鈕。圖1-2-3新建hello文件4)進入源程序的編輯窗口,如圖1-2-4所示。圖1-2-4源程序編輯窗口5)編寫源程序,如圖1-2-5所示。圖1-2-5編寫源程序6)單擊菜單欄組建中的編譯,如圖1-2-6所示,或者單擊工具欄的圖標都可以編譯,最后單擊確定即可完成編譯。圖1-2-6菜單欄編譯7)單擊菜單欄“組建”中“全部重建”的連接,如圖1-2-7所示?;蛘邌螕艄ぞ邫谥袌D標,都可以編譯連接。圖1-2-7連接8)單擊“組建”中的“執(zhí)行”,如圖1-2-8所示?;蛘邌螕舨藛螜谥械膱D標,也可以執(zhí)行。圖1-2-8執(zhí)行9)顯示程序執(zhí)行結(jié)果,如圖1-2-9所示。圖1-2-9執(zhí)行結(jié)果1.2.2DEV-C++DEVC++是一個Windows環(huán)境下的一個適合于初學者使用的輕量級C/C++集成開發(fā)環(huán)境(IDE),它是一款自由軟件,遵守GPL(GeneralPublicLicense)許可協(xié)議分發(fā)源代碼。開發(fā)環(huán)境包括多頁面窗口、工程編輯器以及調(diào)試器等,在工程編輯器中集合了編輯器、編譯器、連接程序和執(zhí)行程序,提供高亮度語法顯示的,以減少編輯錯誤,還有完善的調(diào)試功能,適合于在教學中供C/C++語言初學者使用。雙擊Windows桌面圖標,進入DEV-C++編輯環(huán)境。如下圖1-2-10所示。圖1-2-10DEV-C++界面2)單擊“文件”→“新建”→“源代碼”菜單命令,將進入源代碼編輯頁面。如圖1-2-11所示。圖1-2-11DEV-C++新建源代碼3)新建一個C語言程序,并寫入第一個程序源代碼。點擊保存按鈕如下圖1-2-12所示。圖1-2-12保存程序源代碼4)單擊調(diào)試源代碼,顯示源代碼編輯對話框如下圖1-2-13所示。圖1-2-13源代碼編輯對話框5)可以選擇“運行”→“運行”菜單項,亦可單擊運行控件,運行源代碼,如圖1-2-14所示。圖1-2-14源代碼運行6)源代碼運行結(jié)果,如下圖1-2-15所示。圖1-2-15程序運行結(jié)果1.2.3C/C++程序?qū)嶒炁c學習系統(tǒng)本教程中介紹的C/C++程序設計學習與實驗系統(tǒng)是一位從事一線教學的大學教師根據(jù)C/C++初學者的特點,量身定制的一個簡單易用的C/C++程序設計學習與實驗軟件。在學習資源樹上可以很方便的打開學習資源,有集成的《C語言入門教程》,對應的每章都指出了初學者易錯點和每章都配有習題和答案分析,有歷年的計算機等級二級C語言的試卷和答案,有58個經(jīng)典源程序等。程序出錯時,除了有英文提示,還有中文提示,便于學生查找問題。C/C++啟動步驟如下:1)雙擊,打開后C/C++集成環(huán)境如圖1-2-16所示:圖1-2-16C/C++集成環(huán)境2)填寫程序,并單擊作上角“保存”,出現(xiàn)保存路徑如圖1-2-17所示:圖1-2-17保存界面3)選擇保存路徑,并輸入文件名one,產(chǎn)生的界面如圖1-2-18所示。圖1-2-18保存為one的程序界面單擊運行可以直接執(zhí)行編輯、連接、運行,執(zhí)行截圖如1-2-19所示:圖1-2-19運行截圖任務1.3創(chuàng)建第一個C語言程序——歡迎來到車輛監(jiān)控系統(tǒng)1.3.1任務目標創(chuàng)建一個C語言程序,顯示“歡迎來到車輛監(jiān)控系統(tǒng)”。運行截圖如圖1-3-1所示:圖1-3-1歡迎來到車輛監(jiān)控系統(tǒng)運行截圖1.3.2知識儲備要實現(xiàn)一個具體的C語言程序,就必須先從了解C語言最基本的結(jié)構(gòu),各種規(guī)則。1.C程序的主要結(jié)構(gòu)#include<stdio.h>頭文件,因為函數(shù)中使用printf函數(shù),否則編譯時不能執(zhí)行voidmain()主函數(shù){數(shù)據(jù)定義;數(shù)據(jù)賦值;數(shù)據(jù)計算;數(shù)據(jù)輸出}2.C語言的程序注意點=1\*GB3①C語言由函數(shù)構(gòu)成。函數(shù)是C程序的基本單位,C程序由一個或多個函數(shù)組成,必須有一個main()主函數(shù);C程序從main()主函數(shù)開始執(zhí)行,主函數(shù)的位置無關緊要;C程序中的函數(shù)可以由庫函數(shù)和用戶自定義的函數(shù)構(gòu)成;函數(shù)可以不帶參數(shù),函數(shù)名后面必須有一對圓括號,是函數(shù)標志;函數(shù)體必須由一對大括號括起來;程序至少有一個輸出函數(shù),0個及以上的輸出函數(shù)。=2\*GB3②一個函數(shù)由若干行組成。一行一個語句或幾個語句,也可一個語句寫在多行,用“\”作續(xù)行符;“;”是語句結(jié)束標志。=3\*GB3③C程序書寫習慣是小寫英文字母。=4\*GB3④頭文件的作用--賦予了調(diào)用某些庫函數(shù)的權限。當程序中有輸入輸出函數(shù)時必須要有頭文件--#include"stdio.h"當程序中有數(shù)學函數(shù)時必須要有頭文件--#include"math.h"當程序中有字符串函數(shù)時必須要有頭文件--#include"string.h"3.printf函數(shù)printf函數(shù)的作用時向終端(輸出設備)輸出多個數(shù)據(jù)。其一般格式為:printf(格式控制,輸出項表);格式控制:雙引號括起來的字符串,一般由字符串和和格式說明(%和格式字符)組成。輸出表項:需要輸出數(shù)據(jù),可以是表達式,變量,常量等。一些常用的printf輸出格式如表1-3-1所示:表1-3-1printf輸出格式輸出類型舉例運行截圖輸出普通字符printf("一串字符");輸出字符帶換行printf(“一串字符\n”);printf(“二串字符”);輸出數(shù)值inta=10,b=15;printf(“%d+%d=%d”,a,b,a+b);輸出字符charch='a';printf("字符為%c",ch);4.格式控制程序中的數(shù)據(jù)根據(jù)不同的類型需要不同的格式控制,比如十進制整數(shù)存放的是整數(shù)類型,一個字符只能存放一個字母或者特殊字符,其中一個漢字就要占用2個字符那么就要采用字符串格式控制。單精度和雙精度主要存放帶有小數(shù)的數(shù)據(jù),對于初學者可以先學習一些基本的格式控制,最基礎的格式類型如表1-3-2所示:表1-3-2格式類型數(shù)據(jù)類型格式控制十進制整數(shù)%d一個字符%c字符串%s單精度%f雙精度%lf5.注釋格式注釋的作用是增強程序的可讀性和用于對程序進行調(diào)試。注釋格式如表1-3-3所示。表1-3-3注釋格式注釋類型格式舉例單行注釋////主函數(shù)多行注釋以/*開始,以*/結(jié)束/*這個題目的主要目的為完成計算器功能*/1.3.3典型實例典型案例1.已知2015年江蘇省的車輛上牌數(shù)量如圖1-3-2所示,顯示蘇州的車輛上牌信息:圖1-3-2江蘇省車輛上牌數(shù)量程序代碼:#include"stdio.h"http://頭文件voidmain()//主函數(shù){printf("2015年江蘇省的新車上牌量排名%d,城市%s,上牌量%f",1,"蘇州",32.8);//顯示數(shù)據(jù)}運行截圖如圖1-3-3所示:圖1-3-3典型案例1運行截圖典型案例2.顯示一輛新能源車輛的基本數(shù)據(jù)。駕駛員的駕照類型為A,車牌號碼為蘇E88888,車輛速度為80公里/小時,累計里程15347.5公里,充放點次數(shù)100次,目前處在的檔位為4檔。程序代碼:#include"stdio.h"http://頭文件voidmain()//主函數(shù){printf("一輛新能源車輛的基本數(shù)據(jù)為\n");//車輛數(shù)據(jù)顯示printf("教師員的駕照類型為%c\n",'A');printf("車牌號碼為%s\n","蘇E88888");printf("車輛速度為%d公里/小時\n",80);printf("累計里程%lf公里\n",15347.5);printf("充放點次數(shù)%d次\n",100);printf("目前處在的檔位為%d檔\n",4);}運行截圖如圖1-3-4所示:圖1-3-4典型案例2運行截圖1.3.4任務分析與實踐程序代碼:#include"stdio.h"voidmain(){printf("####################\n");printf("歡迎來到車輛監(jiān)控系統(tǒng)\n");printf("####################\n");}1.3.5鞏固練習1.編寫程序,實現(xiàn)在屏幕上顯示如下語句。安全情系生命,文明創(chuàng)造和諧,建設平安校園,你我共同責任。2.編寫程序,顯示一名駕駛?cè)藛T的信息,其中駕駛員,18,1990,C用格式符表示。我是一名駕駛員;我的安全駕駛年限為18.5年;我從1990開始開車;我的駕照類型為C型號3.一個汽車4S店有一個150*100空地,有一間18*12*3.7的房間。用程序計算出空地的面積和房間的空間大小。==========Welcome==========Theareais22500Theroomspaceis799.200000==========Good-bye==========答案參考:main(){printf("==========Welcome==========\n");printf("Theareais%d\n",150*150);printf("Thethirdpowerof18is%f\n",pow(18,3));printf("==========Good-bye==========\n");}main(){printf("==========Welcome==========\n");printf("Theareais%d\n",150*150);printf("Thethirdpowerof18is%f\n",pow(18,3));printf("==========Good-bye==========\n");}4.編寫程序,計算邊長為150的正方形面積和18的3次方的值,并按如下形式顯示。答案參考:#include<stdio.h>#include<math.h>main(){printf("125+65=%d\n",125+65);printf("%d+%d=%d\n",125,65,125+65);printf("squarerootof130:%lf\n",sqrt(130));printf("squarerootof%d:%lf\n",130,sqrt(130));}課題項目二任務1統(tǒng)計汽車的數(shù)量(printf函數(shù))課型講練授課班級授課時數(shù)2教學目標1、掌握c語言中提供的各種數(shù)據(jù)類型,理解常量的概念。2、掌握各種類型的變量的定義,初始化方式。教學重點1、C語言數(shù)據(jù)類型的分類。2、符號常量的定義。3、變量的定義初始化。教學難點數(shù)據(jù)類型的理解(引入數(shù)據(jù)類型的因素)學情分析學生經(jīng)過第一次理論課的學習對C語言程序整體有了解,對于數(shù)據(jù)類型及常量變量的介紹屬概念記憶類較多,因此學生在理解上沒有很大困難,重點于在一些概念,格式的記憶。教學效果教后記項目二車輛行駛狀態(tài)顯示(輸入、輸出)知識目標熟悉輸入、輸出用法的格式。熟悉C語言幾種常用的數(shù)據(jù)類型、運算符和表達式掌握標識符的命名規(guī)則。掌握常量和變量的定義和引用規(guī)則。掌握流程圖的幾種符號。能力目標能準確運用輸入與輸出用法。能熟練運用數(shù)據(jù)類型之間的自動轉(zhuǎn)換和強制轉(zhuǎn)換。掌握算術運算符的使用規(guī)則、優(yōu)先級和結(jié)合性。能畫出簡單程序的流程圖。掌握程序的最基本的算法過程。情景設置主要通過printf()等函數(shù)打印出整個案例的宏觀流程,主要包括車輛采集端進行車輛數(shù)據(jù)的采集、存儲和發(fā)送;服務器接收端完成數(shù)據(jù)接收、呈現(xiàn)(打?。Mㄟ^輸入函數(shù)實現(xiàn)與用戶的簡單交互,輸入車號顯示運行狀態(tài)。任務2.1統(tǒng)計汽車的數(shù)量(printf函數(shù))2.1.1任務目標已知A汽車公司第一季度生產(chǎn)新能源客車5987輛,新能源物流車1245輛,公交客運2580輛,輕型客車7890輛,求該公司一季度共生產(chǎn)汽車多少。任務目標運行截圖如圖2-1-1所示:圖2-1-1任務目標運行截圖2.1.2知識儲備一個基本的程序應該包含數(shù)據(jù)的描述和操作步驟兩個方面的內(nèi)容。著名計算機科學家沃思(NiklausWirth)提出了一個公式:數(shù)據(jù)結(jié)構(gòu)+算法=程序在C語言中,數(shù)據(jù)類型指的是用于聲明不同類型的變量或函數(shù)的一個廣泛的系統(tǒng)。1.數(shù)據(jù)類型C語言提供的數(shù)據(jù)結(jié)構(gòu)是以數(shù)據(jù)類型形式出現(xiàn)的。在對數(shù)據(jù)存放中,根據(jù)使用數(shù)據(jù)的類型,定義不同類型。C語言中包含的基本數(shù)據(jù)類型如圖2-1-2所示。圖2-1-2C語言基本數(shù)據(jù)類型在C程序中什么樣的數(shù)據(jù)類型用什么樣的符號輸出,另外需要注意數(shù)據(jù)類型的范圍,否則會出錯。[示例2-1]通過printf語句顯示3.0,3,’a’數(shù)據(jù)。#include"stdio.h"voidmain(){printf("%f,%d,%c",3.0,3,'a');}[示例2-2]運行如下程序,分析運行錯誤原因#include"stdio.h"voidmain(){printf("%f,%d,%c",5,7,b);}分析:第4行的5是整數(shù),%f是浮點型,輸出類型不匹配。b作為字符必須加單引號。2.常量常量:在程序運行過程中其值不能被改變的量。常用的常量有以下幾種類型:(1)整型常量。比如10,-2,0等。(2)實型常量。主要包含兩種形式,第一種十進制小數(shù)形式,有數(shù)字和小數(shù)點組成。如34.56,-90.8等。第二種指數(shù)形式,如45.78e5(代表45.78×105)等,由于計算機輸入或者輸出時無法表示上角或者下角,故規(guī)定以E或者e代表以10為底的指數(shù)。(3)字符常量。主要包含兩種形式,第一種普通型字符,用單撇號括起來,如’b’,’d’等,注意只能是一個。第二種轉(zhuǎn)義字符,以字符”\”字符開頭的字符序列。比如’\n’等。(4)字符串常量。用雙撇號括起來的字符。比如“234”,a“”等。(5)符號常量。用#define指令,指定用一個符號名稱代表一個常量。如:#definePI3.1416示例2-3求半徑為2.1的圓的面積#include"stdio.h"#definePI3.14voidmain(){ doubler,s; r=3; s=PI*r*r; printf("圓的面積為%.2lf",s);}3.變量變量:在程序執(zhí)行過程中,其值可以改變的量。就如同一個杯子,開始可以裝水,后面可以裝咖啡,下來可以換成牛奶或者汽油,其變量圖解如圖2-1-3所示:圖2-1-3變量圖解在變量定義命名中是有一定規(guī)范的,在語言定義中,用來標識變量名,符號,數(shù)組,類型名,文件名等有效字符序列我們稱之為標識符。上面的常量命名的PI也是一個標識符。其命名規(guī)則如下:標識符的命名規(guī)則如下:(1)標識名中只能出現(xiàn)數(shù)學、大寫英文字母、小寫英文字母和下劃線。(2)標識名必須以字母或下劃線開頭。(3)標識符名與關鍵字不能相同。(4)標識符需要見名知義注意:變量是標識符的一種,必須先定義后使用。變量在使用過程中,有一定規(guī)則的,定義什么類型,一般使用什么類型,輸出什么類型,當定義的類型和輸出的類型不一致時,程序結(jié)果就會出錯,這也是初學者會常犯的錯誤。定義變量的一般形式:類型名變量1,變量2,…,變量名n;變量的三個屬性:變量名、變量值、變量類型4.常見的數(shù)據(jù)類型根據(jù)我們?nèi)粘5氖褂昧晳T,列出了下面一些主要的數(shù)據(jù)類型的符合,格式符,取值范圍等。具體如表2-1-1所示:表2-1-1常見的數(shù)據(jù)類型數(shù)據(jù)類型符號格式符字節(jié)位數(shù)取值范圍無符號短整型unsignedshort%d2160~(216-1)短整型short%d216-215~(215-1)無符號整型unsignedint%d4320~(232-1)整型int%d432-231~(231-1)無符號長整型unsignedlong%ld4320~(232-1)長整型long%ld432-231~(231-1)單精度型float%f432-1038~1038雙精度型double%lf864-10308~10308無符號字符unsigned%d180~(28-1)字符char%c18--27~(27-1)5.編程規(guī)范:在實際變量命名中,規(guī)范會根據(jù)各個公司內(nèi)部規(guī)定而有區(qū)別,一般變量命名規(guī)則為類型和對應英文單詞的組合,單詞首字母大寫或單詞之間用下劃線隔開,如fVeh_Speed(或fVehSpeeD.分別為類型float的縮寫f、車輛vehicle和車速speed的組合而成。類型前綴表如表2-1-2所示:表2-1-2類型前綴表2.1.3典型案例典型案例1.已知B汽車運營公司共擁有48377輛汽車,目前正在運營的車輛47342輛,求維修的車輛數(shù)?算法分析:定義變量Veh_SumNum總車輛,Veh_Run運營車輛,Veh_Repair維修車輛給總車輛和運營車輛賦值計算維修車輛輸出維修車輛程序代碼:#include"stdio.h"voidmain(){intVeh_SumNum,Veh_Run,Veh_Repair;//定義變量Veh_SumNum=48377;//給數(shù)據(jù)賦值Veh_Run=47342;Veh_Repair=Veh_SumNum-Veh_Run;//計算printf("目前正在維修中的車輛的個數(shù)為%d",Veh_Repair);//輸出}典型案例1運行截圖如圖2-1-4所示:圖2-1-4典型案例1運行截圖典型案例2.已知B汽車運營公司共有48377輛汽車,為了保證公司業(yè)務的正常運營,售后維修部門必須有車輛數(shù)量的1/80的輪胎數(shù),求維修部門的輪胎數(shù)。算法分析:1) 定義變量Vehicle_SumNo總車輛,Vehicle_TyreNo輪胎數(shù)2) 給總車輛賦值3) 計算輪胎數(shù)4) 輸出輪胎數(shù)程序代碼:#include"stdio.h"voidmain(){intVehicle_SumNumber,Vehicle_TyreNum;//定義變量Vehicle_SumNumber=48377;//賦值Vehicle_TyreNum=Vehicle_SumNumber/80;//計算printf("目前車輛的備用輪胎數(shù)為%d",Vehicle_TyreNum);//輸出}典型案例2運行截圖如2-1-5所示:圖2-1-5典型案例2運行截圖典型案例3.編寫程序,將數(shù)字字符‘2’,‘7’轉(zhuǎn)換為響應的數(shù)字。算法分析:1) 定義數(shù)字字符2) 轉(zhuǎn)換3) 輸出程序代碼:#include"stdio.h"voidmain(){charch_Num1,ch_Num2;//定義變量ch_Num1='2';//賦值ch_Num2='7';ch_Num1=ch_Num1-'0';//計算ch_Num2='7'-48;printf("第一個字符的整型數(shù)據(jù)%d\n",ch_Num1);//輸出printf("第二個字符的整型數(shù)據(jù)%d\n",ch_Num2);} 典型案例3運行截圖如圖2-1-6所示:圖2-1-6典型案例3運行截圖 2.1.4任務分析與實踐算法分析:變量命名:新能源汽車數(shù)目:uMotorVeh_No;物流車數(shù)目:uDeliveryVeh_No公交車數(shù)目:uBus_No輕型客車數(shù)目:uLightBus_No車輛總數(shù):uVeh_Sum定義變量給大客車的數(shù)量和小客車的數(shù)量賦值求客車總的數(shù)量輸出客車的數(shù)量程序代碼:#include"stdio.h"voidmain(){intuMotorVeh_No,uDeliveryVeh_No,uBus_No,uLightBus_No,uVeh_Sum; uMotorVeh_No=5987; uDeliveryVeh_No=1234; uBus_No=2580; uLightBus_No=7890; uVeh_Sum=uMotorVeh_No+uDeliveryVeh_No+uBus_No+uLightBus_No; printf("該公司一季度共生產(chǎn)汽車%d輛車",uVeh_Sum);}2.1.5鞏固練習1.已知4S店目前45位男性員工,宿舍是4人間,需要準備多少間宿舍。(參考變量英文男性員工Maleemployee,宿舍人數(shù)Numberofhostelresidents,宿舍間數(shù)Numberofdormitories)2.假設兩個駕駛員的工資甲為5500一個月,乙為7800一個月,那么一年工資相差多少。(參考變量工資salary,差額difference)3.一輛新能源車2019年的車輛保險為3507.5元,2020年的車輛保險為3209.5元,求一共花費的保險費用。(參考變量保險insurance)課題任務2.2統(tǒng)計汽車的載客人數(shù)(scanf函數(shù))課型講練授課班級授課時數(shù)2教學目標掌握三種輸入輸出函數(shù)的使用方法;scanf()和printf()函數(shù)的調(diào)用方法和允許使用的格式轉(zhuǎn)換控制符。熟悉scanf()函數(shù)對各種類型數(shù)據(jù)的鍵盤輸入格式的要求。能靈活使用printf()函數(shù)控制屏幕格式輸出。能用scanf()和printf()函數(shù)和賦值語句進行簡單的順序結(jié)構(gòu)程序的設計編寫。教學重點scanf()和printf()函數(shù)的調(diào)用方法和允許使用的格式轉(zhuǎn)換控制符。能用scanf()和printf()函數(shù)和賦值語句進行簡單的順序結(jié)構(gòu)程序的設計編寫。教學難點格式控制符的靈活使用學情分析輸出函數(shù)前面學生已經(jīng)基本接觸,但是只是原型輸出,對于具體的格式輸出,不太了解。輸入函數(shù)只是從書上的部分例題看到,還沒有具體的接觸,此處應該具體講解各種不同的用途。教學效果教后記任務2.2統(tǒng)計汽車的載客人數(shù)(scanf函數(shù))2.2.1任務目標已知某公交車隊某品牌某款純電動城市客車的額定載客人數(shù)為56人,以鍵盤上輸入該車隊的客車數(shù)量,計算客車總的載客人數(shù)。程序運行結(jié)果如圖2-7所示。圖2-7程序運行結(jié)果2.2.2知識儲備圖2-7程序運行結(jié)果在程序中,需要一些從外面輸入的數(shù)據(jù)。下面就來介紹輸入數(shù)據(jù)的輸入/輸出函數(shù)。1.scanf()函數(shù)(格式輸入函數(shù))scanf()函數(shù)可以用于輸入任何類型的多個數(shù)據(jù),其語法格式為:scanf(格式說明符,變量地址列表);功能:按用戶指定的格式從鍵盤上把數(shù)據(jù)輸入指定的變量中。注意:“地址列表”里由若干個地址組成,是變量地址,而不是變量名;輸入數(shù)據(jù)只能是常量,不能是表達式;輸入多個整型或?qū)嵭蛿?shù)據(jù)時,可用空格、回車、制表符為間隔;“格式說明”中的普通字符原樣輸入;“格式說明”中一般只寫若干個格式符。舉例:scanf("%d%d%d",&a,&b,&c);scanf("%d,%d,%d",&a,&b,&c);2.printf()函數(shù)(格式輸出函數(shù))一般都是按照默認類型數(shù)據(jù)輸出的,在此情況下,我們有時需要根據(jù)實際情況輸出數(shù)據(jù),如實型數(shù)一般默認顯示小數(shù)點后6位,但是有時只需要顯示小數(shù)點后2位。整數(shù)原來有2位,但是需要最終顯示占5個空格等,特殊格式顯示如表2-2所示。表2-2特殊格式顯示要求格式顯示到小數(shù)點后2位的單精度類型%.2f顯示到小數(shù)點后1位的雙精度類型%.1lf雙精度顯示整數(shù)%.0f整型顯示至少占5個位置左空格%-5d整型顯示至少占4個位置右空格%4d小貼士:輸出函數(shù)的格式種類較多,需要按要求靈活掌握。2.2.3典型案例典型案例1:從鍵盤上輸入某客車的累計行駛里程和使用年限,計算該客車平均每年的行駛里程。算法分析如下。(1)變量名命名:累積行駛里程AccumulatedMileage、使用年限ServiceYears、平均每年的行駛里程AvgMileage。(2)定義變量。(3)輸入累積行駛里程和使用年限。(4)計算平均每年的行駛里程。(5)輸出平均每年的行駛里程。代碼如下:#include"stdio.h"voidmain(){intServiceYear;doubleAccumulatedMileage,AvgdMileage;printf("請輸入累積行駛里程");scanf("%lf",&AccumulatedMileage);printf("請輸入使用年限");scanf("%d",&ServiceYear);AvgdMileage=AccumulatedMileage/ServiceYear;printf("平均每年的行駛里程為%lf",AvgdMileage);}典型案例1的運行結(jié)果如圖2-8所示。典型案例2:已知某公交車隊某品牌A款純電動城市大型客車的載客人數(shù)為36人,B款純電動城市小型客車的荷載人數(shù)為18人,輸入兩款客車的數(shù)量,計算總的載客人數(shù)。算法分析如下。(1)變量名命名:大型客車載客人數(shù)BVehicle_LoadNumber、小型客車載客人數(shù)SVehicle_Loadnumber、大型客車數(shù)量BVehicle_Number、小型客車數(shù)量SVehicle_Number、客車總的載客人數(shù)Vehicle_SumLoadnumber。(2)定義5個變量。(3)輸入大型客車和小型客車的數(shù)量。(4)計算總的荷載人數(shù)。(5)計算總的輸出荷載人數(shù)。代碼如下:#include"stdio.h"voidmain(){intBVehicle_Loadnumber=36,SVehicle_Loadnumber=18;intBVehicle_Number,SVehicle_Number,Vehicle_SumLoadnumber;printf("請輸入大型客車的車輛數(shù)");scanf("%d",&BVehicle_Number);printf("請輸入小型客車的車輛數(shù)");scanf("%d",&SVehicle_Number);Vehicle_SumLoadnumber=BVehicle_Number*BVehicle_Loadnumber+SVehicle_Number*SVehicle_Loadnumber;printf("客車總的載客人數(shù)為%d",Vehicle_SumLoadnumber);}典型案例2的運行結(jié)果如圖2-8所示。 圖2-8典型案例1的運行結(jié)果 圖2-9典型案例2的運行結(jié)果典型案例3:從鍵盤上輸入某客車平均每年的行駛里程和使用年限,計算該客車的累計行駛里程。算法分析如下。(1)變量名命名:累積行駛里程AccumulatedMileage、使用年限ServiceYear、平均每年的行駛里程AvgdMileage。(2)定義變量。(3)輸入平均每年的行駛里程和使用年限。(4)計算累積行駛里程。(5)輸出累積行駛里程。代碼如下:#include"stdio.h"voidmain(){intServiceYear;doubleAccumulatedMileage,AvgdMileage;printf("請輸入平均每年的行駛里程");scanf("%lf",&AvgdMileage);printf("請輸入使用年限");scanf("%d",&ServiceYear);AccumulatedMileage=AvgdMileage*ServiceYear;printf("%d年的累計行駛里程為%.2lf",ServiceYear,AccumulatedMileage);}典型案例3的運行結(jié)果如圖2-10所示。圖2-10典型案例3的運行結(jié)果2.2.4任務分析與實踐圖2-10典型案例3的運行結(jié)果算法分析如下。(1)變量名客車的載客人數(shù)Vehicle_Loadnumber、客車的數(shù)量Vehicle_Number、客車總的載客人數(shù)Vehicle_SumLoadnumber。(2)定義變量。(3)輸入客車的數(shù)量。(4)計算。(5)輸出總的載客量。#include"stdio.h"voidmain(){intVehicle_Loadnumber=56,Vehicle_Number,Vehicle_SumLoadnumber;printf("請輸入客車的數(shù)量");scanf("%d",&Vehicle_Number);SumLoadnumber=Vehicle_Loadnumber*Vehicle_Number;printf("客車總的載客人數(shù)為%d",Vehicle_SumLoadnumber);}2.2.5鞏固練習1.編寫程序,有一輛汽車歷經(jīng)了兩個車主的使用,從鍵盤上輸入兩個車主的使用年限,計算目前這輛汽車總的使用年限(變量參考:車主ownerofavehicle、使用年限servicelife)。2.編寫程序,從鍵盤上輸入車輛的單價和數(shù)量,計算所有車輛的總價格(變量參考:車輛的單價VehiclePrice、車輛的數(shù)量Numberofvehicles、總價格Vehiclecosts)。3.編寫程序,從鍵盤上輸入一個駕駛員的駕駛證類型,輸出該駕駛證類型對應的小寫字母(變量參考:大小寫字母的ACSII碼值相差32Typeofdriver'slicense)。課題任務2.3統(tǒng)計需要的車輛(算術運算符、強制轉(zhuǎn)換)課型講練授課班級授課時數(shù)2教學目標1.了解算術運算符,關系運算符并且會合理的使用它們。2.會判斷邏輯值的真和假3.會編寫程序計算教學重點算術運算符,關系運算符的使用教學難點合理使用運算符學情分析+、-、*、/這些運算符基本上學生平時都有接觸,只需講解日常不太使用的運算符即可,但由于沒有接觸使用到判斷語句,對于運算符的使用面還是比較狹窄,需要利用以后的課時將這個知識點逐漸的滲入。教學效果教后記任務2.3統(tǒng)計需要的車輛(算術運算符、強制轉(zhuǎn)換)2.3.1任務目標某公司承辦某班級春游包車服務,要求通過鍵盤輸入?yún)⒓踊顒拥膶W生人數(shù)以及一輛客車的載客人數(shù),計算該公司承接該項服務所需要的車輛數(shù)?任務目標運行截圖如圖2-3-1所示:
圖2-3-1任務目標2.3.2知識儲備C語言的運算符范圍很寬,把除了控制語句和輸入輸出以外所有的基本操作都作為運算符處理。一些基本的運算符與數(shù)學運算一樣比如+,-,*等,但是有一些運算符不太一樣,比如‘=’與“==”的區(qū)別,‘/’在數(shù)據(jù)為浮點型和整數(shù)類型時是不同的,‘%’是求余的含義等,在具體使用時需要注意。1.算術運算符算數(shù)運算符包含以下幾種基本運算符+(加法運算符):雙目運算符-(減法運算符):雙目運算符*(乘法運算符):雙目運算符/(除法運算符):雙目運算符,/(整除)對于int,float,double均適用,例如:8.0/3.0%(求余運算符):雙目運算符,%(求余)只對整數(shù)類型起作用。++(自增運算符):單目運算符--(自減運算符):單目運算符2.賦值運算符=(單等號)就是賦值運算符,作用就是將一個常量或者變量等賦值給一個變量。[示例2-3]觀察下面的程序,說出程序結(jié)果#include"stdio.h"voidmain(){intdataA=2,dataB;dataB=20;//將20賦值給dataBdataA*=dataB+1;//等價于dataA=dataA*(dataB+1); printf("dataA=%d,dataB=%d",dataA,dataB);}運算符的優(yōu)先級在數(shù)據(jù)運行時,不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一類型,然后進行運算,轉(zhuǎn)換的規(guī)則如圖2-3-1所示:圖2-3-1轉(zhuǎn)換的規(guī)則4.數(shù)學頭文件#include“math.h”2.3.3典型案例典型案例1.從鍵盤輸入貨物的噸數(shù)和貨車的載重量,求共需要拉幾次和最后一次拉的噸數(shù)。(噸數(shù)不能整除載重量)算法分析:定義變量Cargo_Quantity貨物量,Truck_load貨車載重量,Pull_Number拉貨次數(shù),F(xiàn)inal_load最后一次的載重量。輸入貨物的噸數(shù)和貨車的載重量。計算拉貨次數(shù),求最后一次的拉貨量。輸出拉貨次數(shù)和最后一次的拉貨量。程序代碼:#include"stdio.h"#include"stdio.h"voidmain(){intCargo_Quantity,Truck_load,Pull_Number,Final_load;printf("請輸入貨物的重量(單位:噸)");scanf("%d",&Cargo_Quantity);printf("請輸入貨車的載重量");scanf("%d",&Truck_load);Pull_Number=Cargo_Quantity/Truck_load+1;Final_load=Cargo_Quantity%Truck_load;printf("貨車需要拉%d趟\n",Pull_Number); printf("最后一次需要拉%d噸\n",Final_load);}典型案例1運行截圖如圖2-3-2所示:圖2-3-2典型案例1運行截圖典型案例2.從鍵盤輸入一個浮點數(shù),求它的整數(shù)部分和小數(shù)部分。算法分析:定義變量Float_Number浮點數(shù),Int_Part整數(shù)部分,Decimal_Part小數(shù)部分
從鍵盤輸入一個浮點數(shù)。求整數(shù)部分。求小數(shù)部分。輸出整數(shù)和小數(shù)部分。程序代碼:#include"stdio.h"voidmain(){doubleFloat_Number,Decimal_Part;intInt_Part;printf("請輸入一個浮點數(shù)");scanf("%lf",&Float_Number);Int_Part=(int)Float_Number;Decimal_Part=Float_Number-Int_Part;printf("浮點數(shù)的整數(shù)部分為%d,小數(shù)部分為%lf",Int_Part,Decimal_Part);}典型案例2運行截圖如圖2-3-3所示:小貼士:請大家將本題目中浮點數(shù)的類型換成float試一試,對比一下結(jié)果。圖2-3-3小貼士:請大家將本題目中浮點數(shù)的類型換成float試一試,對比一下結(jié)果。典型案例3.編寫程序,計算函數(shù)y=的值,其中自變量的值從鍵盤輸入。算法分析:1) 定義變量x,y;2) 從鍵盤輸入x的值。3) 求y的值。4) 輸出y的值。程序代碼:#include"stdio.h"#include"math.h"voidmain(){doublex,y;printf("請輸入x的值");scanf("%lf",&x);y=sqrt(x)+5*x+3/(x*x+2);printf("y的值為%lf",y);}典型案例3運行截圖如圖2-3-4所示:圖2-3-4典型案例3截圖2.3.4任務分析與實踐算法分析:定義變量Vehicle_Passenger車載人數(shù),Vehicle_Number車輛數(shù),Student_NumBer學生人數(shù)。從鍵盤輸入車載人數(shù),學生數(shù)求車輛數(shù)程序代碼#include"stdio.h"voidmain(){intVehicle_Passenger,Vehicle_Number,Student_NumBer;printf("請輸入每量車的載客人數(shù)");scanf("%d",&Vehicle_Passenger);printf("請輸入學生人數(shù)");scanf("%d",&Student_NumBer);Vehicle_Number=Student_NumBer/Vehicle_Passenger+1;printf("共需要車輛%d輛",Vehicle_Number);}2.3.5鞏固練習1.一名駕駛員的工號為4位的整數(shù),從鍵盤輸入一名駕駛員的工號,輸出工號各位數(shù)字之和。(變量參考工號jobnumber,個位units,十位tens,百位hundreds,千位thousands)2.從鍵盤輸入一名駕駛員的身高(米)和體重(公斤),求這名駕駛員的體指數(shù)。(體脂數(shù)公式為BIM=體重/(身高*身高);變量參考體重weight,身高heigh)3.從鍵盤輸入一輛箱式貨車箱長的長、寬、高,求它的容積。(變量長length,寬width,高high)4.一名駕駛員想看一下天氣溫度,結(jié)果給出的時華氏溫度,他希望知道攝氏溫度。從鍵盤輸入華氏溫度,求出攝氏溫度。(華氏轉(zhuǎn)化為攝氏的公式:C=5/9*(F-32))課題任務2.4顯示駕照的類型(字符輸入與輸出)課型講練授課班級授課時數(shù)2教學目標1.利用getchar(),putchar()函數(shù)單個字符的輸入輸出2.利用scanf(),printf()函數(shù)單個字符的輸入輸出3.當輸入多個字符時輸入函數(shù)的注意點教學重點多個字符函數(shù)的輸入與輸出教學難點多個字符函數(shù)的輸入與輸出學情分析scanf與printf也可以對于字符和字符串進行輸入與輸出,本節(jié)課主要是字符的輸入與輸出,但是有時判斷不出字符的輸入與輸出應該采用哪個函數(shù)更好一些。教學效果教后記任務2.4顯示駕照的類型(字符輸入與輸出)2.4.1任務目標從鍵盤輸入駕駛員的駕照類型(高于C級),因為1個實習年度扣分超過12分被降1級,輸出新的駕照類型。2.4.2知識儲備由于字符是按照整數(shù)形式存放的,因此字符型數(shù)據(jù)也作為整數(shù)類型的一種,在使用過程中有其獨特的特點。1.字符常量C語言的字符常量一般用單引號括起來,個數(shù)只能有一個,比如’A’(A字符),’b’等。除了這種情況外,C語言還允許另一種特殊格式的字符常量,以‘\’開頭,比如’\n‘代表換行等,常用的以‘\’開頭的特殊字符如表2-4-1所示:表2-4-1常用特殊字符字符格式功能\n換行\(zhòng)t橫向跳格\\反斜杠字符“\”\ddd1到3位8進制所代表的字符\xhh1到2位16進制所代表的字符2.字符變量用來存放字符類型,并且只能放一個字符的變量,稱為字符變量。將一個字符常量放到字符變量中,實際上并不是把該字符本身放到內(nèi)存單元中去,而是將該字符對應的ASCII代碼放到存儲單元中。例如’A’字符的ASCII代碼為65,在內(nèi)存中存放的就是65,所以一個字符數(shù)據(jù)既可以以字符形式輸出,也可以以整數(shù)形式輸出。那么字符數(shù)據(jù)參與算術運算時,就相當于對于他們的ASCII值進行算數(shù)運算。[示例2-4]觀察下面的程序,說出程序結(jié)果#include"stdio.h"voidmain(){charchA=65,chB='A',chC;chC=chB+32; printf("chA=%d,chB=%d,ASCIIchC=%d,字符chC=%c",chA,chB,chC,chC);}3.字符數(shù)據(jù)輸出函數(shù)putchar()在項目一中我們接觸到了printf函數(shù),它也可以輸出字符類型,putchar函數(shù)是專門輸出字符的函數(shù),只能輸出一個字符。格式:putchar(c);功能:在終端上輸出一個字符,不換行如:chara=‘A’;intk=65;putchar(a);putchar(k);putchar(‘A’+32);putchar(65);putchar(‘\101’);4.字符輸入函數(shù)getchar()在項目一中我們接觸到了scanf函數(shù),它也可以輸入字符類型,getchar函數(shù)是專門輸入字符的函數(shù),只能輸入一個字符。格式:getchar();功能:返回從鍵盤輸入一個字符,不帶任何參數(shù)。[示例2-4]觀察下面的程序,猜測結(jié)果,并運行程序看結(jié)果和猜測是否一致#include"stdio.h"voidmain(){charchA,chB;chA=getchar();chB=chA+32; printf("chA=%d,chB=%c\n",chA,chB);}2.4.3典型案例典型案例1.一個駕駛員原來是小轎車類型C型駕照,駕駛員通過大客車的學習升了二級級,顯示駕駛員最新的駕照類型。典型案例1運行截圖如2-4-1所示圖2-4-1典型案例1截圖算法分析:定義變量Driver_LicenseType駕照類型輸入駕照類型Driver_LicenseType減2輸出駕照類型程序代碼:#include"stdio.h"voidmain(){charDriver_LicenseType;printf("請輸入原有的駕照類型");Driver_LicenseType=getchar();Driver_LicenseType=Driver_LicenseType-2;printf("升二級后的駕照類型為");putchar(Driver_LicenseType);}典型案例2.從鍵盤輸入一個大寫字母,轉(zhuǎn)換成小寫字母并輸出。典型案例2程序運行截圖如圖2-4-2所示:圖2-4-2典型案例2運行截圖算法分析:定義變量輸入大寫字母轉(zhuǎn)換成小寫字母輸出轉(zhuǎn)換后的字母程序代碼:#include"stdio.h"voidmain(){intch;printf("請輸入一個大寫字母");scanf("%c",&ch);ch=ch+32;printf("轉(zhuǎn)換后的小寫字母為%c",ch);}典型案例3.從鍵盤輸入3個字母,輸出這些字母后面的字母。典型案例3運行截圖如圖2-4-3所示:圖2-4-3典型案例3截圖方法一:算法分析:定義變量輸入3個字母轉(zhuǎn)換成后面的字母輸出轉(zhuǎn)換后的3個字母程序代碼:#include"stdio.h"main(){ charch1,ch2,ch3; scanf("%c%c%c",&ch1,&ch2,&ch3); ch1=ch1+5; ch2=ch2+5; ch3=ch3+5; printf("ch1=%c,ch2=%c,ch3=%c",ch1,ch2,ch3);}注意使用1個scanf函數(shù)輸入多個字符時,在各字符之間不能用任何分隔符,因為系統(tǒng)將空格,TAB鍵,回車符等均作為合法字符。方法二:算法分析:定義變量輸入第1個字母轉(zhuǎn)換成后面的字母輸入第2個字母轉(zhuǎn)換成后面的字母輸入第3個字母轉(zhuǎn)換成后面的字母輸出轉(zhuǎn)換后的3個字母程序代碼程序1:#include"stdio.h"main(){ charch1,ch2,ch3; printf("請輸入第一個字母"); ch1=getchar(); getchar(); printf("請輸入第二個字母"); ch2=getchar(); getchar(); printf("請輸入第三個字母"); ch3=getchar(); getchar(); printf("轉(zhuǎn)換后的三個字母為"); ch1=ch1+1; ch2=ch2+1; ch3=ch3+1; putchar(ch1); putchar(ch2); putchar(ch3);}注意:getchar();是接收輸入字符后的回車符。程序2:#include"stdio.h"main(){ charch1,ch2,ch3; printf("請輸入第一個字母"); scanf("%c",&ch1); printf("請輸入第二個字母"); scanf("%c",&ch2); printf("請輸入第三個字母"); scanf("%c",&ch3); ch1=ch1+5; ch2=ch2+5; ch3=ch3+5; printf("ch1=%c,ch2=%c,ch3=%c",ch1,ch2,ch3);}注意:%c前有一個空格主要是接收前一個字符后面的回車符。2.4.4任務分析與實踐算法分析:定義變量Driver_LicenseType駕照類型輸入駕照類型降級駕照輸出駕照類型程序代碼:#include"stdio.h"voidmain(){charDriver_LicenseType;printf("請輸入原有的駕照類型");Driver_LicenseType=getchar();Driver_LicenseType=Driver_LicenseType++;printf("降級后的駕照類型為");putchar(Driver_LicenseType);}2.4.5鞏固練習1.一名駕駛員在輸入年齡時方法錯誤,輸入成了二個數(shù)字字符,請將它變?yōu)閷嶋H年齡值。(變量參考年齡age)2.從鍵盤輸入一名駕駛員的駕照等級,輸出等級對應的小寫字母。(變量參考年齡Classofdriver'slicense)3.從鍵盤輸入一個車輛三角形警示牌的三邊(單位cm),求警示牌的面積。(變量參考長length,面積area)課題任務2.5求能拿到駕照的過程(流程圖)課型講練授課班級授課時數(shù)2教學目標掌握流程圖的各種符號,能辨別基本的符號教學重點能根據(jù)題意畫出順序,選擇,循環(huán)的流程圖教學難點循環(huán)流程圖的畫法學情分析高中數(shù)學知識已經(jīng)講解了基本的流程圖格式。教學效果教后記任務2.5求能拿到駕照的過程(流程圖)2.5.1任務目標通過流程圖,顯示獲得駕照的過程。如果要按期拿到駕照需要通過科目一、科目二、科目三、科目四每次最多5次機會。2.5.2知識儲備1.算法的概念為解決一個問題而采取的方法和步驟稱為算法。2.算法的特征(1)有窮性:算法的步驟是有限的。(2)確定性:算法中的每一個步驟都應當是確定的,不能產(chǎn)生歧義。(3)可行性:算法的每一步必須是切實可行的。(4)有輸入:有0個或者多個輸入。(5)有輸出:有1個或者多個輸出。3.算法的表示1.用自然語言表示算法(標號有沒有問題?)算法可以用自然語言來描述,自然語言就是人們?nèi)粘J褂玫恼Z言,可以是漢語、英語或者其他各種語言,其優(yōu)點在用表示的算法通俗易懂,便于理解,但是缺點在于文字冗長,容易產(chǎn)生歧義,特別是在表達條件判斷和循環(huán)算法時,很難表述清楚。2.用流程圖表示算法流程圖是流經(jīng)一個系統(tǒng)的信息流、觀點流或部件流的圖形代表。程序流程圖表示程序中的操作順序。程序流程圖包括:指明實際處理操作的處理符號,它包括根據(jù)邏輯條件確定要執(zhí)行的路徑的符號;指明控制流的流線符號;便于讀寫程序流程圖的特殊符號3.用N-S圖表示算法4.用偽代碼表示算法偽代碼是自然語言和類編程語言組成的混合結(jié)構(gòu)。5.三種基本結(jié)構(gòu)在C語言中有三種基本結(jié)構(gòu),分別為順序結(jié)構(gòu),如圖2-5-2所示。選擇結(jié)構(gòu)如圖2-5-3所示。循環(huán)結(jié)構(gòu)體如圖2-5-4所示。圖2-20順序結(jié)構(gòu)圖2-21選擇結(jié)構(gòu)圖2-22循環(huán)結(jié)構(gòu)2.5.3典型案例典型案例1:大客車駕駛員的工資等級分為四級,連續(xù)10年無事故為一級,滿8年無事故為二級,滿5五年無事故為三級,其余為四級。輸入駕駛員的無事故年限,輸出等級,請畫出流程圖算法分析:1.確定判斷條件2.根據(jù)題目內(nèi)容畫出流程圖流程圖:圖2-23典型案例1的流程圖典型案例2:B企業(yè)有120人,目前需要所有人從B企業(yè)到A場去參觀,只有一輛大客車可容納的人數(shù)為32人,運用流程圖畫出一輛大客車運送人員的過程,畫出流程圖算法分析:1.確定循環(huán)條件:把所有人的送完為止2.根據(jù)題目要求畫出流程圖2.5.4任務分析與實踐算法分析1.將任務進行拆分2.該任務要求每次任務可以進行5次考試,即用到循環(huán)語句3.通過前一個科目才能進行下一個,用到判斷語句流程圖:2.5.5鞏固練習一、選擇題1.執(zhí)行如圖2-5-8所示的程序框圖,則輸出s的值為()A.3/4B.5/6C.11/12D.25/24圖2-5-8選擇題1流程圖2.根據(jù)如圖2-5-9流程圖,當輸入x為6時,輸出的y=()圖2-5-9選題題2流程圖A.1B.2C.5D.103.閱讀如圖2-5-10所示的程序圖,運行相應的程序,則輸出i的值為()圖2-5-10選擇題3流程圖A.2B.3C.4D.54.執(zhí)行如圖2-5-10所示的程序圖,若輸出k的值為8,則判斷框圖可填入的條件是()圖2-5-10選擇題4流程圖A. S<=3/4B.S<=5/6C.S<=11/12D.S<=25/245.執(zhí)行如圖2-5-11所示的程序框圖,若輸入的x,y∈R,那么輸出的S的最大值為()圖2-5-11選擇題5流程圖A.0B.1C.2D.36.執(zhí)行如圖2-5-12所示的程序框圖,如果輸入的t∈[﹣2,2],則輸出的s屬于()圖2-5-12選擇題6流程圖A. [-6,-2]B.[-5,-1]C.[-4,5]D.[-3,6]二.畫流程圖1.有一位學生目前需要從學校到蘇州火車站,過程為宿舍、四號支線地鐵站、蘇州火車站。請用流程圖畫出來。2.有一位同學目前需要從學校到蘇州火車站,當他從宿舍開始時,可以選擇打車,也可以四號支線地鐵站、蘇州火車站。請用流程圖畫出它可能的過程。3.從鍵盤輸入兩個數(shù)據(jù)A,B,交換后輸出。(程序)當A>B的時候不交換,否則交換(流程圖)課題項目三任務1新能源汽車電池組的選擇(單分支)課型講練授課班級授課時數(shù)1教學目標靈活運用關系及邏輯運算符;if語句的單分支語法結(jié)構(gòu)教學重點if語句的具體應用。教學難點關系運算符和邏輯運算符具體運用。學情分析對于C語言語法知識的講解,容易理解,重點在于培養(yǎng)學生良好的編程習慣及編程規(guī)范,其二是培養(yǎng)學生的探究式自學能力,調(diào)試程序的能力。因而重點是語法知識的掌握,逐步過渡到培養(yǎng)學生良好的編程習慣及編程規(guī)范。教學效果教后記項目三任務1新能源汽車電池組的選擇(單分支)3.1.1任務目標通過鍵盤輸入新能源汽車的電池型號,如果輸入1則輸出使用鉛酸電池。(變量:電池型號batterytype)任務目標運行截圖如圖3-1-1所示:圖3-1-1任務目標截圖3.1.2知識儲備在日常生活中,總會出現(xiàn)根據(jù)條件來判定結(jié)果的情況。在程序中,我們將這種情況采用選擇結(jié)構(gòu)。if語句的格式格式:if(條件)語句組1;[else語句組2;]說明:[]格式代表可有可無,在實際使用[]中的內(nèi)容也可以不寫。C語言的選擇結(jié)構(gòu)是通過條件判斷語句來實現(xiàn)的,模塊化的結(jié)構(gòu)便于閱讀、調(diào)試和修改。選擇結(jié)構(gòu)有兩種方式來實現(xiàn):由if語句來實現(xiàn)的兩分支語句;由switch語句來實現(xiàn)的多分支語句。在選擇結(jié)構(gòu)中要對條件判斷表達式進行判斷,根據(jù)判斷的結(jié)果決定選擇哪一個分支路徑,條件判斷表達式大多情況下是由關系表達式或者邏輯表達式構(gòu)成。選擇結(jié)構(gòu)的三種流程圖如圖3-1-2所示,其中(1)為單分支結(jié)構(gòu),(2)為雙分支結(jié)構(gòu),(3)為多分支結(jié)構(gòu)。圖3-1-2選擇結(jié)構(gòu)的三種流程圖1.關系運算符及優(yōu)先順序關系運算符:<、<=、>、>=、==、!=,分別稱之為:小于、小于等于、大于、大于等于、等于、不等于。關系運算符,關系表達式等的說明如表3-1-1所示:表3-1-1關系運算符等的說明名稱說明關系運算符系統(tǒng)提供了六種關系運算符<:小于雙目運算符優(yōu)先級第6級<=:小于等于雙目運算符同上>:大于雙目運算符同上>=:大于等于雙目運算符同上==:等于雙目運算符優(yōu)先級第7級!=:不等于雙目運算符同上關系表達式用關系運算符將兩個表達式連接起來的式子,稱關系表達式。例如:3>2、x+y>x+z、x>y==z、z=x>y、'c'<'d'等都是關系表達式。關系表達式的值是一個邏輯值,即“真”或“假”。若關系成立,為“真”,值為“1”;若關系不成立,為“假”,值為“0”。邏輯運算符及優(yōu)先級C語言主要提供邏輯與、邏輯或、邏輯非三種邏輯運算符,具體的使用和說明如表3-1-2所示:表3-1-2邏輯運算符說明名稱說明邏輯運算符C語言提供3種邏輯運算符:“!”:邏輯非,是單目運算符,優(yōu)先級是2。例如:!3“&&”:邏輯與,是雙目運算符,優(yōu)先級是11。例如:0&&1“||”:邏輯或,是雙目運算符,優(yōu)先級是12。例如:'a'||'b'邏輯表達式用邏輯運算符將關系表達式或邏輯量(0、1)連接起來的式子就是邏輯表達式。例如:a>b&&x>y、0&&1、2||9&&0、4-!3&&'c'、'a'||'b'、3.5&&4.8等都是邏輯表達式。邏輯表達式的值邏輯表達式的值也是一個邏輯值,即“真”或“假”。為“真”,值為“1”;為“假”,值為“0”。當運算對象取不同的邏輯值時,邏輯運算真值表如表3-2所示。ab!a!ba&&ba||b110011100101011001001100運算符的優(yōu)先級C語言中,運算符的運算優(yōu)先級共分為15級。1級最高,15級最低。在表達式中,優(yōu)先級較高的先于優(yōu)先級較低的進行運算。在一個表達式中可能包含多種不同數(shù)據(jù)類型的數(shù)據(jù)及運算符,不同的運算順序可能得出不同結(jié)果甚至出現(xiàn)錯誤運算錯誤,必須按一定順序進行結(jié)合,才能保證運算的合理性以及結(jié)果的正確性、唯一性。當一個運算量兩側(cè)的運算符優(yōu)先級相同時,按運算符的結(jié)合性所規(guī)定的結(jié)合方向處理,C語言中各運算符的結(jié)合性分為兩種,即左結(jié)合性(自左至右)和右結(jié)合性(自右至左)。在程序中,運算符的優(yōu)先級如圖3-1-3所示:圖3-1-3運算符的優(yōu)先級if單分支語句格式在選擇結(jié)構(gòu)中,一般我們把滿足條件后執(zhí)行一種結(jié)果,沒有else的選擇結(jié)構(gòu)叫做單分支語句。單分支語句格式:if(表達式){語句1;語句2;…}單分支語句流程圖:根據(jù)單分支的程序,流程圖如圖3-1-4所示,其中if單分支流程圖(1)與N-S流程圖(2)圖3-1-4單分支流程圖小貼士:這種自左至右的結(jié)合方向就稱為小貼士:這種自左至右的結(jié)合方向就稱為“左結(jié)合性”。而自右至左的結(jié)合方向稱為“右結(jié)合性”。C語言運算符中有不少為右結(jié)合性,應注意區(qū)別,以避免理解錯誤。示例1:求關系表達式的值。1#include<stdio.h>2voidmain()3{4intx=1,y=2,z=3;5printf("%d\n",3>2);6printf("%d\n",2>3);7printf("%d\n",x+y>x+z);8printf("%d\n",x>y==z);9printf("%d\n",z=x>y);10printf("%d\n",'c'<'d');11}運行截圖:圖3-1-5示例1運行截圖解析:本例題為關系表達式的應用,第一個輸出語句為求3>2的值,關系表達式運算結(jié)果為真或假,真為1,假為0,3>2成立結(jié)果為真,即為1;第二個輸出語句求2>3的值,2>3不成立,結(jié)果為假,即為0;第三個輸出語句中算術運算符+的優(yōu)先級高于關系運算符>,先算加法,再比較大小,先求得x+y=1+2=3,x+z=1+3=4,再得到3>4的運算結(jié)果為假,即為0;第四個輸出語句中關系運算符>優(yōu)先級高于關系運算符==的優(yōu)先級,先計算x>y也就是1>2,結(jié)果為假,即為0,再比較0==3,結(jié)果為假,即為0;第五個輸出語句中關系運算符優(yōu)先級高于賦值運算符,先比較x>y,也就是1>2,結(jié)果為假,即為0,再將0賦值給z,輸出z的值為0;第六個輸出語句為比較兩個字符’c’和’d’,c的ASCⅡ碼值小于d的ASCⅡ碼值,結(jié)果為真,即為1。示例2:求邏輯表達式的值。程序代碼:1#include<stdio.h>2voidmain()3{4intx=1,y=2,a=1,b=2,c=3,d=4,m=1,n=1;//定義整型變量5printf("%d\n",0&&x||y);//輸出邏輯表達式的值6printf("%d\n",2||9&&0);7printf("%d\n",4-!3&&'c');8printf("%d,%d,%d\n",(m=a>b)&&(n=c>d),m,n);9printf("%d,%d,%d\n",(m=d>c)||(n=c>d),m,n);10}運行結(jié)果:
圖3-1-6示例2運行截圖解析:本例題為邏輯表達式的應用,第一個輸出語句根據(jù)邏輯運算符&&優(yōu)先級高于||,先進行0&&x(x值為1),結(jié)果為0,再進行0||y(y值為2,非零值),結(jié)果為1;第二個輸出語句的求解過程同上;第三個輸出語句中邏輯非!的優(yōu)先級最高,先進行求解!3,結(jié)果為0,再進行算術運算符的求解4-0,結(jié)果為4,最后4&&‘c’,兩個非零值進行邏輯與,結(jié)果為1;第四個輸出語句中按照從左到右的次序輸出,先進行關系運算a>b,將結(jié)果0賦值給m,但是由于0&&任意值均為0,所以后面部分不用再進行計算,直接輸出表達式的值,所以表達式為0,m的值為0,n的值沒有計算保持原始數(shù)據(jù)1,因此輸出結(jié)果為0,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度國際船舶租賃合同環(huán)境保護責任與履約評估3篇
- 二零二五版?zhèn)€人住房抵押貸款合同2篇
- 2025年度家具租賃服務合同標準文本4篇
- 2025年肉類加工企業(yè)鮮豬肉原料采購合同3篇
- 2025年度生態(tài)農(nóng)業(yè)園區(qū)商鋪租賃合同規(guī)范2篇
- 2024租賃公司設備租賃與購買合同
- 二零二五版高壓電纜敷設電力施工勞務合同范本2篇
- 二零二五年度礦產(chǎn)品出口與國內(nèi)銷售合同3篇
- 2025年度運動服飾租賃服務合同樣本3篇
- 2025年度農(nóng)機作業(yè)租賃與農(nóng)村土地流轉(zhuǎn)服務合同
- 期末綜合試卷(試題)2024-2025學年人教版數(shù)學五年級上冊(含答案)
- 2024ESC心房顫動管理指南解讀-第一部分
- 保定市縣級地圖PPT可編輯矢量行政區(qū)劃(河北省)
- 新蘇教版科學六年級下冊全冊教案(含反思)
- 供方注冊指南-ZTE
- 真心英雄合唱歌詞
- 旅游感知形象研究綜述 論文
- 如何提高辦文辦會辦事能力
- GB_T 37494-2019 糧油機械 軋坯機(高清版)
- 【校本教材】《身邊的化學》高中化學校本課程
- 產(chǎn)后訪視技術規(guī)范
評論
0/150
提交評論