版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
C語言講授內容21世紀高等學校精品規(guī)劃教材2011年6月2日陳立C語言的概論編譯環(huán)境變量運算符的介紹表達式的概念輸入輸出函數(shù)的運用順序程序設計程序設計的根本概念程序的概念存儲在計算機中的可以被計算機識別并運行的一系列指令什么是程序設計
就是用戶告訴計算機按照程序員的思路一步一步的去工作。程序設計的一般過程問題分析與描述、編寫程序代碼、運行與調試程序設計的方法面向過程的程序設計方法面向對象的程序設計方法程序設計語言大致可分為三類:〔1〕機器語言計算機的“自然語言”,由“0”和“1”組成的符號序列表示指令。機器語言程序可以被計算機直接執(zhí)行?!?〕匯編語言用英文單詞的縮寫來表示指令,與機器語言指令一一對應。執(zhí)行時需要通過“匯編程序”轉換為機器語言執(zhí)行?!?〕高級語言類似于人類的自然語言,一條語句可對應多條指令。執(zhí)行時可通過“編譯程序”或者“解釋程序”轉換為機器語言執(zhí)行。C語言屬于高級語言中的一種,由C語言直接編寫的代碼稱為C語言“源程序”,計算機無法直接執(zhí)行,而必須通過編譯程序轉換成為機器語言程序再由計算機執(zhí)行,即生成“目標程序”。
C語言源程序的后綴名為“.c”,編譯之后生成的目標程序后綴名為“.obj”,再由連接程序與庫函數(shù)連接生成后綴名為“.exe”的可執(zhí)行文件,在windows中直接執(zhí)行。C語言概況C語言概況C語言的特點C語言是具有低級語言功能的高級語言。C語言簡潔、緊湊,使用方便、靈活。運算符豐富,表達式能力強。數(shù)據(jù)結構豐富,便于數(shù)據(jù)的描述與存儲。C語言是結構化、模塊化的編程語言。可使用宏定義,可移植性好。缺乏之處:運算符及其優(yōu)先級過多、語法定義不嚴格等C程序開發(fā)過程〔1〕確定數(shù)據(jù)結構。數(shù)據(jù)結構:數(shù)據(jù)的組織形式。在C語言中,數(shù)據(jù)結構是通過數(shù)據(jù)類型的形式表達出來的。即將需要處理的數(shù)據(jù)用C語言支持的形式表示?!?〕確定算法。算法:求解的步驟地描述,也即操作的具體步驟。將求解的步驟用特定的形式進行描述?!?〕編寫程序代碼。將算法轉換成為C語言程序代碼。C程序開發(fā)過程〔4〕編譯連接,修改錯誤。通過編譯器將C語言源程序轉換成為可執(zhí)行的目標程序。C語言編譯器能夠自動尋找局部程序錯誤〔主要是語法錯誤〕,提示錯誤原因及錯誤位置。在這些錯誤未被改正之前,不會生成目標程序?!?〕運行,修改錯誤。局部錯誤編譯器無法查出,但會導致程序中斷運行,稱為運行時錯誤;有些程序能夠正常運行,但運行結果與期望的結果不符,稱為邏輯錯誤。運行時錯誤和邏輯錯誤出現(xiàn)時,都必須返回編輯源程序,修改后再編譯運行。C語言的介紹目前我們所用到的C語言有很多種其中以Microsoftc、turboc、borlandc、Quickc(QC)常見,他們在功能上是一樣的。都是實現(xiàn)C程序的編輯和編譯。但在使用的過程中有些不一樣的地方。所以請大家按照自己的個人習慣去選擇。編輯程序就是對代碼進行錄入和排版,使各種語句組合在一起形成一個整體編譯就是對編輯好的C代碼程序進行一次翻譯使之生成機器可以識別的代碼簡單的C語言程序舉例1【例1-1】在計算機屏幕上輸出”Hello,World!”#include"stdio.h"main(){ printf("HelloWorld!\n"); getch〔〕;}main是主函數(shù)名〔有且只有一個〕語句〔分號“;”結束〕#include“stdio.h”是一條預處理命令printf打印函數(shù)說明:簡單的C語言程序舉例2如:試求兩個整數(shù)的和并輸出結果Main(){ Inta,b,sum; a=123; b=456; Printf(“兩數(shù)的和是:%d”,sum); Getch();}“%d,%f”為輸出格式符,分別表示十進制整型和實型,它指定輸出結果時的數(shù)據(jù)類型和格式int表示a、b的數(shù)據(jù)類型是整型a=123賦值語句表示a的值是123、b的的值是456說明簡單的C語言程序舉例3【例1-3】輸入矩形的兩條邊長,求矩形的面積。
#include"stdio.h"voidmain(){ inta,b,s; scanf("%d,%d",&a,&b); s=area(a,b); printf("areais%d\n",s);}intarea(inta,intb){ ints; s=a*b; returns; }簡單的C語言程序說明說明程序由主函數(shù)main和被調用函數(shù)area組成兩個函數(shù)在位置上是獨立的scanf是C語言提供的標準輸入函數(shù)“&”的含義是取地址C語言程序總結C程序由函數(shù)組成。每個C程序有且僅有一個主函數(shù),該主函數(shù)的函數(shù)名規(guī)定為main。一個C程序由一個main函數(shù)和假設干個子函數(shù)構成。函數(shù)可分為兩局部:函數(shù)說明和函數(shù)體。C程序的書寫格式自由,一行內可以寫幾條語句,一條語句也可以寫在多行上,每條語句后必須以“;”作為語句的結束。多條語句構成的復合語句要以一對{}括起來。C語言程序總結C程序的執(zhí)行總是從主函數(shù)main開始,并在主函數(shù)中結束。主函數(shù)的位置在程序中是任意的,其他函數(shù)總是通過函數(shù)調用語句來執(zhí)行。主函數(shù)可以調用任何其他函數(shù),任何非主函數(shù)之間也可以相互調用,但是均不能調用主函數(shù)。C語言本身沒有輸入輸出語句。可以用/*……*/對C程序中的任何局部作注釋。C程序的本卷須知
每一個都必須有一個main()函數(shù)函數(shù)體由大括弧{}括起來括號是一組一組輸入的大括弧內每一條語句后必須有一分號符號和字母都要用半角格式的請大家試一試寫一C程序完成以下樣例*************
verygood!*************Main(){Printf(“************************\n”);Printf(“verygood!\n”);Printf(“************************”);getch();}算法概述算法的含義算法是指解決問題的方法和步驟。正確的算法有以下幾個特征:可行性確定性有窮性輸入輸出算法介紹不正確的算法第1步:令n等于0。第2步:n加1。第3步:轉向第2步。正確的算法第1步:令n等于0。第2步:n加1。第3步:如果n小于100,那么轉向第2步;否那么停止。算法表示傳統(tǒng)流程圖、N-S圖、偽代碼、自然語言和計算機程序語言等傳統(tǒng)流程圖算法舉例【例1-4】畫出求1+2+3+…+100之和的流程圖算法表示N-S圖TC語言編程環(huán)境TurboC2.0編程環(huán)境C語言編程環(huán)境TC的根本配置C語言編程環(huán)境關鍵操作F2
將當前文件以指定的文件名存盤續(xù)表F3
裝入指定文件F7
調試程序,執(zhí)行單步操作,可進入被調用函數(shù)F8
調試程序,執(zhí)行單步操作,不進入被調用函數(shù)F9
編譯、連接源程序,生成可執(zhí)行文件F10
激活主菜單Ctrl+F9
運行程序Alt+F5
用戶窗口,用來查看運行結果。C語言編程環(huán)境關鍵操作編譯〔Ctrl+F7〕。生成e1_1.obj連接〔F7〕。生成e1_1.exe運行〔Ctrl+F5〕。執(zhí)行e1_1.exe請參照本章例題編寫一個C程序,輸出以下信息:**********************************
Thisismyfirstcprogram.**********************************用TurboC2.0或VisualC++6.0調試本章的3個程序C語言的數(shù)據(jù)類型數(shù)據(jù)類型概述整數(shù)類型整數(shù)類型簡稱整型,整型數(shù)據(jù)沒有小數(shù)局部。整型可分為:根本整型:用int表示。短整型:用shortint或short表示。長整型:用longint或long表示。整數(shù)類型介紹實型數(shù)據(jù)類型實數(shù)類型簡稱實型〔小數(shù)〕,有時又稱浮點數(shù)據(jù)類型包括:單精度浮點數(shù)類型:簡稱浮點類型,類型名為float。雙精度浮點數(shù)類型:簡稱雙精度類型,類型名為double。長雙精度類型:類型名為longdouble。實型數(shù)據(jù)類型字符型數(shù)據(jù)字符類型的數(shù)據(jù)簡稱字符型數(shù)據(jù)C語言中用char表示,在內存中占一個字節(jié)。字符類型的數(shù)據(jù)包括計算機所用編碼字符集中的所有字符。常用的ASCII字符集,共128個。擴展的ASCII字符集共256個字符。字符數(shù)據(jù)與整型數(shù)據(jù)是相似的〔除了占用的存儲空間不同〕字符型數(shù)據(jù)算術運算符算術運算符
+ 加
- 減 * 乘
/ 除
% 余(mod)優(yōu)先級別是和數(shù)學上一樣的:先加減后乘除算術運算符、表達式如:
a=3+5 a=5-2 a=3*2 a=4/2 a=3%2是將右邊的計算機結果放到左邊的A中試一試試求40除以23的余數(shù)Main(){Inta; /*聲明一個整型變量*/a=40%23;Printf(“40除以23的余數(shù)是:%d”,a);Getch();}這是一句注釋增強程序的可閱讀性試求兩數(shù)的和、差、積、商、余Main(){Inta,b,c,d,e;A=40+20;b=40-20;c=40*20;d=40/20;e=40%20;Printf(“和是%d\n差是%d\n積是%d\n商是%d\n余是%d”,a,b,c,d,e);Getch();}占位符%d標志輸出是一整型數(shù)據(jù)%f標志輸出是一實型數(shù)據(jù)%c標志輸出是一字符型型數(shù)據(jù)標識符標識符所謂標識符是指給程序中的變量、常量、數(shù)組、函數(shù)、結構體、文件等對象的名字。簡言之就是一名字,可以由程序設計者指定,也可以由系統(tǒng)指定。(可以是26個英文字母包括大小寫(共52個)、數(shù)字0~9、下劃線_)標識符可分為:關鍵字、特定字符、一般標識符其命名規(guī)那么:以字母或下劃線開頭,由字母、數(shù)字或下劃線組成的序列。大小寫敏感。如Name和name是兩個不同的標識符不能使用系統(tǒng)的關鍵字標識符命名建議不建議使用系統(tǒng)預定義標識符(特定字符)如define、include、scanf、printf盡量做到“見名知義”如max、name等,不用像abc、a1、a2等標識符。防止使用易混字符1、l、i;0、o;2、z等以下是合法的標識符 Sum,PI,_sysflayNumber_of_movesJ5_7以下是不合法的標識符 Number-of-moves(含有非法的字符-) Pieceflag(含有非法的字符空格) 5-7-9〔數(shù)字開頭〕 $123.4〔$開頭,含有非法字符〕標識符舉例標識符的關鍵關鍵字是系統(tǒng)自定義使用的C語言中的常量常量指在程序運行中其值不能被改變的量。可分為:直接常量和符號常量直接常量:就是時常所說的常數(shù)〔常量〕。如:整型常量〔1、2、3、4〕、實型常量〔3.14、5e-3〕、字符型常量〔‘a’〕、字符串常量等(“student”、“hello”)。符號常量:是在一個程序或程序的一局部中指定的用名字代表的常量,從字面上不能直接看出其類型和值。整型常量十進制整型常量:同數(shù)學上的表示方法,如168、-1、65535等。八進制整型常量:以0開頭,由數(shù)字0~7組成,如0101、-045等。十六進制整型常量:以0x或0X開頭的數(shù)字序列表示十六進制數(shù),如0x12,整型常量的本卷須知如要說明是無符號類型那么在數(shù)據(jù)后加u或U、如65535u、168U等。如果說明為長整型,那么在數(shù)據(jù)后面加l或L,如-1L。八進制、十進制和十六進制只是整數(shù)的不同書寫形式,提供多種寫法只是為了使用方便,我們可以根據(jù)需要選擇適當?shù)臅鴮懛绞健語言中不用二進制形式表示整數(shù)。C語言中,一般只使用無符號的八進制和十六進制數(shù),而不使用有符號的八進制和十六進制數(shù),因此沒有專門的無符號八進制和十六進制標識符。整型常量舉例以下是非法的整型常量:09:0開頭應該是八進制,但9不是合法的八進制數(shù)字。0X6G:0X開頭應該是十六進制,但G不是合法的十六進制數(shù)字。以下是合法的整型常量:00000101:八進制,相當于十進制的65。-012:八進制,相當于十進制的-10。65535LU:十進制,無符號長整型。0XFF:十六進制,相當于十進制的255。實型常量實型常量只能用十進制形式表示表示形式:小數(shù)形式。由數(shù)字序列和小數(shù)點組成,如3.1415926、-0.15、.15、2.等都是合法的實型常量。指數(shù)形式。由十進制數(shù)加上階碼標志“e”或“E”及階碼組成,如3.14e-4或3.14E-4表示3.14×10-4。實型常量的本卷須知字母e或E之前的尾數(shù)局部必須有數(shù)字,例如E2是不合法的。e或E后面的指數(shù)局部必須是整數(shù),指數(shù)局部無整數(shù)或為小數(shù)均是錯誤的,例如5e和5E-5.5均是不合法的表示。C語言中,默認實型常量為double類型,假設有后綴“f”或“F”,那么為float類型。字符常量單個字符常量:字符型常量是由一對單引號括起來的單個字符構成例如'A'、'b'、'8
字符‘A’~‘Z’的ASCII碼值是65~90。字符‘a’~‘z’的ASCII碼值是97~122。字符‘0’~‘9’的ASCII碼值是48~57??崭褡址?□'的ASCII碼值是32。
字符常量分單個字符和轉義字符常量字符常量中的轉義字符字符串常量字符串常量是由一對雙引號括起的字符序列,例如“1234567”、“Hello
World”等都是字符串常量。"\\123\101"共有5個字符占6個字節(jié),其中\(zhòng)\、\101分別代表一個字符,輸出為\123A
符號常量舉例【例2-1】輸入圓的半徑,計算周長和面積。#definePI3.14159voidmain(){floatr,c,s;scanf("%f",&r);c=2*PI*r;s=PI*r*r;printf("r=%f,c=%f,s=%f\n",r,c,s);}定義符號常量C語言中的變量在程序運行過程中,其存儲的值可以被改變的量稱為變量變量必須通過標識符進行說明,稱為變量名。變量名和內存單元地址存在映射關系,程序可以通過變量名尋址,從而訪問其存儲的數(shù)據(jù)。01001101……doublea;&a=63006301630263036304630563066307變量的定義和說明數(shù)據(jù)類型變量名1[,變量名2,…,變量名n];inti,j,k;floatx;longa,b,c;4個根本要素:名字、類型、初值和作用域變量的定義和說明變量名為標識符的一種。變量的數(shù)據(jù)類型可以是根本數(shù)據(jù)類型,也可以是復雜數(shù)據(jù)類型。變量的作用域是指變量在程序中有定義的范圍,即該變量名在某段代碼區(qū)域是否有意義。變量需要賦初值。沒有被賦值的變量其初值取決于存儲類型,靜態(tài)存儲的變量將自動為0,否那么被隨機初始化。變量的賦值方式變量賦初值的兩種方式變量說明時直接賦初值,稱為變量的初始化,如:inta=10,b=9,c=6;floatx=3.0,y=1.0,z=2.0;用賦值語句賦初值,如:floatx;x=10.0;變量的使用編譯系統(tǒng)將對每一個變量根據(jù)它被定義的類型分配相應的存儲單元。變量存儲單元地址可用“&變量名”求得。可以用長度運算符sizeof()求出任意類型變量存儲單元的字節(jié)數(shù)。編譯系統(tǒng)根據(jù)變量被定義的類型檢查該變量進行運算的合法性。如果沒有給變量賦初始值,普通變量將存儲隨機值,直到給它賦值為止。整形數(shù)據(jù)的存儲C語言中的整型數(shù)據(jù)分為有符號和無符號兩大類〔在內存中一般其最高位〔最左邊一位〕表示數(shù)的符號,以0表示正1表示負,數(shù)值以補碼形式存放。正數(shù)的補碼就是該數(shù)的二進制數(shù)。負數(shù)的補碼就是:先取該數(shù)的絕對值;然后以二進制形式表示;再對其取反;然后加1。如-10的補碼:0000000000001010取反11111111111110101再加1得到1111111111110110所以-10的16位存儲形式為:1111111111110110
inta=65,b=32767,c=-1;unsigned
inta=65,b=65535;整型數(shù)據(jù)的存儲舉例2字節(jié)的int型整數(shù)的補碼整型數(shù)據(jù)的存儲整形數(shù)據(jù)的補碼轉換負數(shù)的轉換步驟如下:32768取絕對值,如|-32768|等于32768216-|a|,如216-|-32768|等于65536–32768等于32768轉換成二進制,如1000000000000000〔32768等于215〕數(shù)據(jù)的存儲實型數(shù)據(jù)的存儲(在計算機內部凡實數(shù)都是以浮點形式存儲一般用4個字節(jié)前三個字節(jié)存放數(shù)字局部,一個字節(jié)存放指數(shù)局部)
字符數(shù)據(jù)的存儲與使用
標識符、常量與變量舉例【例2-2】演示字符數(shù)據(jù)的存儲和引用。#include<stdio.h>voidmain(){ charc; inti;c='A'; i=c; printf("c=%d,c=%c\n",c,c); printf("i=%d,i=%c\n",i,i); c=c+32; printf("c=%c\n",c); c=0x80; printf("c=%c,c=%d\n",c,c);}運算符與表達式學習運算符要注意以下幾方面問題運算符的功能。運算符與操作對象即操作數(shù)〔包括常量、變量、函數(shù)調用等〕的關系:操作數(shù)的個數(shù)〔單目、雙目、三目〕。求操作數(shù)的類型〔如求余運算符%要求操作數(shù)是整型〕。結合方向運算符的優(yōu)先級。運算結果的數(shù)據(jù)類型運算符連接操作數(shù)形成的式子叫表達式。算術運算符算術運算符與算術表達式+〔加〕、-〔減〕、*〔乘〕、/〔除〕、%〔取模,或稱求余運算符〕。雙目運算符,結合方向均為從左到右。%〔取模〕運算符僅用于整型變量或整型常量的運算,a%b結果為a除以b的余數(shù),余數(shù)的符號與被除除數(shù)相同,如:7%3的值為1;17%-3的結果為2;-19%4的結果為-3。+、-、*、/運算符的兩個操作數(shù)既可以是整數(shù),也可以是實數(shù)。/〔除法〕運算符,當對兩個整型的數(shù)據(jù)相除時為整除操作數(shù)據(jù)類型的轉換強制類型轉換〔顯式轉換〕運算符:〔類型〕例如:(double)a(int)(x+y)(float)5/3表達式一定要加括號〔因強制類型轉換是單目運算,優(yōu)先級高〕,例如上面最后一個表達式中只是將5轉變成float型,而不是將5/3轉變成float型。假設對變量實型顯式轉換,將得到新類型的一個值,原變量的類型及其存儲值均不變。類型轉換舉例【例2-5】演示強制類型轉換。#include<stdio.h>voidmain(){ inti; floatf; f=3.1415926; printf("i=%d,f=%f\n",i,f); i=(int)f; printf("i=%d\n",i); f=5/3; printf("f=%f\n",f); f=(float)5/3; printf("f=%f\n",f); printf("f=%d\n",f);/*實數(shù)按整型數(shù)方式輸出*/ printf("i=%f\n",i);/*整型按實數(shù)方式輸出*/}自加自減運算符與表達式自增自減運算符:++和–單目運算符,右結合作用對象必須是變量前綴運算inti=5,j; j=++i;j等于6?!蚕仍鲋岛笠谩澈缶Y運算inti=5,j; j=i++;j等于5?!蚕纫煤笤鲋怠迟x值運算符與賦值表達式賦值運算符與賦值表達式變量=表達式“=”是賦值運算符,不同于等號〔等號是==〕。右結合inta,b;a=b=100;連續(xù)賦值,只有最后一步有效。例如:inta;a=100;a=200;賦值運算符的優(yōu)先級較低〔只高于逗號運算符〕,因此一般情況下表達式無須加括號。例如:a=2+5/3相當于:a=(2+5/3)賦值運算可以構成一個表達式,其值可以再賦給其他變量。例如:a=b=100;其實相當于:a=(b=100);復合賦值運算符+=、-=、*=、/=、%=、<<=、>>=、&=、^=和|=a+=100;等價于a=a+100;a*=b;等價于a=a*b;……簡化程序,使程序精練;提高編譯效率,產生質量較高的目標代碼。
表達式的書寫舉例算術表達式的書寫(-b+sqrt(b*b-4*a*c))/(2*a)設有變量聲明floata=3.0;intb=2;計算表達式
2+sqrt(1.0+a)*b++/2。解:2+sqrt(1.0+a)*b++/2
2+sqrt(4.0)*b++/2
2+2.0*2/2
2+4.0/2
2+2.0
4.0
逗號運算符與逗號表達式逗號運算符與逗號表達式(表達式1),(表達式2),(表達式3),…,(表達式n)表達式n的值就是整個逗號表達式的值?!纠?-7】演示逗號表達式。#include<stdio.h>voidmain(){ inta; printf("1+2+3+4+5=%d\n",
(a=1,a=a+2,a=a+3,a=a+4,a=a+5)); printf("a=%d\n",a);}數(shù)據(jù)類型轉換類型轉換概述不同類型數(shù)據(jù)的存儲長度和存儲方式不同,一般不能直接混合運算。為了提高編程效率,增加應用的靈活性,C語言允許不同數(shù)據(jù)類型相互轉換。不同數(shù)據(jù)類型的差異double比float高級。實數(shù)比整數(shù)高級。整數(shù)中長的比短的高級,如:long>int>short>char無符號〔unsigned〕比有符號〔signed〕高級數(shù)據(jù)類型轉換數(shù)據(jù)類型轉換產生的效果數(shù)據(jù)類型級別的提升與降低符號位擴展與零擴展截去高位產生數(shù)值的變化喪失精度實數(shù)轉換成整數(shù)時,由于截去小數(shù)將喪失精度。double型轉換成float型時,有效數(shù)字減少〔四舍五入〕,精度喪失。long型轉換成float型時,由原來可達10位整數(shù)變成只有7位有效數(shù)字,精度喪失,但由于數(shù)的范圍擴大了,數(shù)據(jù)類型從較低級提升到較高級數(shù)據(jù)類型轉換
自動類型轉換float在運算時自動轉換成double。char和short在運算時自動轉換成int。int和unsigned混合運算時,將int轉換成unsigned數(shù)據(jù)。int或unsigned與long混合運算時,都轉換成long數(shù)據(jù)。int、unsigned、long與浮點型數(shù)據(jù)混合運算時,都轉換成double
數(shù)據(jù)類型轉換強制類型轉換強制類型轉換的格式為:(類型名)(表達式)強制類型轉換用于不能自動轉換的情況。例如:(int)5.0%3 /*實型數(shù)據(jù)求余運算*/(int)(f+0.5) /*第一位小數(shù)的四舍五入算法*/(int)(f*10+0.5)/10.0/*第二位小數(shù)的四舍五入算法*/C語言的數(shù)據(jù)類型。C語言的數(shù)據(jù)類型有4類:根本類型、構造類型、指針類型和空類型。根本數(shù)據(jù)類型包括整型、實型、字符型3種。它們的表示方法、數(shù)據(jù)的取值范圍等各有特點。常量和變量。常量指在程序運行中其值不能被改變的量,包括整數(shù)、長整數(shù)、無符號整數(shù)、浮點數(shù)、字符、字符串、符號常量等。其中特別要注意字符和字符串的區(qū)別。變量是指在程序運行過程中其值可以被改變的量,包括各種整型、實型、字符型等。變量的名稱可以是任何合法的標識符,但不能是關鍵字。給變量命名時應盡量做到“見名知義”。C語言共有13類運算符。運算符主要有算術運算符〔包括自加、自減運算符〕、關系運算符、邏輯運算符、條件運算符、位運算符、賦值運算符和逗號運算符等。每種運算符運算對象的個數(shù)、優(yōu)先級、結合性也各有不同。一般而言,單目運算符優(yōu)先級較高,賦值運算符優(yōu)先級較低。大多數(shù)雙目運算符為左結合性,單目、三目及賦值運算符為右結合性。表達式。表達式是由運算符連接各種類型的數(shù)據(jù)〔包括常量、有值變量和函數(shù)調用等〕組合而成的式子。表達式的求值應按照運算符的優(yōu)先級和結合性所規(guī)定的順序進行。數(shù)據(jù)類型轉換。不同類型的數(shù)據(jù)在進行混合運算時,需要進行類型轉換。類型轉換有3種方式:自動類型轉換。當不同類型的數(shù)據(jù)進行混合運算時,按照“精度”不降低的原那么從低級向高級自動進行轉換。賦值類型轉換。當賦值運算符兩側的類型不一致時,將表達式值的類型轉換成變量的類型再賦給變量。強制類型轉換。當希望將一個表達式強制轉換成所需類型時可進行強制類型轉換。在自動類型轉換中,float自動轉換成double,char和short自動轉換成int進行計算,而不管是否存在混合類型的運算。在程序設計中要合理使用數(shù)據(jù)類型,防止數(shù)值的變化和精度的喪失。下面程序的輸出是_________。#include<stdio.h>voidmain(){inta=10,b=10;printf("%d,%d,%d,%d\n",a--,a,--b,b);}下面程序的輸出是_________。#include<stdio.h>voidmain(){inti=1,j,k;j=i++; printf("j=%d,i=%d\n",j,i);k=++i; printf("k=%d,i=%d\n",k,i);j=i--; printf("j=%d,i=%d\n",j,i);k=--i; printf("k=%d,i=%d\n",k,i);i=j=5;printf("i+j=%d,++j=%d\n",i+j,++j);}C語言語句表達式語句表達式;
例如:x=100/*表達式*/〔注意二者的區(qū)別〕x=100;/*語句*/函數(shù)調用語句函數(shù)名(參數(shù)列表);
例如:printf("HelloWorld!\n");C語言語句控制語句控制語句用于完成一定的控制功能,以實現(xiàn)程序的結構化。C語言有9種控制語句,可分為以下3類:條件判斷語句:if語句、switch語句。轉向語句:break語句、continue語句、goto語句、return語句。循環(huán)語句:for語句、while語句、do-while語句。C語言語句復合語句復合語句是用花括號將假設干語句組合在一起,又稱分程序例如,下面是一個復合語句:
{
i=5;
printf("%d\n",i);
}空語句;程序結構程序結構簡介在C語言中,程序結構一般分為順序結構、選擇結構、循環(huán)結構。任何復雜的程序都是由這3種根本結構組成的。【例3-1】簡單的程序結構。#include<stdio.h>voidmain(){inta,b,c; /*聲明局部,定義了3個整型變量*/a=100; /*執(zhí)行局部開始,直到最后的花括號*/b=200;c=a+b;printf("a+b=%d\n",c);}程序結構【例3-2】由多個函數(shù)構成的程序結構。#include<stdio.h>voidmain() /*主函數(shù)*/{inta,b,c; /*聲明局部,定義變量的類型*/scanf("%d,%d",&a,&b); /*通過輸入函數(shù),給變量a、b賦值*/c=sum(a,b); /*調用sum函數(shù),將函數(shù)值賦給變量c*/printf("a+b=%d\n",c); /*輸出變量c的值*/}intsum(inta,intb) /*定義一個sum函數(shù)*/{intc;c=a+b;return(c);/*將變量c的值通過返回語句帶回調用處*/}程序結構順序結構程序運行時按語句書寫的次序依次執(zhí)行最簡單、最根本的結構【例3-3】分析下面程序結構。#include<stdio.h>voidmain(){inta,b,c;scanf("%d,%d",&a,&b);c=a+b;printf("c=%d\n",c);}賦值語句根本賦值語句變量=表達式;正確的賦值語句:a=100;a=a+200; /*兩個賦值語句,最后a變成300*/a=b=c=100; /*相當于a=(b=c=100);*/c=(a=100,b=a,a+b);/*右邊是逗號表達式*/錯誤的賦值語句:c+2=a+b; /*左邊不是變量名,是表達式*/賦值運算符“=”可以理解成,例如:c=a+b可以看成ca+b。賦值語句復合賦值語句a+=3;/*相當于a=a+3*/b-=6;/*相當于b=b-6*/c/=2;/*相當于c=c/2*/在構造以上賦值語句之前,變量必須已經初始化或賦值。下面的程序是錯誤的:inta;a+=10;因為a+=10相當于a=a+10,而右邊表達式中的a是剛剛定義的,還沒有具體的值。數(shù)據(jù)輸入與輸出C語言本身不提供輸入輸出語句,其數(shù)據(jù)的輸入和輸出功能是由函數(shù)來實現(xiàn)的#include<stdio.h>printf〔格式輸出〕、scanf〔格式輸入〕、putchar〔輸出字符〕,getchar〔輸入字符〕TurboC中允許在使用這兩個函數(shù)時不用#include命令使用數(shù)學函數(shù)庫時,要用到math.h文件數(shù)據(jù)輸入與輸出格式化輸出函數(shù)printf功能是向系統(tǒng)指定的設備輸出假設干個任意類型的數(shù)據(jù)調用形式printf(格式控制字符串,輸出列表);格式控制字符串是用雙引號括起來的字符串,它包括兩個信息:格式說明。由“%”和格式字符組成,如%d、%c、%f等。它的作用是將要輸出的數(shù)據(jù)轉化成指定的格式輸出,格式說明都是由“%”字符開始的。一般字符。或者稱為非格式說明符,即按原樣輸出的字符。數(shù)據(jù)輸入與輸出格式化輸出函數(shù)printf輸出列表是需要輸出的變量、函數(shù)、表達式。
例如:printf("a+b=%d\n",c);“%d”是格式說明,用來控制輸出項c的輸出格式?!癮+b=”和“\n”都是一般字符,原樣輸出,“\n”是轉義字符,代表換行符。假設c為300,那么輸出結果為:a+b=300數(shù)據(jù)輸入與輸出格式化輸出函數(shù)printf格式說明%[標志][最小寬度][.精度][長度]類型[] 表示可選項[標志] 可以是-、+、0數(shù)據(jù)輸入與輸出格式化輸出函數(shù)printf[最小寬度]:十進制整數(shù),表示輸出的最少位數(shù)。[.精度]:“.”加上十進制整數(shù)n,其含義是:如果輸出的是數(shù)值,那么該數(shù)表示小數(shù)位數(shù),假設實際小數(shù)位數(shù)大于該值,那么超出局部四舍五入;如果輸出的是字符,那么表示輸出字符的個數(shù)。[長度]:可以是h、l。h表示按短整型量輸出,l表示按長整型量或雙精度量輸出。數(shù)據(jù)輸入與輸出格式化輸出函數(shù)printf類型:格式說明符中必須要有的,它表示輸出列表里要輸出的數(shù)據(jù)類型格式化輸出函數(shù)printf注意:可以在格式控制字符串中包含前面所講的“轉義字符”,如‘\n’〔換行〕、‘\t’〔橫向跳格〕、‘\r’〔回車〕、‘\b’〔退格〕、\’〔代表撇號字符〕、\\反斜杠字符等。跟在%后面的格式符除X〔表示輸出的十六進制數(shù)用大寫字母輸出〕、E〔表示輸出的指數(shù)e用大寫字母E輸出〕、G〔表示假設選用指數(shù)形式輸出,那么用大寫字母E輸出〕外,其余必須是小寫字母。如%d不能寫成%D。假設想輸出字符“%”,那么在格式字符串中用連續(xù)兩個%表示。如:printf("%f%%",1.0/4);
輸出:0.250000%。數(shù)據(jù)輸入與輸出格式化輸入函數(shù)scanfscanf函數(shù)的功能是從鍵盤上將數(shù)據(jù)按用戶指定的格式輸入并賦給指定的變量調用的一般形式為:scanf(格式控制字符串,地址列表);其中格式控制字符串的定義與使用方法和printf函數(shù)相同,但不能顯示非格式字符。地址列表是要賦值的各變量地址。地址是由地址運算符“&”后跟變量名組成,如&x表示變量x的地址。默認的分隔符有空格、回車符、Tab〔跳格〕鍵例scanf函數(shù)的使用#include<stdio.h>voidmain(){inta,b;scanf("%d%d",&a,&b);printf("a=%d,b=%d\n",a,b);}運行時按以下方式輸入a、b的值:100-200程序將輸出:a=100,b=-200格式化輸入函數(shù)scanf格式說明%[*][寬度][長度]類型
[*]:表示輸入的數(shù)值不賦給相應的變量,即跳過該數(shù)據(jù)不讀。[寬度]:十進制正整數(shù),表示輸入數(shù)據(jù)的最大寬度。[長度]:長度格式符為l和h,l表示輸入長整型數(shù)據(jù)或雙精度實型數(shù)據(jù);h表示輸入短整型數(shù)據(jù)。格式化輸入函數(shù)scanf類型格式化輸入函數(shù)scanf注意:scanf函數(shù)中的“格式控制字符串”后面的輸入項應該是地址,而不應是變量名。例如:scanf("%d,%d",&a,&b);不能將語句寫成:scanf("%d,%d",a,b);scanf不支持輸入精度控制。例如:scanf("%8.3f",&x);是不合法的。在“格式控制字符串”中除了格式說明符外,也允許出現(xiàn)其他字符,但在輸入數(shù)據(jù)時在對應位置上應輸入與這些字符相同的字符。例如:scanf("a=%d,b=%d",&a,&b);
那么輸入時應輸入:a=12,b=-2格式化輸入函數(shù)scanf注意:輸入數(shù)據(jù)時,遇到以下情況認為該數(shù)據(jù)輸入結束:按指定的寬度結束。遇空格,或回車鍵,或Tab鍵。遇非法輸入。如例3-6第5局部:
scanf(“%d%c%d”,&a,&c,&b);
之所以輸入:100A-200可以分別使得a、b、c為100、-200、'A',其主要原因是讀入100后遇到字符A,不是數(shù)字字符,從而變量a的輸入結束。當輸入的數(shù)據(jù)與輸出的類型不一樣時,雖然編譯沒有提示出錯,但結果將不正確。字符數(shù)據(jù)的輸入與輸出字符輸入函數(shù)getchar從標準設備〔鍵盤〕上讀入一個字符【例3-7】字符輸入函數(shù)的使用。#include<stdio.h>voidmain(){charc1,c2;c1=getchar();c2=getchar();printf("%c,%c\n",c1,c2);}字符數(shù)據(jù)的輸入與輸出字符輸出函數(shù)putchar向標準輸出設備〔顯示器〕輸出一個字符.例如:putchar('A'); /*輸出字符A*/putchar(65); /*輸出65所對應的字符A*/putchar('\n'); /*輸出換行符*/在上例最后的花括號“}”前添加語句:putchar(c1);putchar(c2);putchar('\n');程序舉例【例3-8】從鍵盤上輸入兩個整數(shù)放入變量a和b中,編程將這兩個變量中的數(shù)據(jù)交換。#include<stdio.h>main(){inta,b,t;a=3;b=5;t=a;a=b;b=t;printf("a=%d,b=%d\n",a,b);}【例3-9】從鍵盤上輸入一個小寫英文字母,編程輸出該字母所對應的大寫字母?!痉治觥看髮懽帜窤~Z的ASCII碼值為65~90,小寫字母a~z的ASCII碼值為97~122。每對字母的ASCII碼值差都是32,即'a'-'A'、'b'-'B'、'c'-'C'、…、'z'-'Z'都等于32。 程序如下:#include<stdio.h>voidmain(){ charc1,c2; c1=getchar(); c2=c1-32; printf("%d,%d,%c,%c\n",c1,c2,c1,c2);}【例3-11】設計程序計算方程的解。其中
a、b、c用scanf函數(shù)輸入〔設為2、3、1〕【分析】由數(shù)學知識可知:求ax2+bx+c=0的根可用求根公式。即當b2-4ac≥0時,方程的兩個根可用如下公式進行求解:#include<stdio.h>#include<math.h>voidmain(){floata,b,c,d,x1,x2;printf("Pleaseinputa,b,c:");scanf("%f,%f,%f",&a,&b,&c);d=sqrt(b*b-4*a*c);x1=(-b+d)/(2*a);x2=(-b-d)/(2*a);printf("x1=%f,x2=%f\n",x1,x2);}本章介紹了順序程序結構、賦值語句、根本的輸入/輸出函數(shù)。其中重點講解了以下幾方面的內容:程序結構。C程序的結構分為順序結構、選擇結構、循環(huán)結構。任何C程序都由這3種結構構成。賦值語句。由賦值運算表達式構造的賦值語句是最常用的語句,是對變量的最根本操作。根本的輸入/輸出函數(shù)。格式化輸出函數(shù)printf和格式化輸入函數(shù)scanf。字符輸出函數(shù)putchar和字符輸入函數(shù)getchar。使用上述函數(shù)需要包含頭文件stdio.h,TC中允許在使用printf和scanf函數(shù)時忽略包含該頭文件。格式字符。格式字符是以%開頭、類型字符結尾的特殊字符串,其中輸出格式字符要更為復雜些。輸出格式字符??梢院唵卫斫獬桑?[標志][寬度][精度][長度]類型。類型字符是必須有的,主要有d、o、x、u、f、e、g、c、s,其中d、o、x、u用于整型數(shù)據(jù),f、e、g用于實型數(shù)據(jù),c、s用于字符型數(shù)據(jù)。d表示十進制整數(shù),o表示八進制整數(shù),x表示十六進制整數(shù),u表示無符號整數(shù)。f表示十進制小數(shù),e表示十進制指數(shù),g表示自動選取f或e中較短長度的格式。c表示單個字符,s表示一串字符。x、e、g可以是大寫的X、E、G,相應輸出結果中的字母也將是大寫。e默認輸出5位小數(shù),指數(shù)局部TC下默認2位、VC下默認4位。g默認輸出1位小數(shù)。標志、寬度、精度、長度是可選的,如果沒有設置,那么按默認的格式輸出。標志有+、-、0三種字符,“+”用于增加標注正數(shù)前面的“+”號,“-”用于更改對齊方式為左對齊,“0”用于修改默認空余填充的空格為“0”。寬度是十進制整數(shù),不是強制執(zhí)行的,當寬度小于實際寬度時無效,如果超出,那么默認填充空格。當寬度超出實際寬度時,還會帶來對齊的問題,默認是右對齊。精度是十進制整數(shù),主要用于實型和字符型數(shù)據(jù)的輸出控制。實型數(shù)默認輸出6位小數(shù),精度可以修改小數(shù)位數(shù),精度不同于有效數(shù)字位數(shù)。同時包含寬度和精度的格式串,首先處理精度,然后得到實際寬度,再把設置的寬度和實際寬度比較,超出那么填充空格,否那么設置寬度無效。長度有h、l兩種字符。h用于標注是短整型,l用于標注是長整型或double實型。值得注意的是,32位機器下,VC編程環(huán)境中int和long都是4個字節(jié),在輸出long型數(shù)據(jù)時可以不加l修飾了。輸入格式字符。可以簡單理解成:%[*][寬度][長度]類型。很顯然,輸入格式字符要簡單得多。寬度、長度和類型的意義根本同輸出格式符。“*”表示虛讀。編程求方程2x2-3x-6=0的根。輸入3個整數(shù)a、b、c,編程交換它們的值,即把a中的值給b,把b中的值給c,把c中的值給a。編程將任意輸入的小寫字母轉化成大寫字母并輸出。試做以下練習題選出合法的常量并指出不合法的理由-0、-0x2a1、0003、5e+0、3.e-5、2E5、‘{’、‘\n’、“105”、“x-y”、“36’63”23
、0x7g、e3、12.5e2
、‘105’、‘AB’、3+6、e、7ff、2e-310、12356e、3e+2.3
±7f下面哪些可以做為變量名:a3B
、3aB、π、+a、
b
、*x、s、b5
、if、next、day、e2
、ok?、Intger
、maxnumber由字母、數(shù)字和下劃線三種字符組成,且第一個字符必須是字母或下劃線對上次課的復習1、根本算術運算符除了正、負值運算符為單目運算符外,其它都是雙目運算符?!?〕兩個整數(shù)相除的結果為整數(shù),如5/3的結果為1,舍去小數(shù)局部。但是如果除數(shù)或被除數(shù)中有一個為負值,那么舍入的方向是不固定的,多數(shù)機器采用“向0取整”的方法〔實際上就是舍去小數(shù)局部,注意:不是四舍五入〕?!?〕如果參加+,-,*,/運算的兩個數(shù)有一個為實數(shù),那么結果為double型,因為所有實數(shù)都按double型進行計算。〔3〕求余運算符%,要求兩個操作數(shù)均為整型,結果為兩數(shù)相除所得的余數(shù)。求余也稱為求模。2、算術表達式C語言算術表達式的書寫形式與數(shù)學表達式的書寫形式有一定的區(qū)別:〔1〕C語言算術表達式的乘號〔*〕不能省略。例如:數(shù)學式b2-4ac,相應的C表達式應該寫成:b*b-4*a*c?!?〕C語言表達式中只能出現(xiàn)字符集允許的字符。例如,數(shù)學πr2相應的C表達式應該寫成:PI*r*r?!财渲蠵I是已經定義的符號常量〕〔3〕C語言算術表達式不允許有分子分母的形式。例如,(a+b)/(c+d)?!?〕C語言算術表達式只使用圓括號改變運算的優(yōu)先順序〔不要指望用{}[]〕??梢允褂枚鄬訄A括號,此時左右括號必須配對,運算時從內層括號開始,由內向外依次計算表達式的值。賦值表達式使用注意:〔1〕賦值運算符左邊必須是變量,右邊可以是常量、變量、函數(shù)調用或常量、變量、函數(shù)調用組成的表達式。例如:x=10y=x+10y=func()都是合法的賦值表達式。
〔2〕賦值符號“=”不同于數(shù)學的等號,它沒有相等的含義。例如:C語言中x=x+1是合法的〔數(shù)學上不合法〕,它的含義是取出變量x的值加1,再存放到變量x中?!?〕賦值表達式的值等于左邊變量的值?!?〕賦值運算符的優(yōu)先級只高于逗號運算符,為右結合性。復合賦值運算符和表達式在賦值符“=”之前加上某些運算符,可以構成復合賦值運算符,復合賦值運算符可以構成賦值表達式。C語言中許多雙目運算符可以與賦值運算符一起構成復合運算符,即:+=,-=,*=,/=,%=,<<=,>>=,&=,|=,^=復合賦值表達式一般形式:<變量><雙目運算符>=<表達式>
等價于:<變量>=<變量><雙目運算符><表達式>例如:n+=1等價于n=n+1x*=y+1等價于x=x*(y+1)自加、自減運算符使用說明:〔1〕自增、自減運算,常用于循環(huán)語句中,使循環(huán)控制變量加〔或減〕1,以及指針變量中,使指針指向下〔或上〕一個地址?!?〕自增、自減運算符,不能用于常量和表達式。例如,5++、--(a+b)等都是非法的?!?〕在表達式中,連續(xù)使同一變量進行自增或自減運算時,很容易出錯,所以最好防止這種用法。++i前綴式:先增值后引用i++后綴式:先引用后增值逗號運算符和表達式其求解過程為:自左至右,依次計算各表達式的值,“表達式n”的值即為整個逗號表達式的值。例如,逗號表達式“a=3*5,a*4”的值=60:先求解a=3*5,得a=15;再求a*4=60,所以逗號表達式的值=60。又例如,逗號表達式“(a=3*5,a*4),a+5”的值=20:先求解a=3*5,得a=15;再求a*4=60;最后求解a+5=20,所以逗號表達式的值=20。新課目標掌握關系表達式和邏輯表達式的組成及運算理解選擇結構〔分支結構〕程序設計的概念掌握if語句、switch語句的根本結構及執(zhí)行過程學會簡單的選擇結構程序設計Main(){printf(“我是第一”);printf(“我是第二”);}/*每個語句都執(zhí)行是最根本的結構。在執(zhí)行時是按從上往下執(zhí)行,一句都不漏的往下執(zhí)行*/在平時娛樂時大家用QQ時,在輸入密碼時有二種選擇:1、密碼對了就登錄QQ。2、密碼要是不對就提示密碼不對請重新輸入。這樣的生活問題。如何轉換成計算機問題呢?下面是文字描述的樣式:如果〔if〕〔用戶輸入密碼是對的〕輸出:“密碼正確”否那么(else)輸出:“密碼不對請重新輸入”If(判斷式){
判斷式成立執(zhí)行的語句Else{
判斷式不成立執(zhí)行的語句
}}語句塊一語句塊二關系運算符和表達式< 小于> 大于== 等于<= 小于或等于>= 大于或等于!= 不等于C語言中的幾種關系運算符所謂關系運算實際上是“比較運算”,即進行兩個數(shù)的比較,判斷比較的結果是否符合指定的條件。運算的結果是一邏輯值,0或者1,0代表假1代表真。在使用關系運算符時本卷須知:1、由兩個字符組成的運算符之間不允許有空格,如:<=不能寫成<=。2、關系運算符是雙目運算符,具有自左至右的結合性。其值只有整數(shù)0和1。關系表達式及關系表達式的值由關系運算符構成的表達稱為關系表達式。關系運算符兩邊的運算對象可能是C語言中任意合法的表達。例如:a>=b、(a=3)>(b=4)、a>c==c假設x=3,y=z=4,求表達式的值。(z>=y>=x)?1:0假設X=3,y=2,z=1,求以下表達的值。x<y?y:x(2)x<y?x++:y++如:a=2,b=3那么a>b 值為02+a<b+2 值為1‘x’<‘y’ 值為1‘x’!=‘x’ 值為0(a>2==b>2) 值為0寫出下面程序的輸出結果Main(){intx=1,y=2,z=3;x+=y+=z;printf(“%d\n”,x<y?y:x);printf(“%d\n”,x<y?x++:y++);printf(“%d\n”,x,y,z);}If結構〔關系表達式〕程序舉例如果輸入的QQ密碼是123那么顯示恭喜你可以進入QQ聊天,否那么請重新輸入密碼。程序如下:Main(){inta;Scanf(“%d”,&a);If(a==123){printf(“恭喜你可以進入QQ聊天”);}Else{printf(“對不起密碼不對重新輸入”);}Getch();}If選擇結構〔關系表達式〕程序舉例如果年齡大于18顯示可以上網,否那么顯示未成年不允許上網。Main(){ingage;scanf(“%d”,&age);if(age>=18){printf(“你可以上網”);}else{printf(“你未成年不允許上網”);}Getch();}If選擇結構〔關系表達式〕程序舉例用戶輸入一整數(shù)判斷是奇數(shù)還是偶數(shù)main(){inta;scanf(“%d”,&a);if(a%2==0){printf(“是偶數(shù)”);} else{printf(“是奇數(shù)”);}Getch();}判斷輸入的數(shù)能否被3整除是那么輸出否那么什么也不做main(){inta;scanf(“%d”,&a);if(a%3!=0){printf(“不能被3整除的數(shù)”);} Getch();}If選擇結構〔關系表達式〕程序舉例在現(xiàn)實生活中女人挑選自己嫁人對象的條件是:(1)年紀在30以內且月收入大于5000。(2)年紀大于30且月收入大于30000。(3)兩個條件滿足其一即可嫁給你。年紀<30且月收入>5000容許嫁給你年紀>30且月收入>30000容許嫁給你描述為:年紀<30且月收入>5000或者年紀>30且月收入>30000時容許嫁給你上面條件中的“且“、”或者“怎么來表示呢邏輯運算符和邏輯表達式&&和||為雙目運算符。!為單目運算符出現(xiàn)在運算對象的左邊。它們的優(yōu)先級別是:!、&&、||。所有運算符的優(yōu)先級別為:!(非)、算術運算符、關系運算符、&&(與)、||(或)、賦值運算符!〔邏輯非〕、&&〔邏輯與〕、||〔邏輯或〕邏輯運算符的“短路”現(xiàn)象假設&&運算符左邊的表達式為假〔或0〕,那么其右邊的表達式將不再運算,整個表達式的值必然為假假設||運算符左邊的表達式為真〔或非0值〕,那么其右邊的表達式將不再運算,整個表達式的值必然為真3<5||++b測試短路現(xiàn)象#include<stdio.h>voidmain(){ inta,b; a=b=0; a||++b;printf("%d,%d\n",a,b); a=b=1; a||++b;printf("%d,%d\n",a,b); a=b=0; a&&++b;printf("%d,%d\n",a,b); a=b=1; a&&++b;printf("%d,%d\n",a,b);}測試短路現(xiàn)象#include<stdio.h>intshow(intn,inta){ printf("(%d,%d)",n,a); returna;}voidmain(){ inta; a=show(1,1)||show(2,2)&&show(3,3);printf("a=%d\n",a); a=show(1,0)||show(2,0)&&show(3,1);printf("a=%d\n",a); a=show(1,0)||show(2,1)&&show(3,2);printf("a=%d\n",a);}if語句單分支if語句if(表達式)語句;從鍵盤輸入一個整數(shù),判斷是否是偶數(shù),假設是,那么輸出“Yes”。#include<stdio.h>voidmain(){ inta; printf("Pleaseinputa:"); scanf("%d",&a); if(a%2==0) printf("Yes\n");}if語句雙分支if語句形式為:if(表達式)
語句1;else
語句2;從鍵盤輸入一個整數(shù),判斷是否是偶數(shù),假設是,那么輸出“Yes”,否那么輸出“No”#include<stdio.h>voidmain(){ inta; printf("Pleaseinputa:"); scanf("%d",&a); if(a%2==0) printf("Yes\n"); else printf("No\n");}從鍵盤輸入兩個整數(shù),輸出其中最大者#include<stdio.h>voidmain(){ inta,b; printf("Pleaseinputa,b:"); scanf("%d,%d",&a,&b); if(a>b) printf("max=%d\n",a); else printf("max=%d\n",b);}多分支選擇結構多分支選擇結構的if語句一般形式為:if(表達式1)語句1;
else
if(表達式2)語句2;…
else
if(表達式n)語句n;
else
語句n+1;輸入出租車類型和里程,計算打車的費用。計算方式為:3公里以內8元;3公里以上0車型每公里1.5元,1車型每公里2元。#include<stdio.h>voidmain(){ inttaxiType; floats; floatmoney; printf("Inputtaxitype(0,1):"); scanf("%d",&taxiType); printf("Inputs:"); scanf("%f",&s); if(s<3) money=8; else if(taxiType==0) money=8+(s-3)*1.5; else money=8+(s-3)*2; printf("money=%.2f\n",money);}if語句的嵌套if(表達式)
if(表達式) 語句1;
else
語句2;else
if(表達式) 語句3;
else
語句4;
C語言規(guī)定else總是和其前面最近的沒有else配對的if配對。輸入一個正整數(shù)作為年份,編程判斷該年是不是閏年。假設是輸出“YES”,否那么輸出“NO”?!痉治觥繚M足下面條件之一即為閏年:能被4整除,但不能被100整除。能被400整除。#include"stdio.h"voidmain(){ intyear; scanf("%d",&year); if(year%400==0)printf("Yes\n"); else if(year%4==0&&year%100!=0)printf("Yes\n"); else printf("NO\n");}year%400==0||(year%4==0&&year%100!=0)switch語句switch(表達式){case常量表達式1:語句1;case常量表達式2:語句2;…case常量表達式n:語句n;default:語句n+1;}輸入一個十進制數(shù),根據(jù)輸入的數(shù)輸出所對應的英文星期單詞,假設所輸入的數(shù)小于1或大于7,那么輸出“Error”。#include<stdio.h>voidmain(){ inta; printf("Inputa:"); scanf("%d",&a); switch(a) { case1:printf("Monday\n"); case2:printf("Tuesday\n"); case3:printf("Wednesday\n"); case4:printf("Thursday\n"); case5:printf("Friday\n"); case6:printf("Saturday\n"); case7:printf("Sunday\n"); default:printf("Error\n");}}switch語句switch(表達式){
case常量表達式1:語句1;break;
case常量表達式2:語句2;break;…
case常量表達式n:語句n;break;
default:語句n+1;}修改后的例4-10程序#include<stdio.h>voidmain(){ inta; printf("Inputa:"); scanf("%d",&a); switch(a) { case1:printf("Monday\n");break; case2:printf("Tuesday\n");break; case3:printf("Wednesday\n");break; case4:printf("Thursday\n");break; case5:printf("Friday\n");break; case6:printf("Saturday\n");break; case7:printf("Sunday\n");break; default:printf("Error\n");break; }}【注意】switch后跟的“表達式”允許為任何類型的表達式,其數(shù)據(jù)類型和case后面的常量表達式的數(shù)據(jù)類型一致。每一個case后的各常量表達式的值不允許重復,否那么會報錯。每一個case后允許有多條語句,可以不用花括號“{}”括起來。case和default子句出現(xiàn)的先后順序可以變動,不會影響程序的執(zhí)行結果。default子句也可以省略不用。多個case可以共用一組執(zhí)行語句。例如:…case'A':case'B':case'C':printf("Pass\n");break;程序舉例 【例4-11】輸入一個100以內的十進制正整數(shù),判斷該數(shù)是否包含數(shù)字字符“6”。假設是輸出“Yes!”,否那么輸出“No!”。#include<stdio.h>voidmain(){inta; printf("Inputa:"); scanf("%d",&a); if(a==6||(a%10==6||a/10==6)) printf("Yes!\n"); else printf("No!\n");}輸入3個數(shù),按從小到大的順序輸出。#include"stdio.h"voidmain(){ inta,b,c,t; printf("Inputa,b,c:"); scanf("%d,%d,%d",&a,&b,&c); if(a>b){t=a;a=b;b=t;} if(b>c){t=b;b=c;c=t;} if(a>b){t=a;a=b;b=t;} printf("%d<=%d<=%d\n",a,b,c);}將一個百分制的成績〔設是整數(shù)〕轉化成5個等級90分以上為‘A’,80~89分為‘B’,70~79分為‘C’,60~69分為‘D’,60分以下為‘E’。
例如,輸入75,那么顯示C。【分析】先判斷輸入的數(shù)據(jù)是否在合理的分數(shù)范圍〔0~100〕內,然后再判斷是哪個分數(shù)段:90分以上輸出A,80~89分輸出B,70~79分輸出C,60~69分輸出D,否那么顯示E。將一個百分制的成績〔設是整數(shù)〕轉化成5個等級#include<stdio.h>voidmain(){ inta; printf("Inputa:"); scanf("%d",&a); if(a<0||a>100) printf("Inputdataerror\n"); else if(a>=90) printf("A\n"); else if(a>=80) printf("B\n"); else if(a>=70) printf("C\n"); else if(a>=60) printf("D\n"); else printf("E\n");}【分析】使用switch語句,當然最笨的方法是每一個分數(shù)一個case分支,將需要101個分支,顯然這種程序不值得推薦。那么有沒有簡化的方法呢?
其實,任何好的算法都是對問題分析和提煉的結果。題目中60分以上都是每10分一個層次,60分以下是一個層次。只要把每個層次的共性找到就容易找到簡化程序的方法了。以60~69為例。每個分數(shù)的十位數(shù)都是6,對于該層次的成績,整除10的結果都是6。同樣對于70~79、80~89、90~99都是一樣。而69分以下的成績整除10的結果都小于6。將一個百分制的成績〔設是整數(shù)〕轉化成5個等級〔用switch語句完成〕#include<stdio.h>voidmain(){ inta; printf("Inputa:");scanf("%d",&a); if(a<0||a>100)printf("Inputdataerror\n"); else switch(a/10) { case10: case9:printf("A\n");break; case8:printf("B\n");break; case7:printf("C\n");break; case6:printf("D\n")
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高考物理總復習專題十一交變電流第1講交變電流的產生和描述練習含答案
- 清算風險管理協(xié)議
- 油漆購銷合同范例
- 九年級道德與法治上冊 第一單元 富強與創(chuàng)新 第一課 踏上強國之路 第2框走向共同富裕教案1 新人教版
- 二年級品德與生活上冊 玩中有發(fā)現(xiàn)教案1 首師大版
- 2024-2025學年新教材高中生物 第四章 生物的變異 第一節(jié) 基因突變可能引起性狀改變教案(2)浙科版必修2
- 2024-2025學年高中歷史 第一單元 第1課 第一次世界大戰(zhàn)的爆發(fā)教案1 新人教版選修3
- 2024-2025學年高中地理 第二章 中國的主要自然災害 2.1 自然資源利用中存在的問題教案 中圖版選修6
- 廣東省佛山市順德區(qū)江義初級中學九年級化學上冊 3.1 分子和原子教案3 (新版)新人教版
- 2023七年級語文下冊 第四單元 寫作 怎樣選材配套教案 新人教版
- 2024秋期國家開放大學專科《高等數(shù)學基礎》一平臺在線形考(形考任務一至四)試題及答案
- 懷感恩與愛同行 主題班會課件
- 牛津譯林版英語2024七年級上冊全冊單元知識清單(默寫版)
- 生物體的結構層次大單元教學設計人教版生物七年級上冊
- 世界地理-英文課件
- 《螞蟻做操》說課稿
- 《危險駕駛罪》PPT課件.ppt
- (完整版)PD、QC有限快充的知識講解
- 習慣一積極主動
- 張礦集團人才發(fā)展規(guī)劃
- 初中美術板報設計1ppt課件
評論
0/150
提交評論