




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
單元一
C語(yǔ)言概述-初識(shí)程序?qū)W(xué)【問(wèn)題】編程技術(shù)在現(xiàn)代社會(huì)中的影響?
編程技術(shù)對(duì)于現(xiàn)代社會(huì)的重要性不言而喻。我們的生活已經(jīng)與數(shù)字化緊密相連,借助計(jì)算機(jī)和互聯(lián)網(wǎng),我們可以完成大量的工作和娛樂(lè)活動(dòng),如在線購(gòu)物、社交媒體、網(wǎng)上支付、在線教育等等。這些活動(dòng)的實(shí)現(xiàn)都依賴(lài)于編程技術(shù),而程序員則是編程技術(shù)的核心人才。計(jì)算機(jī)語(yǔ)言2認(rèn)識(shí)C語(yǔ)言3C語(yǔ)言開(kāi)發(fā)環(huán)境4程序框架結(jié)構(gòu)目錄1計(jì)算機(jī)語(yǔ)言—軟件與程序的概念計(jì)算機(jī)作為一種機(jī)器,如何理解人的需求,按照人的思想進(jìn)行工作,是問(wèn)題求解的關(guān)鍵。程序正是為解決上述問(wèn)題而提出的一種自動(dòng)化求解的思路。計(jì)算機(jī)能完成一系列給定的功能,正是通過(guò)執(zhí)行計(jì)算機(jī)指令實(shí)現(xiàn)的。指令是指示計(jì)算機(jī)執(zhí)行的某種操作的命令,它由一串二進(jìn)制數(shù)碼組成。程序是為了讓計(jì)算機(jī)執(zhí)行某些操作或解決某個(gè)問(wèn)題而編寫(xiě)的一系列有序指令的集合,其操作對(duì)象是數(shù)據(jù),是人與計(jì)算機(jī)之間傳遞信息的媒介。軟件是指程序與其相關(guān)文檔或其他從屬物的集合。
軟件=程序+文檔=數(shù)據(jù)結(jié)構(gòu)+算法+文檔計(jì)算機(jī)語(yǔ)言—分類(lèi)計(jì)算機(jī)語(yǔ)言2認(rèn)識(shí)C語(yǔ)言3C語(yǔ)言開(kāi)發(fā)環(huán)境4程序框架結(jié)構(gòu)目錄1認(rèn)識(shí)C語(yǔ)言-C語(yǔ)言起源認(rèn)識(shí)C語(yǔ)言-C語(yǔ)言標(biāo)準(zhǔn)美國(guó)國(guó)家標(biāo)準(zhǔn)學(xué)會(huì)(ANSI)為C語(yǔ)言制定了一套ANSI標(biāo)準(zhǔn),即C語(yǔ)言標(biāo)準(zhǔn)。C89/C90標(biāo)準(zhǔn)1989國(guó)國(guó)家標(biāo)準(zhǔn)學(xué)會(huì)(ANSI)通過(guò)的C語(yǔ)言標(biāo)準(zhǔn)ANSIX3.159-1989,被稱(chēng)為C89。
C99標(biāo)準(zhǔn)1999年,ISO和國(guó)際電工委員會(huì)(IEC)正式發(fā)布了ISO/IEC:1999,簡(jiǎn)稱(chēng)C99。本書(shū)將基于C99標(biāo)準(zhǔn)進(jìn)行詳解。C11標(biāo)準(zhǔn)2011年ISO和IEC正式發(fā)布C語(yǔ)言標(biāo)準(zhǔn)第三版草案,稱(chēng)為
ISO/IEC9899:2011,簡(jiǎn)稱(chēng)C11。認(rèn)識(shí)C語(yǔ)言-C語(yǔ)言特點(diǎn)
早期的C語(yǔ)言主要用UNIX系統(tǒng)開(kāi)發(fā),后來(lái)C語(yǔ)言標(biāo)準(zhǔn)確立,C語(yǔ)言逐漸被廣泛應(yīng)用在各個(gè)領(lǐng)域,成為20世紀(jì)80年代乃至今天最優(yōu)秀的程序設(shè)計(jì)語(yǔ)言之一。C語(yǔ)言的主要特點(diǎn)如下:
表達(dá)能力強(qiáng)C99標(biāo)準(zhǔn)共有37個(gè)關(guān)鍵字、9條控制語(yǔ)句并且具備豐富的數(shù)據(jù)類(lèi)型。結(jié)構(gòu)化設(shè)計(jì)C語(yǔ)言程序設(shè)計(jì)講究自頂向下規(guī)劃項(xiàng)目的思路,注重每個(gè)功能模塊化編程。高效性C語(yǔ)言具有直接訪問(wèn)物理地址的能力,方便了內(nèi)存的管理??梢浦彩褂肅語(yǔ)言編寫(xiě)的程序修改部分代碼就可以移植到其他設(shè)備運(yùn)行。整個(gè)嵌入式行業(yè)都有用到c語(yǔ)言,用C的職位通常是嵌入式行業(yè),統(tǒng)稱(chēng)嵌入式軟件工程師。小家電,所謂的冰箱,空調(diào),洗衣機(jī),電飯煲,空氣凈化器,商場(chǎng)或飛機(jī)高鐵上的煙霧報(bào)警器,甚至自動(dòng)感應(yīng)的水龍頭等都是嵌入式設(shè)備。汽車(chē)行業(yè),除了看起來(lái)高大上的顯示界面,電機(jī)控制,通訊,開(kāi)關(guān)門(mén),空調(diào),充電,胎壓監(jiān)測(cè)等等都是單片機(jī)測(cè)量和控制。常見(jiàn)的智能手機(jī),智能手環(huán),手表,耳機(jī),紅綠燈,充電寶,鍵盤(pán),鼠標(biāo),平衡車(chē),電動(dòng)車(chē)這些也都是嵌入式設(shè)備。生活中常見(jiàn)的電子商品。比如夜晚的燈光廣告牌,你用到的u盤(pán),sd卡里面的驅(qū)動(dòng),天騎得共享單車(chē),測(cè)溫槍以及各行行業(yè)的工業(yè)產(chǎn)品的控制器所用語(yǔ)言都是用的c來(lái)寫(xiě)的。各種芯片原廠,液晶面板原廠,傳感器原廠,都是用C寫(xiě)自己產(chǎn)品驅(qū)動(dòng)。認(rèn)識(shí)C語(yǔ)言-C語(yǔ)言應(yīng)用領(lǐng)域計(jì)算機(jī)語(yǔ)言2認(rèn)識(shí)C語(yǔ)言3C語(yǔ)言編程環(huán)境4程序框架結(jié)構(gòu)目錄1C語(yǔ)言編程環(huán)境-常用的開(kāi)發(fā)工具
1.windows系統(tǒng)下最常見(jiàn)的C語(yǔ)言集成開(kāi)發(fā)環(huán)境,有MicrosoftVisualStudio、DEVC++、Code::Blocks、visualc++6.0、C-Free和Win-TC等。visualc++6.0報(bào)錯(cuò)比較準(zhǔn)確,是微軟推出的一款編譯器,是一個(gè)功能強(qiáng)大的可視化軟件開(kāi)發(fā)工具。Dev-C++(或者叫做Dev-Cpp)是Windows環(huán)境下的一個(gè)輕量級(jí)C/C++集成開(kāi)發(fā)環(huán)境(IDE)。它是一款自由軟件,遵守GPL許可協(xié)議分發(fā)源代碼。適合于在教學(xué)中供C/C++語(yǔ)言初學(xué)者使用,也適合于非商業(yè)級(jí)普通開(kāi)發(fā)者使用。2.在線菜鳥(niǎo)工具:/compile/11/Devc++啟動(dòng)Devc++打開(kāi)或新建工程打開(kāi)或新建文件編輯、編譯連接、運(yùn)行完成
開(kāi)發(fā)工具使用devc++開(kāi)發(fā)應(yīng)用程序的步驟C語(yǔ)言編程環(huán)境-Devc++Devc++啟動(dòng)Devc++打開(kāi)或新建文件編輯、編譯連接、運(yùn)行完成
開(kāi)發(fā)工具使用devc++開(kāi)發(fā)應(yīng)用程序的步驟C語(yǔ)言編程環(huán)境-Devc++C語(yǔ)言編程環(huán)境-一個(gè)C語(yǔ)言小程序程序代碼運(yùn)行結(jié)果程序開(kāi)發(fā)過(guò)程-四個(gè)步驟(1)
編輯源程序(Edit)(2)編譯源程序,生成目標(biāo)文件(Compile)(3)連接目標(biāo)文件及相關(guān)模塊,生成可執(zhí)行文件(Link
)(4)運(yùn)行可執(zhí)行文件(Run)*.cpp或*.c*.obj*.exe編輯編譯連接運(yùn)行計(jì)算機(jī)語(yǔ)言2認(rèn)識(shí)C語(yǔ)言3C語(yǔ)言開(kāi)發(fā)環(huán)境4程序框架結(jié)構(gòu)目錄1程序宏觀框架結(jié)構(gòu)-程序組成#include<stdio.h>
intmain(){ printf("歡迎來(lái)到C語(yǔ)言的世界!\n");//調(diào)用輸出函數(shù)在屏幕上顯示信息
return0;//函數(shù)返回值為0}編譯預(yù)處理函數(shù)(組)最基本的程序框架程序宏觀框架結(jié)構(gòu)-函數(shù)結(jié)構(gòu)intmain()//主函數(shù)
{printf("歡迎來(lái)到C語(yǔ)言的世界!\n");//調(diào)用輸出函數(shù)在屏幕上顯示信息
return0;//函數(shù)返回值為0}函數(shù)返回值類(lèi)型
函數(shù)名(形式參數(shù))
{
說(shuō)明語(yǔ)句;
執(zhí)行語(yǔ)句;}函數(shù)首部
函數(shù)體(1)函數(shù)構(gòu)成(2)注釋?zhuān)?)程序語(yǔ)句:用;作為語(yǔ)句結(jié)束符編譯預(yù)處理:程序編譯之前的準(zhǔn)備工作,以#開(kāi)頭函數(shù)分類(lèi)
:函數(shù)是構(gòu)成C語(yǔ)言程序的基本單位;
包括主函數(shù)、庫(kù)函數(shù)和用戶自定義函數(shù)函數(shù)組:程序的執(zhí)行以主函數(shù)為核心展開(kāi);
函數(shù)組中有且僅有一個(gè)主函數(shù)main()//
單行注釋的起始符號(hào)/*......*/作為單行或多行注釋程序宏觀框架結(jié)構(gòu)-函數(shù)結(jié)構(gòu)程序框架結(jié)構(gòu)-隨堂練習(xí)模仿編程,打印出一個(gè)“*”符號(hào)構(gòu)成的三角形圖案*************************
單元小結(jié)
單元二
C語(yǔ)言語(yǔ)法基礎(chǔ)-走進(jìn)數(shù)據(jù)世界1字符輸出函數(shù)3如何輸出數(shù)據(jù)2如何定義數(shù)據(jù)4如何輸入數(shù)據(jù)C語(yǔ)言數(shù)據(jù)分類(lèi)5算術(shù)運(yùn)算符6綜合應(yīng)用目錄導(dǎo)學(xué)【問(wèn)題】如何表示計(jì)算機(jī)中的數(shù)據(jù)?
計(jì)算機(jī)憑借超越人腦的計(jì)算速度改變著現(xiàn)實(shí)世界數(shù)據(jù)處理的進(jìn)程。數(shù)據(jù)處理其本質(zhì)是對(duì)數(shù)據(jù)的操作,這些數(shù)據(jù)可能是數(shù)學(xué)問(wèn)題中的數(shù)值,可能是信息處理中的文字、聲音或視頻。那么,現(xiàn)實(shí)世界中存在的大量簡(jiǎn)單數(shù)據(jù)如何在程序中存儲(chǔ)和表示呢?
C語(yǔ)言數(shù)據(jù)分類(lèi)——程序構(gòu)成【例2-1】設(shè)a=18,b=35,要求將a、b兩個(gè)整型變量的值進(jìn)行交換?!窘忸}思路】交換兩個(gè)變量的值,需要借助一個(gè)中間量,臨時(shí)保存其中一個(gè)變量的值?!驹创a】#include<stdio.h>//包含標(biāo)準(zhǔn)輸入輸出頭文件intmain()//主函數(shù){
inta=18,b,temp;//定義三個(gè)整型變量,并為整型變量a初始化賦值為18b=35;//為變量b賦值為35printf("交換前a=%d,b=%d\n",a,b);//輸出交換前a、b的值temp=a;//將變量a的值賦給變量temp保存a=b;//將變量b的值賦給變量ab=temp;//將變量temp的值賦給變量bprintf("交換后a=%d,b=%d",a,b);//輸出交換后a、b的值return0;//函數(shù)返回值為0}【運(yùn)行結(jié)果】交換前
a=18,b=35交換后
a=35,b=18
C語(yǔ)言數(shù)據(jù)分類(lèi)——數(shù)據(jù)類(lèi)型C語(yǔ)言能處理多種類(lèi)型的數(shù)據(jù),但其最基本的數(shù)據(jù)類(lèi)型只有:整型、浮點(diǎn)型(小數(shù))和字符型3種。名稱(chēng)符號(hào)存儲(chǔ)空間取值范圍短整型[signed]short[int]2字節(jié)-32768~32677即-2^15~(2^15-1)無(wú)符號(hào)短整型unsignedshort[int]2字節(jié)0~65535即0~(2^16-1)基本整型[signed]int4字節(jié)-2147483648~2147483647即-2^31~(2^31-1)無(wú)符號(hào)基本整型unsignedint4字節(jié)0~4294967295即0~(2^32-1)長(zhǎng)整型long[int]4字節(jié)-2147483648~2147483647即-2^31~(2^31-1)無(wú)符號(hào)長(zhǎng)整型unsignedlong[int]4字節(jié)0~4294967295即0~(2^32-1)長(zhǎng)長(zhǎng)整型longlongint8字節(jié)-2^63~(2^63-1)
C語(yǔ)言數(shù)據(jù)分類(lèi)——整型名稱(chēng)符號(hào)存儲(chǔ)空間有效數(shù)字取值范圍單精度f(wàn)loat4字節(jié)6~7-3.4×10^-38~3.4×10^38雙精度double8字節(jié)15~16-1.7×10^-308~1.7×10^308長(zhǎng)雙精度longdouble16字節(jié)18~19-1.2×10^-4932~1.2×10^4932
C語(yǔ)言數(shù)據(jù)分類(lèi)——浮點(diǎn)型ASCII的全稱(chēng)是"美國(guó)信息交換標(biāo)準(zhǔn)代碼"。它設(shè)計(jì)于60年代早期,是計(jì)算機(jī)和諸如打印機(jī)、磁帶驅(qū)動(dòng)器之類(lèi)的硬件設(shè)備的標(biāo)準(zhǔn)字符集。ASCII是7比特字符集,包含了128個(gè)不同的字符值。ASCII支持0-9的數(shù)字,A-Z大寫(xiě)和小寫(xiě)英文字母,以及一些特殊字符。被廣泛使用于現(xiàn)代計(jì)算機(jī)、HTML和因特網(wǎng)上的字符集都是基于ASCII。
C語(yǔ)言數(shù)據(jù)分類(lèi)——字符型字符型數(shù)據(jù)存放的是該字符所對(duì)應(yīng)的ASCII碼值(一個(gè)整數(shù))。字符型數(shù)據(jù)進(jìn)行運(yùn)算時(shí)按照所對(duì)應(yīng)ASCII碼值進(jìn)行運(yùn)算。名稱(chēng)符號(hào)存儲(chǔ)空間取值范圍字符型char1字節(jié)值范圍是-128~127值與ASCII表中的字符對(duì)應(yīng)無(wú)符號(hào)字符型unsignedchar1字節(jié)值范圍是0~255值與ASCII表中的字符對(duì)應(yīng)
C語(yǔ)言數(shù)據(jù)分類(lèi)——字符型(1)關(guān)鍵字:在編程語(yǔ)言里事先定義并賦予了特殊含義的單詞類(lèi)型說(shuō)明符:int、float、char、void語(yǔ)句定義符:if、for、while、return(2)用戶自定義標(biāo)識(shí)符:可定義符號(hào)常量名、變量名、函數(shù)名、類(lèi)型
C語(yǔ)言數(shù)據(jù)分類(lèi)——標(biāo)識(shí)符(3)標(biāo)識(shí)符命名規(guī)則標(biāo)識(shí)符只能由字母、數(shù)字和下劃線組成。標(biāo)識(shí)符不能以數(shù)字作為第一個(gè)字符。標(biāo)識(shí)符不能使用關(guān)鍵字。標(biāo)識(shí)符區(qū)分大小寫(xiě)字母,如add、Add和ADD是不同的標(biāo)識(shí)符。(1)哪些標(biāo)識(shí)符屬于合法的
用戶自定義標(biāo)識(shí)符:(2)識(shí)別程序中的標(biāo)識(shí)符#include<stdio.h> voidmain() {inta,b,c;printf("請(qǐng)輸入矩形的長(zhǎng)和寬:");
scanf("%d%d",&a,&b);
c=2*(a+b); printf("該矩形周長(zhǎng)為:%d.\n",c);}Main
void
_num
age2
a*
N4
3m
%dstrarr_1_names*t
C語(yǔ)言數(shù)據(jù)分類(lèi)——標(biāo)識(shí)符
C語(yǔ)言數(shù)據(jù)分類(lèi)——sizeof()運(yùn)算符【說(shuō)明】
sizeof是C語(yǔ)言的一種單目操作符,它并不是函數(shù)。
sizeof運(yùn)算符用來(lái)計(jì)算被運(yùn)算對(duì)象在內(nèi)存中所占字節(jié)數(shù),被運(yùn)算對(duì)象可以是數(shù)據(jù)類(lèi)型、或已定義的變量、或已定義的數(shù)組(計(jì)算結(jié)果是數(shù)組所有元素的存儲(chǔ)單元之和)、或表達(dá)式(計(jì)算結(jié)果是表達(dá)式值所占內(nèi)存的字節(jié)數(shù))?!緎izeof語(yǔ)句格式】sizeof(運(yùn)算對(duì)象)
C語(yǔ)言數(shù)據(jù)分類(lèi)——sizeof()運(yùn)算符【例2-2】用運(yùn)算符sizeof()計(jì)算不同類(lèi)型的數(shù)據(jù)在內(nèi)存中所占的字節(jié)數(shù)。#include<stdio.h>//包含標(biāo)準(zhǔn)輸入輸出頭文件intmain()//主函數(shù){ intnum; floatx; doubley; chart; printf("變量占的字節(jié)數(shù):%d,%d,%d,%d\n", sizeof(num),sizeof(x),sizeof(y),sizeof(t)); printf("常量占的字節(jié)數(shù):%d,%d,%d,%d\n", sizeof(3),sizeof(45.6),sizeof(45.6789545),sizeof('m')); return0;//函數(shù)返回值為0}【運(yùn)行結(jié)果】變量占的字節(jié)數(shù):4,4,8,1常量占的字節(jié)數(shù):4,8,8,11字符輸出函數(shù)3如何輸出數(shù)據(jù)2如何定義數(shù)據(jù)4如何輸入數(shù)據(jù)C語(yǔ)言數(shù)據(jù)分類(lèi)5算術(shù)運(yùn)算符6綜合應(yīng)用目錄數(shù)據(jù)定義——直接常量(1)整型常量表示方式前置符號(hào)構(gòu)成示例表示方式十進(jìn)制無(wú)0~9、正負(fù)號(hào)65,-57十進(jìn)制八進(jìn)制00~7、正負(fù)號(hào)032,027,-033八進(jìn)制十六進(jìn)制0x或0X0~9,a~f(或A~F)、正負(fù)號(hào)0x101,0Xff十六進(jìn)制(2)浮點(diǎn)型常量表示方式符號(hào)構(gòu)成示例表示方式十進(jìn)制小數(shù)小數(shù)點(diǎn).0~9、正負(fù)號(hào)和小數(shù)點(diǎn)1.23,.23,-1.必須有唯一的小數(shù)點(diǎn)指數(shù)字母e或E0~9、正負(fù)號(hào)、e或E1.23e3,1.23E3字母e或E前必有數(shù),e或E后必為整數(shù)數(shù)據(jù)定義——直接常量(3)字符型常量直接字符常量:用單撇引號(hào)括起來(lái)的單一字符稱(chēng)之為字符型常量轉(zhuǎn)義字符常量:以反斜杠“\”作為標(biāo)志符號(hào),見(jiàn)表2-3字符型常量實(shí)例'a'、'B'、'9'、'*'直接字符常量'\n''\017''\x01'回車(chē)換行??'\'''\"''\\'單引號(hào)雙引號(hào)反斜杠數(shù)據(jù)定義——直接常量字符串常量字符串常量就是用雙撇引號(hào)括起來(lái)的一串字符序列。字符串中含有的字符個(gè)數(shù)是該字符串的長(zhǎng)度。字符串存儲(chǔ)時(shí),每個(gè)字符占1個(gè)字符,并在字符串的結(jié)尾自動(dòng)加上一個(gè)字符串結(jié)束標(biāo)志'\0',因此字符串的存儲(chǔ)長(zhǎng)度比字符串的字符個(gè)數(shù)多1。數(shù)據(jù)定義——直接常量定義格式(4)符號(hào)常量是指用符號(hào)代表某個(gè)常量。#define符號(hào)常量標(biāo)識(shí)符
常量值宏定義程序示例#include<stdio.h> #definePI3.14//定義符號(hào)常量PI代表3.14voidmain() {floatr,area; printf("請(qǐng)輸入半徑:");scanf("%f",&r); area=PI*r*r; printf("該圓的面積為:%f.\n",area);}說(shuō)明:符號(hào)常量標(biāo)識(shí)符通常大寫(xiě)寫(xiě)在程序開(kāi)頭位置數(shù)據(jù)定義——直接常量(1)判斷下列常量表示正確與否?(2)字符串常量“Todayisfine?\n”的字符串長(zhǎng)度為
個(gè)字節(jié),它占用的存儲(chǔ)空間為
個(gè)字節(jié)。整型常量:32768、037、081、0x4f、0xAH浮點(diǎn)型常量:.124、3.0、1e3、2.3E1.5字符型常量:'a'、'101'、65、'\x21'、'9'(3)在編程處理物理力學(xué)相關(guān)運(yùn)算時(shí),常將重力加速度G定義為符號(hào)常量,其定義語(yǔ)句可描述為:
。數(shù)據(jù)定義——直接常量練習(xí)定義格式在程序運(yùn)行過(guò)程中其值可以改變的量稱(chēng)為變量。變量必須先定義,后使用。類(lèi)型標(biāo)識(shí)符
變量名1,變量名2,…,變量名n;floatr,area; doublea,b,c;inti=1,s; unsignedlongm,k;charch; 程序示例//定義單精度浮點(diǎn)型變量r和area//定義雙精度浮點(diǎn)型變量a,b和c//定義兩個(gè)整型變量,同時(shí)給變量i初始化,賦初值1//定義兩個(gè)無(wú)符號(hào)長(zhǎng)整型變量m和k//定義一個(gè)字符型變量ch用戶標(biāo)識(shí)符定名規(guī)則數(shù)據(jù)定義——變量定義(1)下列變量定義中合法的是:(2)若要根據(jù)定期存款數(shù)額c、存款期限m和相應(yīng)的利率r,編程計(jì)算本息合計(jì)s,則變量定義語(yǔ)句如何描述?longdo=0xfd;intmax=min=0;doublef,inta;charch="A";數(shù)據(jù)定義——變量定義練習(xí)doublefloatLongunsignedintchar,short
不同類(lèi)型的數(shù)據(jù)共存于同一個(gè)表達(dá)式中時(shí),按照C語(yǔ)言的規(guī)則要轉(zhuǎn)換成同一類(lèi)型,轉(zhuǎn)換是編譯系統(tǒng)自動(dòng)完成的。說(shuō)明:必定的轉(zhuǎn)換運(yùn)算對(duì)象類(lèi)型不同時(shí)轉(zhuǎn)換數(shù)據(jù)類(lèi)型轉(zhuǎn)換——自動(dòng)類(lèi)型轉(zhuǎn)換printf("%d\n",10/3);printf("%f\n",10.0/3);運(yùn)算結(jié)果:33.333333在C語(yǔ)言中,還可以把一種類(lèi)型的數(shù)據(jù)強(qiáng)制轉(zhuǎn)換為另一種類(lèi)型的數(shù)據(jù)。一般格式(類(lèi)型標(biāo)識(shí)符)(表達(dá)式)重點(diǎn)提示:當(dāng)表達(dá)式為單一常量或變量時(shí),表達(dá)式兩側(cè)的括號(hào)()可以省略。當(dāng)浮點(diǎn)型數(shù)據(jù)轉(zhuǎn)換為整數(shù)時(shí),系統(tǒng)采用的是直接截?cái)嗟姆绞?,而不是四舍五入。?duì)變量進(jìn)行強(qiáng)制轉(zhuǎn)換后,變量本身的數(shù)據(jù)類(lèi)型不變,而是得到一個(gè)所需要類(lèi)型的數(shù)據(jù)。(int)2.6doublea=3.68;intb;b=(int)a;2a=3.14b=3程序示例數(shù)據(jù)類(lèi)型轉(zhuǎn)換——強(qiáng)制類(lèi)型轉(zhuǎn)換1字符輸出函數(shù)3如何輸出數(shù)據(jù)2如何定義數(shù)據(jù)4如何輸入數(shù)據(jù)C語(yǔ)言數(shù)據(jù)分類(lèi)5算術(shù)運(yùn)算符6綜合應(yīng)用目錄#include<stdio.h> voidmain() {floatr,area; printf("請(qǐng)輸入半徑:");scanf("%f",&r); area=3.14*r*r; printf("該圓的面積為:%f.\n",area);}示例:計(jì)算并輸出半徑為r的圓的面積。格式化輸出函數(shù)輸出字符串格式化輸出函數(shù)輸出指定格式
如何輸出函數(shù)——格式輸出函數(shù)函數(shù)格式格式1:printf("字符串常量");//將“字符串常量”顯示輸出格式2:printf("格式控制字符串",輸出項(xiàng)列表);//按“格式控制字符串”所規(guī)定的格式,將“輸出項(xiàng)列表”中各輸出項(xiàng)的值輸出到標(biāo)準(zhǔn)輸出設(shè)備。
如何輸出函數(shù)——格式輸出函數(shù)printf()函數(shù)的功能是將信息按照格式控制字符串中指定的格式輸出到顯示器上顯示。函數(shù)功能格式說(shuō)明printf(“格式控制字符串
“,輸出項(xiàng)列表
);雙撇括號(hào)括起來(lái)包括“格式控制符”和“普通字符”“格式控制符”由%開(kāi)頭“普通字符”按原樣輸出。輸出項(xiàng)之間用逗號(hào)隔開(kāi)輸出項(xiàng)可以是常量、變量及表達(dá)式輸出項(xiàng)個(gè)數(shù)與格式控制符個(gè)數(shù)相同
如何輸出函數(shù)——格式輸出函數(shù)printf("請(qǐng)輸入矩形的長(zhǎng)和寬:");//普通字符串,按原樣輸出
printf("%d,%d,%d,%d\n",a,b,i,j);//輸出變量a,b,i,j的值printf("圓的面積為:%6.2f",area);//area按照寬度為6,2個(gè)小數(shù)位的形式輸出。
示例格式說(shuō)明符功能說(shuō)明舉例c以字符形式輸出單個(gè)字符chart='A';printf("%c,%c",t,'D');//輸出:A,Dd或i以有符號(hào)的十進(jìn)制整數(shù)形式輸出inta=-15;printf("%d,%i",a,3);//輸出:-15,3%u以無(wú)符號(hào)十進(jìn)制整數(shù)形式輸出intb=-15;printf("%u,%u",b,153);//輸出:4294967281,153%o(小寫(xiě)字母)以八進(jìn)制無(wú)符號(hào)形式輸出整數(shù)intb=15;printf("%o,%o",b,30);//輸出:17,36%x或%X以十六進(jìn)制無(wú)符號(hào)形式輸出整數(shù)inta=168;printf("%d,%x,%X",a,a,a);//輸出:168,a8,A8%f按十進(jìn)制小數(shù)形式輸出單、雙精度數(shù),默認(rèn)為6位小數(shù)floata=36.73; doubleb=75.89;printf("%f,%f",a,b);//輸出:36.730000,75.890000%e或%E按指數(shù)形式輸出單、雙精度數(shù)精度實(shí)數(shù)floata=0.03673;doubleb=1758.9;printf("%e,%E",a,b);//輸出:3.673000e-002,1.758900+003
如何輸出函數(shù)——格式輸出函數(shù)附加格式修飾字符
如何輸出函數(shù)——格式輸出函數(shù)修飾說(shuō)明符功能說(shuō)明舉例L或l用于長(zhǎng)整型,可加在格式符d、ox、u之前l(fā)onglonga=12345678901;printf("%d,%lld",a,a);//輸出:-539222987,12345678901h按短整型數(shù)據(jù)輸出inta=34567;printf("%d,%hd",a,a);//輸出:34567,-30969m(正整數(shù))指定輸出項(xiàng)所占的字符數(shù)(域?qū)挘魧?shí)際位數(shù)小于m,左端補(bǔ)空格,若大于m,按實(shí)際位數(shù)輸出。inta=19;printf("%3d,%5d",a,a);//輸出:19,19.n(正整數(shù))指定輸出實(shí)型數(shù)據(jù)的小數(shù)位數(shù),系統(tǒng)默認(rèn)6位小數(shù)
floata=8.367;printf("%.2f,%6.2f",a,a);//輸出:8.37,8.370(數(shù)字)指定數(shù)字前的空格用0填充inta=19;printf("%04d",a);//輸出:0019-指定輸出項(xiàng)的對(duì)齊方式,-表示左對(duì)齊,默認(rèn)是右對(duì)齊inta=19;printf("%-4d,%4d",a,a);//輸出:19,19
(1)輸出提示語(yǔ)“請(qǐng)輸入銀行卡密碼:”的語(yǔ)句可描述為_(kāi)_______________________________________
(2)已知變量sum為n以?xún)?nèi)自然數(shù)的和,按6個(gè)字符寬度輸出sum值的語(yǔ)句可描述為
;
如何輸出函數(shù)——格式輸出函數(shù)練習(xí)printf("請(qǐng)輸入銀行卡密碼:");
printf(“sum=%6d”,sum);【源代碼】#include<stdio.h>//包含標(biāo)準(zhǔn)輸入輸出頭文件intmain()//主函數(shù){inta=3,b=6;//定義兩個(gè)個(gè)整型變量a,b,表示長(zhǎng)方形的長(zhǎng)和寬ints=a*b;//計(jì)算長(zhǎng)方形面積printf("長(zhǎng)方形面積是%d",s);//輸出長(zhǎng)方形的面積return0;//函數(shù)返回值為0}
如何輸出函數(shù)——格式輸出函數(shù)示例【例2-4】已知一個(gè)長(zhǎng)方形的長(zhǎng)3,寬6,求長(zhǎng)方形的面積并輸出。【運(yùn)行結(jié)果】長(zhǎng)方形面積是18【解題思路】首先確定程序中涉及的變量和類(lèi)型,再確定變量值的獲取方式,是通過(guò)賦值還是運(yùn)算,最后運(yùn)用輸出語(yǔ)句輸出變量的值。
如何輸出函數(shù)——putchar()函數(shù)函數(shù)格式程序示例putchar(ch);putchar('A');
//輸出字符'A'putchar('\101');//輸出字符'A'putchar('a'-32); //輸出字符'A'intch=65;putchar(ch);//輸出字符'A'//在標(biāo)準(zhǔn)輸出設(shè)備上輸出一個(gè)字符整型或字符型的常量、變量或表達(dá)式
下面程序功能為:輸出與變量ch左右相鄰的兩個(gè)字母,根據(jù)注釋信息將程序填寫(xiě)完整。#include<stdio.h> voidmain() {charch=’M’; //字符變量定義并初始化
//調(diào)用putchar()輸出與ch左相鄰的字母
//調(diào)用putchar()輸出與ch右相鄰的字母}
如何輸出函數(shù)——putchar()函數(shù)練習(xí)
如何輸出函數(shù)——putchar()函數(shù)示例【例2-5】依據(jù)注釋?zhuān)褂米址敵龊瘮?shù)putchar()實(shí)現(xiàn)變量值的輸出。#include<stdio.h>intmain(){intb;b=97;chart='D';putchar(t);//輸出字符變量的值putchar(b);//輸出ASCII值為97對(duì)應(yīng)的字符putchar('\n');//輸出轉(zhuǎn)義字符\nputchar('#');//輸出字符常量#putchar(65);//輸出ASCII值為65的字符’A’return0;}【運(yùn)行結(jié)果】Da#A1字符輸出函數(shù)3如何輸出數(shù)據(jù)2如何定義數(shù)據(jù)4如何輸入數(shù)據(jù)C語(yǔ)言數(shù)據(jù)分類(lèi)5算術(shù)運(yùn)算符6綜合應(yīng)用目錄
如何輸入函數(shù)——scanf()函數(shù)【例2-4】已知一個(gè)長(zhǎng)方形的長(zhǎng)3,寬6,求長(zhǎng)方形的面積并輸出?!驹创a】#include<stdio.h>intmain()//主函數(shù){inta=3,b=6;ints=a*b;printf("長(zhǎng)方形面積是%d",s);return0;}輸入一個(gè)長(zhǎng)方形的長(zhǎng)和寬,求長(zhǎng)方形的面積并輸出?!驹创a】#include<stdio.hintmain()//主函數(shù){inta,b;printf("請(qǐng)輸入a和b的值:");scanf("%d%d",&a,&b);ints=a*b;printf("長(zhǎng)方形面積是%d",s);return0;}函數(shù)格式scanf("格式控制字符串",輸入項(xiàng)地址列表);1.格式控制字符串:用雙引號(hào)括起來(lái)的字符串,包含格式說(shuō)明符和普通字符。
格式說(shuō)明符--%[修飾符]格式字符,將輸入數(shù)據(jù)轉(zhuǎn)換為指定類(lèi)型,存放到指
定變量中。
普通字符--從鍵盤(pán)輸入數(shù)據(jù)時(shí),普通字符要原樣輸入。2.輸入變量地址表列:即是存放數(shù)據(jù)的變量的地址,同時(shí)輸入多個(gè)量時(shí),用“,”間隔開(kāi),書(shū)寫(xiě)時(shí)要在每個(gè)變量前面加“&”符號(hào),其后的變量名是接收輸入數(shù)據(jù)的變量。
如何輸入函數(shù)——scanf()函數(shù)函數(shù)說(shuō)明scanf("%d%d",&a,&b);格式符功能說(shuō)明%c接收一個(gè)字符%d或%i接收有符號(hào)十進(jìn)制整型數(shù)據(jù)%o(小寫(xiě)字母)接收無(wú)符號(hào)的八進(jìn)制整數(shù)%x或%X接收一個(gè)無(wú)符號(hào)的十六進(jìn)制整數(shù)%f接收一個(gè)浮點(diǎn)型數(shù)據(jù)(float)%1f接收一個(gè)浮點(diǎn)型數(shù)據(jù)(double)%s接收一字符串,以空白字符結(jié)束
如何輸入函數(shù)——scanf()函數(shù)格式符說(shuō)明練習(xí)重點(diǎn)提示:輸入數(shù)值時(shí),在兩個(gè)數(shù)值之間需要插入間隔符(空格、Tab鍵、回車(chē))%c作為輸入控制字符時(shí),在輸入字符數(shù)據(jù)之前不需要插入間隔符。
如何輸入函數(shù)——scanf()函數(shù)練習(xí)1.根據(jù)輸入的自然數(shù)n值,計(jì)算n以?xún)?nèi)自然數(shù)的和sum,則輸入n值的語(yǔ)句可描述為2.分別按照int、double和char類(lèi)型給變量a,b,c輸入數(shù)值的語(yǔ)句可描述為3.若a=2,b=3.2,c=’a’,則程序運(yùn)行時(shí),正確的輸入方法是scanf("%d%lf%c",&a,&b,&c);
scanf("%d",&n);23.2a
格式符說(shuō)明l用于長(zhǎng)整型和雙精度浮點(diǎn)型,可加在d.u.f之前mm代表一個(gè)正整數(shù),用于指定輸入數(shù)據(jù)所占寬度*表示本輸入項(xiàng)在讀入后不賦給相應(yīng)的變量
如何輸入函數(shù)——scanf()函數(shù)附加格式說(shuō)明符
如何輸入函數(shù)——scanf()函數(shù)示例【例2-6】從鍵盤(pán)依次輸入一個(gè)整數(shù)、一個(gè)單精度浮點(diǎn)數(shù)、一個(gè)雙精度浮點(diǎn)數(shù)、一個(gè)字符,將輸入數(shù)據(jù)分別賦值給不同變量,并輸出變量值。【解題思路】首先確定程序中涉及的變量和類(lèi)型,通過(guò)scanf格式輸入語(yǔ)句為變量賦值,最后運(yùn)用輸出語(yǔ)句輸出變量的值【源代碼】#include<stdio.h>//包含標(biāo)準(zhǔn)輸入輸出頭文件intmain()//主函數(shù){inta;//定義整型變量afloatb;//定義單精度變量bdoublec;//定義雙精度變量cchard;//定義字符變量dscanf("%d%f%lf%c",&a,&b,&c,&d);//通過(guò)鍵盤(pán)輸入數(shù)據(jù)為變量賦值printf("a=%d,b=%f,c=%f,d=%c",a,b,c,d);//輸出各變量的值return0;//函數(shù)返回值為0}【運(yùn)行結(jié)果】4556.545.5ca=45,b=56.500000,c=45.500000,d=c函數(shù)格式程序示例getchar();charch;ch=getchar();putchar(ch);//在標(biāo)準(zhǔn)輸入緩沖區(qū)中讀取一個(gè)字符。參數(shù)為空charch;putchar(getchar());//將getchar()讀入的字符直接用putchar()輸出
如何輸入函數(shù)——getchar()函數(shù)注:getchar()是與putchar()相對(duì)應(yīng)的單個(gè)字符輸入函數(shù),其作用是從鍵盤(pán)接收、輸出一個(gè)字符。說(shuō)明:
如何輸入函數(shù)——getchar()函數(shù)1.getchar()函數(shù)沒(méi)有參數(shù),函數(shù)的返回值是從輸入設(shè)備得到的字符,該函數(shù)對(duì)于鍵盤(pán)上的任何鍵都是有效的,如按下Shift鍵或Esc鍵,getchar()函數(shù)也會(huì)將其視為有效輸入。2.從鍵盤(pán)輸入的數(shù)據(jù)通過(guò)回車(chē)鍵確認(rèn)結(jié)束,送入緩沖區(qū)。該函數(shù)從緩沖區(qū)中讀入一個(gè)字符。3.該函數(shù)得到的字符可以賦給一個(gè)字符變量或整型變量,也可以作為表達(dá)式一部分。
下面程序功能為:輸入一個(gè)A~Z之間的字母,輸出與之左右相鄰的兩個(gè)字母,根據(jù)注釋信息將程序填寫(xiě)完整。#include<stdio.h> voidmain() {charch; //數(shù)據(jù)準(zhǔn)備
//調(diào)用getchar()輸入一個(gè)字母,并賦值給ch
//調(diào)用putchar()輸出與ch左相鄰的字母
//調(diào)用putchar()輸出與ch右相鄰的字母}
如何輸入函數(shù)——getchar()函數(shù)練習(xí)1字符輸出函數(shù)3如何輸出數(shù)據(jù)2如何定義數(shù)據(jù)4如何輸入數(shù)據(jù)C語(yǔ)言數(shù)據(jù)分類(lèi)5算術(shù)運(yùn)算符6綜合應(yīng)用目錄算術(shù)運(yùn)算符——算術(shù)運(yùn)算符含義運(yùn)算符含義舉例運(yùn)算結(jié)果+正號(hào)(單目運(yùn)算)+aa的值-負(fù)號(hào)(單目運(yùn)算)-aa的相反數(shù)+加法運(yùn)算符a+ba與b的和-減法運(yùn)算符a-ba與b的差*乘法運(yùn)算符a*ba與b的乘積/除法運(yùn)算符a/ba除以b的商%求余運(yùn)算符a%ba除以b的余數(shù)1.由于鍵盤(pán)無(wú)×、÷號(hào),在C語(yǔ)言中運(yùn)算以*和/代替;2.對(duì)于除法運(yùn)算符,兩個(gè)整數(shù)相除的結(jié)果為整數(shù),如5/2的結(jié)果為2,舍去小數(shù)部分;只有兩數(shù)中至少有一個(gè)是浮點(diǎn)數(shù)時(shí),結(jié)果才為浮點(diǎn)數(shù),如5/2.0的結(jié)果為2.5;除法運(yùn)算/,寫(xiě)出以下運(yùn)算的結(jié)果9/2_______9.0/2_______9/2.0_______9.0/2.0_______3.求余運(yùn)算%僅用于整數(shù)間的運(yùn)算,若存在負(fù)整數(shù),則余數(shù)的正負(fù)號(hào)與被除數(shù)相同,如-3%2的結(jié)果為-1;求余運(yùn)算%,寫(xiě)出以下運(yùn)算的結(jié)果
27%4_______13%3_______15%5_______15%20_______16%(-7)_______-16%7_______-16%-7_______9%12_______365%10_______365/10%10_______365/100_______4.在進(jìn)行算術(shù)運(yùn)算時(shí),如果運(yùn)算符兩側(cè)的數(shù)據(jù)類(lèi)型不同,會(huì)進(jìn)行自動(dòng)轉(zhuǎn)換成相同的類(lèi)型再進(jìn)行運(yùn)算。4.在進(jìn)行算術(shù)運(yùn)算時(shí),如果運(yùn)算符兩側(cè)的數(shù)據(jù)類(lèi)型不同,會(huì)進(jìn)行自動(dòng)轉(zhuǎn)換成相同的類(lèi)型再進(jìn)行運(yùn)算。運(yùn)算符說(shuō)明算術(shù)運(yùn)算符——算術(shù)運(yùn)算符注意1.由于鍵盤(pán)無(wú)×、÷號(hào),在C語(yǔ)言中運(yùn)算以*和/代替;2.對(duì)于除法運(yùn)算符,兩個(gè)整數(shù)相除的結(jié)果為整數(shù),如5/2的結(jié)果為2,舍去小數(shù)部分;只有兩數(shù)中至少有一個(gè)是浮點(diǎn)數(shù)時(shí),結(jié)果才為浮點(diǎn)數(shù),如5/2.0的結(jié)果為2.5;3.求余運(yùn)算%僅用于整數(shù)間的運(yùn)算,若存在負(fù)整數(shù),則余數(shù)的正負(fù)號(hào)與被除數(shù)相同,如-3%2的結(jié)果為-1;(1)有定義語(yǔ)句:charch=‘M’;寫(xiě)出將變量ch變?yōu)樾?xiě)字母的表達(dá)式。(2)變量s表示一個(gè)百分制考試成績(jī),寫(xiě)出獲取其十位數(shù)碼的表達(dá)式。算術(shù)運(yùn)算符——練習(xí)ch=ch+32s=s/10算術(shù)運(yùn)算符——示例#include<stdio.h>intmain(){ inta=3,b=8,c=2; printf("%d,%d,%d\n",a+b,a-c,a*2+b-1); printf("%d,%d,%d",a,b,c); return0;}【運(yùn)行結(jié)果】11,1,133,8,2【例2-8】運(yùn)行下面程序,查看輸出結(jié)果算術(shù)運(yùn)算符——自加自減算術(shù)運(yùn)算符運(yùn)算符含義舉例運(yùn)算結(jié)果說(shuō)明++自增1運(yùn)算符a++或++a使a的值加1++和--為單目運(yùn)算,且只能用于單一變量運(yùn)算;++a和--a,是在使用a之前,先使a的值加1或減1;a++和a--,是在使用a之后,再使a的值加1或減1。--自減1運(yùn)算符a--或--a使a的值減1分析程序輸出結(jié)果。#include<stdio.h> intmain()
{
inta=9,b;b=++a;//先讓a自增1,再取a的值。a=a+1;b=a;printf("a=%d,b=%d\n",a,b);b=a--;//先取a的值,再自減1b=a;a=a-1;printf("a=%d,b=%d\n",a,b);printf("a++=%d,++b=%d,%d,%d\n",a++,++b,a,b);return0;
}程序輸出結(jié)果算術(shù)運(yùn)算符——運(yùn)算符示例算術(shù)運(yùn)算符——賦值運(yùn)算符一般格式變量=表達(dá)式賦值號(hào)運(yùn)算符表達(dá)式計(jì)算結(jié)果+=x=3;x+=5;x=x+5;x的值是10-=x=3;x-=5;x=x-5;x的值是-2*=x=3;x*=5+1;x=x*(5+1);x的值是18/=x=3;x/=5;x=x/5;x的值是0%=x=3;x%=5;x=x%5;x的值是3算術(shù)運(yùn)算符--優(yōu)先級(jí)與結(jié)合性?xún)?yōu)先級(jí)和結(jié)合性?xún)蓚€(gè)問(wèn)題優(yōu)先級(jí)是表達(dá)式中有不同的運(yùn)算符時(shí),按照運(yùn)算符的優(yōu)先級(jí)確定運(yùn)算符的執(zhí)行順序結(jié)合性是表達(dá)式中若有相鄰幾個(gè)優(yōu)先級(jí)相同的運(yùn)算符時(shí),需要結(jié)合運(yùn)算符確定運(yùn)算方向。算術(shù)運(yùn)算符——運(yùn)算符示例【例2-10】運(yùn)行下面程序,查看輸出結(jié)果【源代碼】#include<stdio.h>intmain(){ floatx=6.5; inty=5,z;z=(int)x+y+++x*y;//相當(dāng)于(int)x+(y++)+x*y printf("x=%f,y=%d,z=%d",x,y,z); return0;}【運(yùn)行結(jié)果】x=6.500000,y=6,z=501字符輸出函數(shù)3如何輸出數(shù)據(jù)2如何定義數(shù)據(jù)4如何輸入數(shù)據(jù)C語(yǔ)言數(shù)據(jù)分類(lèi)5算術(shù)運(yùn)算符6綜合應(yīng)用目錄
對(duì)于計(jì)算機(jī)程序可處理的問(wèn)題來(lái)說(shuō),程序中所用到的數(shù)據(jù)以及對(duì)這些數(shù)據(jù)的類(lèi)型和數(shù)據(jù)組織形式的描述稱(chēng)之為“數(shù)據(jù)結(jié)構(gòu)”,對(duì)數(shù)據(jù)處理所采用的方法和步驟等操作的描述稱(chēng)為“計(jì)算機(jī)算法”。程序=數(shù)據(jù)結(jié)構(gòu)+算法
使用流程圖描述綜合應(yīng)用——程序算法(1)自頂向下
程序設(shè)計(jì)時(shí),應(yīng)先考慮總體,后考慮細(xì)節(jié);先考慮全局目標(biāo),后考慮局部目標(biāo)。不要一開(kāi)始就過(guò)多追求細(xì)節(jié),先從最上層總目標(biāo)開(kāi)始設(shè)計(jì),逐步使問(wèn)題具體化。(2)逐步細(xì)化(3)模塊化設(shè)計(jì)
對(duì)復(fù)雜問(wèn)題,應(yīng)設(shè)計(jì)一些子目標(biāo)作為過(guò)渡,逐步細(xì)化。
一個(gè)復(fù)雜問(wèn)題,肯定是由若干稍簡(jiǎn)單的問(wèn)題構(gòu)成。模塊化是把程序要解決的總目標(biāo)分解為子目標(biāo),再進(jìn)一步分解為具體的小目標(biāo),把每一個(gè)小目標(biāo)稱(chēng)為一個(gè)模塊。綜合應(yīng)用——結(jié)構(gòu)化程序設(shè)計(jì)原則(1)順序結(jié)構(gòu)
順序結(jié)構(gòu)指算法的實(shí)現(xiàn)過(guò)程按照相應(yīng)的步驟依次順序執(zhí)行,直至結(jié)束。順序結(jié)構(gòu)是最簡(jiǎn)單的一種基本結(jié)構(gòu)。(2)選擇結(jié)構(gòu)(3)循環(huán)結(jié)構(gòu)
又稱(chēng)為分支結(jié)構(gòu),此結(jié)構(gòu)中必包含一個(gè)條件判斷,根據(jù)判斷結(jié)果從兩種或多種路徑中選擇其中的一條執(zhí)行。
又稱(chēng)重復(fù)結(jié)構(gòu),其含義是當(dāng)條件允許時(shí),反復(fù)執(zhí)行某些操作。綜合應(yīng)用——程序結(jié)構(gòu)#include<stdio.h>voidmain(){charch1,ch2;printf("請(qǐng)輸入一個(gè)大寫(xiě)字母:");ch1=getchar();ch2=ch1+32;printf("對(duì)應(yīng)的小寫(xiě)字母為:");putchar(ch2);}可替換為:scanf("%c",&ch1);可替換為:
printf("對(duì)應(yīng)的小寫(xiě)字母為:%c",ch2);運(yùn)行結(jié)果:綜合應(yīng)用——應(yīng)用示例1通過(guò)鍵盤(pán)輸入一個(gè)大寫(xiě)字母,輸出該大寫(xiě)字母對(duì)應(yīng)的小寫(xiě)字母。綜合應(yīng)用——應(yīng)用示例2從鍵盤(pán)依次輸入3個(gè)實(shí)數(shù),計(jì)算并輸出這3個(gè)數(shù)的和及平均值。#include<stdio.h>intmain(){floatnum1,num2,num3;floatsum,avg;printf("請(qǐng)輸入三個(gè)數(shù):");scanf("%f,%f,%f",&num1,&num2,&num3);sum=num1+num2+num3;avg=sum/3.0;printf("三個(gè)數(shù)的和:%f,平均值:%f",sum,avg);return0; }請(qǐng)輸入三個(gè)數(shù):3.5,9.5,10.5三個(gè)數(shù)的和:23.500000,平均值:7.833333【運(yùn)行結(jié)果】有若干只雞兔同在一個(gè)籠子里,從上面數(shù),有35個(gè)頭,從下面數(shù),有94只腳。問(wèn)籠中各有幾只雞和幾只兔?#include
<stdio.h>voidmain(){intx,y,head,foot;//x只雞,y只兔子,head為頭的總數(shù),foot為腳的總數(shù)printf("請(qǐng)輸入雞兔總頭數(shù)和總腳數(shù):");scanf("%d%d",&head,&foot);y=(foot-2*head)/2;x=head-y;printf("雞與兔的數(shù)目分別為:%d,%d.\n",x,y);}運(yùn)行結(jié)果:綜合應(yīng)用——應(yīng)用示例3單元小結(jié)謝謝!單元三
選擇結(jié)構(gòu)-開(kāi)啟程序設(shè)計(jì)之旅導(dǎo)學(xué)【問(wèn)題】什么是選擇結(jié)構(gòu)?
現(xiàn)實(shí)生活中,解決問(wèn)題時(shí)并不是按部就班,一步一步執(zhí)行的,很多情況下需要根據(jù)不同情況作出不同的選擇。比如我們走到一個(gè)路口的時(shí)候,需要根據(jù)自己目的地和信號(hào)燈作出走哪條路的選擇。同樣,在C語(yǔ)言程序中,也需要對(duì)一些條件進(jìn)行判斷,決定執(zhí)行哪部分代碼,這就是我們即將要學(xué)習(xí)的選擇語(yǔ)句結(jié)構(gòu)。if語(yǔ)句2if雙分支語(yǔ)句3if多分支語(yǔ)句4多分支switch語(yǔ)句目錄1if語(yǔ)句—關(guān)系運(yùn)算符及表達(dá)式關(guān)系運(yùn)算符及表達(dá)式if語(yǔ)句——關(guān)系運(yùn)算符及表達(dá)式(1)關(guān)系運(yùn)算符運(yùn)算符含義結(jié)合性用法舉例(假設(shè)a=5,b=8)優(yōu)先級(jí)>大于左結(jié)合a>b、5>31>=大于等于左結(jié)合a>=b、6>=21<小于左結(jié)合a<b、(3+2)<71<=小于等于左結(jié)合a<=b、a+3<=a*b1==等于、相等左結(jié)合a==b、a==b-32!=不等于、不相等左結(jié)合a!=b、1!=22if語(yǔ)句——關(guān)系運(yùn)算符及表達(dá)式(2)關(guān)系表達(dá)式
用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式(算術(shù)、關(guān)系、邏輯或賦值表達(dá)式)連接起來(lái)構(gòu)成關(guān)系表達(dá)式。關(guān)系表達(dá)式成立時(shí),值為1,否則,其值為0。【例3-2】如果num=40,計(jì)算num/10!=2的值【例3-1】intnum1=10,num2=5,num3=20,num4=10;計(jì)算(num1+num2)>(num3–num4)表達(dá)式的值。
解析:(num1+num2)的結(jié)果是15,(num3–num4)的結(jié)果是10,所以原式相當(dāng)于求15>10的結(jié)果,為真,即結(jié)果是1。解析:由于算術(shù)運(yùn)算符的優(yōu)先級(jí)高于關(guān)系運(yùn)算符,所以先計(jì)算num/10,等于4,再計(jì)算4!=2,這個(gè)式子是成立的,所以結(jié)果是邏輯真,即1。if語(yǔ)句——關(guān)系表達(dá)式隨堂練習(xí)
r==3r<=5
0<r<4
【思考】如何表示數(shù)值的范圍呢?(1)字符變量ch的值是字母’y’的關(guān)系表達(dá)式為:
。(2)整型變量n為偶數(shù)的關(guān)系表達(dá)式為:
。(3)當(dāng)整型變量r的值為5時(shí),判斷下列關(guān)系表達(dá)式的值。if語(yǔ)句—邏輯運(yùn)算符及表達(dá)式邏輯運(yùn)算符及表達(dá)式(1)邏輯運(yùn)算符(2)運(yùn)算規(guī)則if語(yǔ)句—邏輯運(yùn)算符及表達(dá)式邏輯運(yùn)算符是連接一個(gè)或多個(gè)條件的運(yùn)算符,C語(yǔ)言中的邏輯運(yùn)算符包括:&&、||、!三種。在參與運(yùn)算或編寫(xiě)程序時(shí),我們一般將0稱(chēng)為“假”,將非零值稱(chēng)為“真”。邏輯運(yùn)算的結(jié)果也只有“真”和“假”,“真”對(duì)應(yīng)的值為1,“假”對(duì)應(yīng)的值為0。運(yùn)算符含義結(jié)合性舉例優(yōu)先級(jí)&&與運(yùn)算,雙目,對(duì)應(yīng)數(shù)學(xué)中的“且”左結(jié)合1&&0、(7>3)&&(b>a)2||或運(yùn)算,雙目,對(duì)應(yīng)數(shù)學(xué)中的“或”左結(jié)合1||0、(6>3)||(b>a)3!非運(yùn)算,單目,對(duì)應(yīng)數(shù)學(xué)中的“非”右結(jié)合!a、!(3<5)1(3)運(yùn)算符優(yōu)先級(jí)?。ǚ牵ǜ撸┧阈g(shù)運(yùn)算符關(guān)系運(yùn)算符&&和||賦值運(yùn)算符(低)if語(yǔ)句—邏輯運(yùn)算符及表達(dá)式(4)邏輯表達(dá)式示例【例3-3】3&&0
解析:3為真,0為假,相與的結(jié)果為假,也就是0。【例3-4】(5>2)&&(4>2)
解析:5>2的結(jié)果是真,為1,4>2結(jié)果是真,也為1,所以相與的結(jié)果為真,即為1?!纠?-5】-10||0
解析:-10為真,0為假,相或的結(jié)果為真,也就是1?!纠?-6】(5>0)||(5<8)
解析:5>0的結(jié)果是真,為1,5<8的結(jié)果是真,為1,所以相或的結(jié)果為真,也就是1。【例3-7】!0
解析:因?yàn)?為假,所以非運(yùn)算的結(jié)果為真,也就是1?!纠?-8】!(8>5)
解析:8>5的結(jié)果是1,為真,非運(yùn)算的結(jié)果為假,也就是0。if語(yǔ)句—邏輯運(yùn)算符及表達(dá)式(1)判斷字符變量ch的值為大寫(xiě)字母的邏輯表達(dá)式為:
ch>=’A’&&ch<=’Z’
。(2)判斷某一年份year是否為閏年。閏年是符合以下條件的年份:能被4整除但不能被100整除,或者能被400整除。若用整型變量year表示年份,則閏年的邏輯判斷表達(dá)式為:
if語(yǔ)句—邏輯表達(dá)式隨堂練習(xí)(3)一個(gè)三角形的三邊分別用a,b,c表示,寫(xiě)出判斷該三角形為等腰三角形的邏輯表達(dá)式。
year%4==0&&year%100!=0||year%400==0a==b||b==c||c==aif語(yǔ)句—流程圖流程圖if語(yǔ)句—流程圖符號(hào)名稱(chēng)含義符號(hào)名稱(chēng)含義起止框算法的起點(diǎn)和終點(diǎn),是任何流程圖比不可少的特定過(guò)程一個(gè)特定過(guò)程,如函數(shù)輸入、輸出框數(shù)據(jù)的輸入和輸出操作流程線連接各個(gè)圖框,表示執(zhí)行的順序處理框各種形式數(shù)據(jù)的處理連接點(diǎn)表示與流程圖其它部分相連判斷框判斷條件是否成立,成立時(shí)在出口處標(biāo)注“是”或“Y”,不成立時(shí)標(biāo)注“否”或“N”【例3-10】使用流程圖描述算法:輸入圓的半徑,計(jì)算圓的面積。
優(yōu)化if語(yǔ)句—流程圖if語(yǔ)句—單分支if語(yǔ)句
單分支if語(yǔ)句(1)語(yǔ)法格式(2)執(zhí)行流程
if(表達(dá)式){語(yǔ)句組;}重要提示:
“語(yǔ)句組”是一條獨(dú)立的語(yǔ)句,“{}”可以省略;“語(yǔ)句組”為多條語(yǔ)句的復(fù)合語(yǔ)句,“{}”不能省略。if語(yǔ)句—單分支if語(yǔ)句2【例3-11】從鍵盤(pán)輸入一個(gè)字母,無(wú)論該字母為大寫(xiě)字母還是小寫(xiě)字母,均以小寫(xiě)字母形式輸出。#include<stdio.h>voidmain(){charch;printf("請(qǐng)輸入一個(gè)字母:");ch=getchar();
if(ch>='A'&&ch<='Z')ch=ch+32;printf("輸出結(jié)果為:");putchar(ch);}if語(yǔ)句—單分支if語(yǔ)句示例if語(yǔ)句—單分支if語(yǔ)句練習(xí)以下程序段的功能是計(jì)算一個(gè)整數(shù)的絕對(duì)值,將程序補(bǔ)充完整。#include<stdio.h>intmain(){ intn; printf("請(qǐng)輸入一個(gè)整數(shù):"); scanf(______________); printf("|%d|=",n); if(_________)_________________;printf("%d",n); return0;}if語(yǔ)句2if雙分支語(yǔ)句3if多分支語(yǔ)句4多分支switch語(yǔ)句目錄1if雙分支語(yǔ)句-語(yǔ)句格式if雙分支語(yǔ)句if雙分支語(yǔ)句-語(yǔ)句格式(1)語(yǔ)法格式(2)執(zhí)行流程
if(表達(dá)式){語(yǔ)句組1;}else
{語(yǔ)句組2;}【例3-12】輸入學(xué)生的C語(yǔ)言成績(jī),判斷是否及格。#include<stdio.h>intmain(){intscore;printf("請(qǐng)輸入成績(jī):\n");scanf("%d",&score);
if(score>=60)printf("成績(jī)及格\n");
elseprintf("成績(jī)不及格\n");return0;}if雙分支語(yǔ)句-引例【例3-13】輸入一個(gè)正整數(shù),判斷該數(shù)是偶數(shù),還是奇數(shù)。#include<stdio.h>voidmain(){
intx;printf("請(qǐng)輸入一個(gè)正整數(shù):");scanf("%d",&x);
if(x%2==0)printf("正整數(shù)%d是偶數(shù)。\n",x);
elseprintf("正整數(shù)%d是奇數(shù)。\n",x);}if雙分支語(yǔ)句-引例0#include<stdio.h>#include<math.h>intmain(){ floata,b,c,p,s; printf("請(qǐng)輸入三條邊的值:"); scanf("%f%f%f",&a,&b,&c); if(a+b>c&&b+c>a&&a+c>b) { p=(a+b+c)/2; s=sqrt(p*(p-a)*(p-b)*(p-c)); printf("三角形面積:%f",s); } else printf("三條邊不能構(gòu)成三角形") ; return0;}1.已知三角形三條邊長(zhǎng),判斷三條邊能否組成三角形,如能組成三角形,則計(jì)算三角形面積。設(shè)三條邊的長(zhǎng)度為a、b、c,則計(jì)算三角形面積公式為:,其中p=(a+b+c)/2。如不能組成三角形,則輸出“三條邊不能構(gòu)成三角形”。if雙分支語(yǔ)句-練習(xí)if雙分支語(yǔ)句-條件運(yùn)算符
條件運(yùn)算符if雙分支語(yǔ)句-條件運(yùn)算符(1)語(yǔ)法格式(2)執(zhí)行流程表達(dá)式1?表達(dá)式2:表達(dá)式3關(guān)系表達(dá)式或邏輯表達(dá)式
先計(jì)算表達(dá)式1的值,若表達(dá)式1的值為真,則計(jì)算表達(dá)式2的值,并將表達(dá)式2的值作為整個(gè)表達(dá)式的值;若表達(dá)式1的值為假,則計(jì)算表達(dá)式3的值,并將表達(dá)式3的值作為整個(gè)表達(dá)式的值。(3)優(yōu)先級(jí)
條件運(yùn)算符的優(yōu)先級(jí)高于賦值運(yùn)算符。【例3-9】下列程序的輸出結(jié)果是?#include<stdio.h>intmain(){
inta=1;
intb=2;
printf("返回的是%d\n",a>b?a:b);return0;}if雙分支語(yǔ)句-引例1.以下程序段的功能是計(jì)算一個(gè)整數(shù)的絕對(duì)值,使用條件表達(dá)式,將程序補(bǔ)充完整。intn;scanf("%d",&n);
n=n<0?-n:n;;printf("該整數(shù)的絕對(duì)值是%d.",n);2.已知變量a、b,求兩個(gè)數(shù)的最小值。if雙分支語(yǔ)句-條件運(yùn)算符練習(xí)if語(yǔ)句2if雙分支語(yǔ)句3if多分支語(yǔ)句4多分支switch語(yǔ)句目錄1
多分支選擇結(jié)構(gòu)是指對(duì)多個(gè)條件進(jìn)行判斷,然后選擇滿足條件的語(yǔ)句塊進(jìn)行執(zhí)行??梢杂枚嘀豬f語(yǔ)句、if語(yǔ)句嵌套和switch語(yǔ)句實(shí)現(xiàn)。if(條件表達(dá)式1){語(yǔ)句塊1}elseif(條件表達(dá)式2){語(yǔ)句塊2}┋elseif(條件表達(dá)式n){語(yǔ)句塊n}else{語(yǔ)句塊n+1;} if多分支語(yǔ)句-語(yǔ)句格式1.多重if語(yǔ)句是有if-else語(yǔ)句按照層次結(jié)構(gòu)組成,語(yǔ)法格式如下:if多分支語(yǔ)句-示例
【例3-14】判斷輸入字符ASCII碼所在的范圍,分別給出不同的輸出。例如輸入為”g”,輸出顯示為它是小寫(xiě)字符。
charc;printf("請(qǐng)輸入一個(gè)字符:");c=getchar();if(c<32)printf("這是一個(gè)控制字符\n");elseif(c>='0'&&c<='9')printf("這是一個(gè)數(shù)字字符\n");elseif(c>='A'&&c<='Z') printf("這是一個(gè)大寫(xiě)字母\n");elseif(c>='a'&&c<='z') printf("這是一個(gè)小寫(xiě)字母\n");else printf("這是一個(gè)其他字符\n");if(判斷條件1)if(判斷條件2)...if(判斷條件n) {語(yǔ)句塊n}else {語(yǔ)句塊n+1}...else{語(yǔ)句2}else{語(yǔ)句1}if多分支語(yǔ)句-語(yǔ)句格式2.if語(yǔ)句嵌套結(jié)構(gòu)就是將整個(gè)if塊插入另一個(gè)if塊中,其語(yǔ)法格式如下:if多分支語(yǔ)句-示例
【例3-15】輸入三個(gè)邊長(zhǎng)a、b、c,如果這三個(gè)邊能構(gòu)成三角形,判斷該三角形是等邊三角形、等腰三角形,還是其它三角形。if(a+b>c&&b+c>a&&a+c>b){if(a==b&&b==c)printf("該三角形是等邊三角形.\n");
else
if(a==b||b==c||a==c)printf("該三角形是等腰三角形.\n");
elseprintf("該三角形是其它三角形.\n");}else
printf("注意:不能構(gòu)成合法三角形.\n");if多分支語(yǔ)句-語(yǔ)句格式重要提示:
else總是和它前面離它最近的未配對(duì)的if相匹配??梢酝ㄟ^(guò)“{}”來(lái)強(qiáng)制if和else的配對(duì)關(guān)系。最后的else語(yǔ)句不是必須的,是可選的,可以省略if語(yǔ)句2if雙分支語(yǔ)句3if多分支語(yǔ)句4多分支switch語(yǔ)句目錄11.語(yǔ)法格式switch(表達(dá)式)//表達(dá)式的值只能在下面的case值表中出現(xiàn)一次{case
常量表達(dá)式1:[語(yǔ)句序列1;][break;]
case
常量表達(dá)式2:[語(yǔ)句序列2;][break;]
……
case
常量表達(dá)式n:[語(yǔ)句序列n;][break;]
default:語(yǔ)句序列n+1;}方括號(hào)括起來(lái)的可省退出當(dāng)前switch語(yǔ)句整型或字符型整型或字符型,常量值不能重復(fù)多分支switch語(yǔ)句-語(yǔ)法格式多分支switch語(yǔ)句-執(zhí)行流程(2)執(zhí)行流程首先計(jì)算switch后面表達(dá)式的值,再依次與每一個(gè)case后面的常量表達(dá)式的值進(jìn)行比較,若有相等的情況,則以該case為入口,執(zhí)行相應(yīng)的語(yǔ)句序列。若所有case后面的常量表達(dá)式的值沒(méi)有與switch后面表達(dá)式的值相等的情況,則執(zhí)行default后面的語(yǔ)句序列。若相應(yīng)的語(yǔ)句序列后面有break,則程序跳出switch選擇結(jié)構(gòu),執(zhí)行switch選擇結(jié)構(gòu)后面的語(yǔ)句;若相應(yīng)的語(yǔ)句序列后面沒(méi)有break,則執(zhí)行下一個(gè)case后面的語(yǔ)句序列。多分支switch語(yǔ)句-與if多分支語(yǔ)句區(qū)別switch結(jié)構(gòu)語(yǔ)句只進(jìn)行相等與否的判斷;而if結(jié)構(gòu)語(yǔ)句還可以進(jìn)行大小范圍上的判斷。switch無(wú)法處理浮點(diǎn)數(shù),只能進(jìn)行整數(shù)的判斷,case標(biāo)簽值必須是常量;而if語(yǔ)句則可以對(duì)浮點(diǎn)數(shù)進(jìn)行判斷。多分支switch語(yǔ)句--練習(xí)#include<stdio.h>intmain(){ inta=1,b=0; scanf("%d",&a); switch(a) { case1:b=1;break; default:b=10;break; case2:b=2; } printf("%d",b);}若鍵盤(pán)輸入5,運(yùn)行結(jié)果為_(kāi)_______________多分支switch語(yǔ)句--練習(xí)#include<stdio.h>main(){chargrade='C';switch(grade){case'A':printf("90-100\n");case'B':printf("80-90\n");case'C':printf("70-80\n");case'D':printf("60-70\n");break;case'E':printf("<60\n");default:printf("error!\n");}}運(yùn)行結(jié)果:________________多分支switch語(yǔ)句——引例根據(jù)學(xué)生考試成績(jī)score的值判定考試等級(jí)。判定標(biāo)準(zhǔn)如下表所示。成績(jī)(score)等級(jí)score>=90優(yōu)秀(A級(jí))80<=score<90良好(B級(jí))70<=score<80中等(C級(jí))60<=score<70及格(D級(jí))score<60不及格(E級(jí))多分支switch語(yǔ)句—引例實(shí)現(xiàn)#include<stdio.h>voidmain(){doublescore;printf("請(qǐng)輸入學(xué)生成績(jī):");scanf("%lf",&score);
switch((int)(score/10))//分析switch后面的表達(dá)式為什么寫(xiě)成(int)(score/10)?{case10:
case9:printf("
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 亞信科技web筆試題及答案
- 新員工10分鐘個(gè)人述職報(bào)告
- 文本效果教程12掃光字效果
- 2025年大學(xué)輔導(dǎo)員招聘:教育心理專(zhuān)項(xiàng)心理測(cè)評(píng)試題試卷
- 2025年寵物訓(xùn)導(dǎo)師職業(yè)能力測(cè)試卷:寵物訓(xùn)練課程研發(fā)與創(chuàng)新
- 2025年專(zhuān)升本藝術(shù)概論考試模擬卷:藝術(shù)教育實(shí)踐案例解析與拓展訓(xùn)練題庫(kù)
- 2025版小學(xué)語(yǔ)文畢業(yè)升學(xué)全真模擬卷-口語(yǔ)表達(dá)技巧提升試題解析
- 2025年中學(xué)教師資格考試《綜合素質(zhì)》核心考點(diǎn)特訓(xùn)題庫(kù)(含答案)之教育研究綜合題
- 2025年專(zhuān)升本藝術(shù)概論考試模擬卷(藝術(shù)傳播媒介法規(guī))
- 建筑外墻保溫裝飾一體板規(guī)范
- 第 4 單元評(píng)估檢測(cè)題 單元測(cè)試(無(wú)答案)2024-2025學(xué)年一年級(jí)下冊(cè)數(shù)學(xué)北師大版
- 2025年無(wú)錫南洋職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)完美版
- 2025年皖北衛(wèi)生職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)必考題
- 江蘇省G4學(xué)校高三語(yǔ)文2月聯(lián)考試卷及答案
- 2025年江西省三支一扶招聘2209人高頻重點(diǎn)模擬試卷提升(共500題附帶答案詳解)
- 2025年南昌健康職業(yè)技術(shù)學(xué)院高職單招數(shù)學(xué)歷年(2016-2024)頻考點(diǎn)試題含答案解析
- 包材檢驗(yàn)流程
- 2025年陜西省西安市不動(dòng)產(chǎn)登記服務(wù)中心招聘25人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 麻醉、精神藥品培訓(xùn)課件
- 心血管內(nèi)科醫(yī)療質(zhì)量控制
- 《課堂管理方法與技巧》課件
評(píng)論
0/150
提交評(píng)論