C程序設(shè)計(jì)(第四版)_第1頁(yè)
C程序設(shè)計(jì)(第四版)_第2頁(yè)
C程序設(shè)計(jì)(第四版)_第3頁(yè)
C程序設(shè)計(jì)(第四版)_第4頁(yè)
C程序設(shè)計(jì)(第四版)_第5頁(yè)
已閱讀5頁(yè),還剩232頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

C程序設(shè)計(jì)(第四版)

譚浩強(qiáng)著山東大學(xué)管理學(xué)院戚桂杰2024/5/27山東大學(xué)管理學(xué)院戚桂杰2目錄程序設(shè)計(jì)和C語(yǔ)言算法——程序的靈魂最簡(jiǎn)單的C程序設(shè)計(jì)——順序程序設(shè)計(jì)選擇結(jié)構(gòu)程序設(shè)計(jì)循環(huán)結(jié)構(gòu)程序設(shè)計(jì)利用數(shù)組處理批量數(shù)據(jù)利用函數(shù)實(shí)現(xiàn)模塊化程序設(shè)計(jì)善于利用指針用戶自己建立數(shù)據(jù)類型對(duì)文件的輸入輸出常見錯(cuò)誤分析2024/5/27山東大學(xué)管理學(xué)院戚桂杰3第1章程序設(shè)計(jì)和C語(yǔ)言所謂程序,就是一組計(jì)算機(jī)能識(shí)別和執(zhí)行的指令。#include<stdio.h>intmain()//一個(gè)簡(jiǎn)單的C語(yǔ)言程序{printf("ThisisaCprogram.\n");return0;}計(jì)算機(jī)語(yǔ)言的發(fā)展:機(jī)器語(yǔ)言匯編語(yǔ)言(低級(jí)語(yǔ)言)高級(jí)語(yǔ)言(面向過(guò)程的語(yǔ)言、算法語(yǔ)言)第四代語(yǔ)言(面向問(wèn)題的語(yǔ)言)計(jì)算機(jī)語(yǔ)言的應(yīng)用:高級(jí)語(yǔ)言源程序機(jī)器語(yǔ)言目標(biāo)程序程序執(zhí)行結(jié)果編譯程序運(yùn)行程序2024/5/27山東大學(xué)管理學(xué)院戚桂杰41.3C語(yǔ)言的發(fā)展及其特點(diǎn)匯編語(yǔ)言的優(yōu)缺點(diǎn)、高級(jí)語(yǔ)言的優(yōu)缺點(diǎn)C語(yǔ)言集匯編語(yǔ)言、高級(jí)語(yǔ)言的優(yōu)點(diǎn)于一身,既可用來(lái)編寫系統(tǒng)軟件,又可用來(lái)寫應(yīng)用軟件C語(yǔ)言的產(chǎn)生與發(fā)展ALGOL60CPL(CombinedProgrammingLanguage)BCPL(BasicCPL)BCC語(yǔ)言與UNIX操作系統(tǒng)相互促進(jìn)C語(yǔ)言的標(biāo)準(zhǔn)化:標(biāo)準(zhǔn)C、ANSIC、……C99C語(yǔ)言編譯系統(tǒng):MicrosoftC、TurboC、BORLANDC等2024/5/27山東大學(xué)管理學(xué)院戚桂杰5C語(yǔ)言的特點(diǎn)(1)語(yǔ)言簡(jiǎn)潔、緊湊,使用方便、靈活(例下表)

37個(gè)關(guān)鍵字、9種控制語(yǔ)句、格式自由、小寫字母

C語(yǔ)言PASCAL語(yǔ)言含義{}BEGIN……END復(fù)合語(yǔ)句if(e)S;IF(e)THENS條件語(yǔ)句inti;VARi:INTEGER;定義i為整型變量inta[10];VARa:ARRAY[1..10]OFINTEGER

定義a為整型一維數(shù)組intf();FUNTIONf():INTEGER定義f為返回整型值的函數(shù)int*p;VARp:^INTEGER定義p為指向整型單元的指針變量i+=2;i:=i+2賦值語(yǔ)句,使i+2ii++或++ii:=i+1i自增值1,i+1i

2024/5/27山東大學(xué)管理學(xué)院戚桂杰6C語(yǔ)言的特點(diǎn)(2)運(yùn)算符豐富(3)數(shù)據(jù)類型豐富(4)具有結(jié)構(gòu)化的控制語(yǔ)句。以函數(shù)為程序的模塊單位,便于實(shí)現(xiàn)程序的模塊化(5)語(yǔ)法限制不太嚴(yán)格、程序設(shè)計(jì)自由度大(6)允許直接訪問(wèn)物理地址,能進(jìn)行位操作,可直接對(duì)硬件操作。C語(yǔ)言被稱為“中級(jí)語(yǔ)言”。(7)生成目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高。(8)可移植性好與其他語(yǔ)言(Basic、FORTRAN、COBOL、PASCAL)的比較2024/5/27山東大學(xué)管理學(xué)院戚桂杰71.4最簡(jiǎn)單的C語(yǔ)言程序例1.1要求在屏幕上輸出一行信息。解題思路:……#include<stdio.h>//這是編譯預(yù)處理指令intmain()//定義主函數(shù){

printf("ThisisaCprogram.\n");return0;}例1.2求兩個(gè)整數(shù)之和。#include<stdio.h>intmain()//求兩數(shù)之和{inta,b,sum;//這是定義變量

a=123;b=456;//以下4行為C語(yǔ)句

sum=a+b;

printf("sumis%d\n",sum);return0;}absum1234565792024/5/27山東大學(xué)管理學(xué)院戚桂杰81.4最簡(jiǎn)單的C語(yǔ)言程序例1.3求兩個(gè)整數(shù)中的較大者。#include<stdio.h>intmain()//主函數(shù){int

max(intx,inty);//對(duì)被調(diào)用函數(shù)max的聲明

inta,b,c;//聲明部分,定義變量

scanf("%d,%d",&a,&b);//輸入變量a和b的值

c=max(a,b);//調(diào)用max函數(shù),將得到的值賦給c

printf("max=%d\n",c);//輸出c的值

return0;}int

max(intx,inty)//定義max函數(shù),函數(shù)值為整型,形式參數(shù)x,y為整型{intz;//max函數(shù)中的聲明部分,定義其中用到的變量z為整型

if(x>y)z=x;elsez=y;return(z);//將z的值返回,通過(guò)max帶回調(diào)用處}2024/5/27山東大學(xué)管理學(xué)院戚桂杰9#include<stdio.h>intmain(){int

max(intx,inty);

inta,b,c;

scanf("%d,%d",&a,&b);c=max(a,b);

printf("max=%d\n",c);return0;}int

max(intx,inty){intz;if(x>y)z=x;elsez=y;return(z);}abc78xyz78881.4最簡(jiǎn)單的C語(yǔ)言程序2024/5/27山東大學(xué)管理學(xué)院戚桂杰101.3簡(jiǎn)單的C程序介紹C語(yǔ)言源程序的結(jié)構(gòu):(1)一個(gè)程序由一個(gè)或多個(gè)源程序文件組成。(2)C程序是由函數(shù)構(gòu)成的。包含一個(gè)main函數(shù)和若干個(gè)其他函數(shù)。(3)函數(shù)的組成:函數(shù)的首部、函數(shù)體。

intmax(intx,inty){intz;if(x>y)z=x;elsez=y;return(z);}合法是空函數(shù):voiddump(){}函數(shù)首部函數(shù)體函數(shù)類型函數(shù)名函數(shù)參數(shù)類型函數(shù)參數(shù)名聲明部分執(zhí)行部分2024/5/27山東大學(xué)管理學(xué)院戚桂杰111.3簡(jiǎn)單的C程序介紹(4)一個(gè)C程序總是從main函數(shù)開始執(zhí)行的。#include<stdio.h>int

max(intx,inty){intz;if(x>y)z=x;elsez=y;return(z);}int

main(){inta,b,c;

scanf("%d,%d",&a,&b);c=max(a,b);

printf("max=%d\n",c);return0;

}(5)C程序書寫格式自由。(6)每個(gè)語(yǔ)句和數(shù)據(jù)定義的最后必須有一個(gè)分號(hào)。(7)C語(yǔ)言本身沒(méi)有輸入輸出語(yǔ)句。輸入輸出操作是由庫(kù)函數(shù)scanf和printf等函數(shù)來(lái)完成的。(8)可以用//…………對(duì)程序的任何部分作注釋。2024/5/27山東大學(xué)管理學(xué)院戚桂杰121.5C程序的上機(jī)步驟開始編輯編譯連接有錯(cuò)?執(zhí)行結(jié)果正確?編寫C程序并上機(jī)運(yùn)行的步驟源程序f.c目標(biāo)程序f.obj庫(kù)函數(shù)和其他目標(biāo)程序可執(zhí)行目標(biāo)程序f.exe結(jié)束有無(wú)無(wú)不正確正確2024/5/27山東大學(xué)管理學(xué)院戚桂杰131.6程序設(shè)計(jì)的任務(wù)問(wèn)題分析設(shè)計(jì)算法編寫程序?qū)υ闯绦蜻M(jìn)行編輯、編譯和連接運(yùn)行程序,分析結(jié)果(調(diào)試、測(cè)試)編寫程序文檔2024/5/27山東大學(xué)管理學(xué)院戚桂杰14第2章算法——程序的靈魂程序=數(shù)據(jù)結(jié)構(gòu)+算法+程序設(shè)計(jì)方法+語(yǔ)言工具和環(huán)境

數(shù)據(jù)結(jié)構(gòu):對(duì)數(shù)據(jù)的描述,即在程序中指定數(shù)據(jù)的類型和數(shù)據(jù)的組織形式。算法:對(duì)操作的描述,即操作步驟。2.1什么是算法為解決一個(gè)問(wèn)題而采取的方法和步驟。計(jì)算機(jī)算法分為數(shù)值運(yùn)算算法、非數(shù)值運(yùn)算算法2024/5/27山東大學(xué)管理學(xué)院戚桂杰152.2簡(jiǎn)單算法舉例例2.1求12345=5!Step1:1pStep2:2iStep3:pipStep4:i+1iStep5:若i<=5,返回Step3;否則,結(jié)束。求1357911Step1:1pStep2:3iStep3:pipStep4:i+2iStep5:若i<=11,返回Step3;否則,結(jié)束。關(guān)鍵:抽象、提煉出解決問(wèn)題的一般步驟1.記錄每一步的結(jié)果及最終結(jié)果(p)每一步處理的數(shù)據(jù)(i)2.初始狀態(tài)及動(dòng)態(tài)過(guò)程算法具有一般性、通用性和靈活性便于執(zhí)行循環(huán)等操作2024/5/27山東大學(xué)管理學(xué)院戚桂杰162.2簡(jiǎn)單算法舉例例2.2有50個(gè)學(xué)生,要求將他們之中成績(jī)?cè)?0分以上者的學(xué)號(hào)和成績(jī)打印出來(lái)。第i個(gè)學(xué)生的學(xué)號(hào)為ni,成績(jī)?yōu)間i。Step1:1iStep2:若gi>=80,則打印ni和gi;否則不打印。Step3:i+1iStep4:若i<=50,返回Step2;否則,結(jié)束。

2024/5/27山東大學(xué)管理學(xué)院戚桂杰172.2簡(jiǎn)單算法舉例例2.3判定2000—2500年中的每一年是否閏年,將結(jié)果輸出閏年的條件:

能被4整除但不能被100整除的年份是閏年;能被100整除又能被400整除的年份是閏年。設(shè)year為被檢測(cè)的年份,算法如下:S1:2000yS2:若year不能被4整除,則輸出year“不是閏年”,然后轉(zhuǎn)到S6S3:若year能被4整除,不能被100整除,則輸出year“是閏年”,然后轉(zhuǎn)到S6S4:若year能被100整除,又能被400整除,則輸出year“是閏年”,然后轉(zhuǎn)到S6S5:輸出year“不是閏年”S6:year+1yearS7:若year<=2500,返回S2繼續(xù)執(zhí)行;否則,結(jié)束。2024/5/27山東大學(xué)管理學(xué)院戚桂杰182.2簡(jiǎn)單算法舉例例2.4求算法如下:S1:sign=1S2:sum=1S3:deno=2S4:sign=(1)×signS5:term=sign×(1/deno)S6:sum=sum+termS7:deno=deno+1S8:若deno<=100返回S4;否則算法結(jié)束?!?024/5/27山東大學(xué)管理學(xué)院戚桂杰192.2簡(jiǎn)單算法舉例例2.4對(duì)于一個(gè)大于或等于3的正整數(shù),判斷是否為素?cái)?shù)算法如下:S1:輸入n的值S2:i=2(i作為除數(shù))S3:n被i除,得余數(shù)rS4:如果r=0,表示n能被i整除,打印n“不是素?cái)?shù)”,算法結(jié)束;否則執(zhí)行S5S5:i+1iS6:若i<=n1返回S3;否則打印n“是素?cái)?shù)”,然后結(jié)束。S6步驟可改為:S6:若i<=返回S3;否則打印n“是素?cái)?shù)”,然后結(jié)束。講義的小錯(cuò)誤2024/5/27山東大學(xué)管理學(xué)院戚桂杰202.3算法的特性1.有窮性(要做合理的范圍內(nèi))2.確定性3.有零個(gè)或多個(gè)輸入4.有一個(gè)或多個(gè)輸出5.有效性2024/5/27山東大學(xué)管理學(xué)院戚桂杰212.4怎樣表示一個(gè)算法自然語(yǔ)言傳統(tǒng)流程圖結(jié)構(gòu)化流程圖偽代碼2024/5/27山東大學(xué)管理學(xué)院戚桂杰222.4.2用流程圖表示算法常用的流程圖符號(hào)起止框輸入輸出框判斷框處理框流程線連接點(diǎn)注釋框X>=0?打印x打印–xYN

2024/5/27山東大學(xué)管理學(xué)院戚桂杰232.4.2用流程圖表示算法例2.6將例2.1求5!的算法用流程圖表示如下。開始1t2ititi+1ii>5?打印t結(jié)束NY2024/5/27山東大學(xué)管理學(xué)院戚桂杰242.4.2用流程圖表示算法例2.7將例2.2的算法用流程圖表示如下。開始1ii+1igi

80?打印ni,gi結(jié)束Ni>50?YNY2024/5/27山東大學(xué)管理學(xué)院戚桂杰252.4.2用流程圖表示算法例2.8將例2.3的算法用流程圖表示如下。開始2000yy+1yy不能被4整除打印y“是閏年”結(jié)束Y>2500?y不能被100整除y不能被400整除打印y“不是閏年”打印y“是閏年”打印y“不是閏年”YYNNYNYN2024/5/27山東大學(xué)管理學(xué)院戚桂杰262.4.2用流程圖表示算法例2.10將例2.5的算法用流程圖表示如下。i>

?開始i+1ir=0?打印n“是素?cái)?shù)”結(jié)束2in/i

的余數(shù)

r打印n“不是素?cái)?shù)”YNNY輸入n2024/5/27山東大學(xué)管理學(xué)院戚桂杰272.4.3三種基本結(jié)構(gòu)和改進(jìn)的流程圖1.傳統(tǒng)流程圖的弊端

BS型算法:aBowlofSpaghetti.例圖2.13。2.三種基本結(jié)構(gòu)(1966年,Bohra&Jacopini)(1)順序結(jié)構(gòu)(2)選擇結(jié)構(gòu)(3)循環(huán)結(jié)構(gòu)

ABabABbp成立不成立Abp成立不成立aaAbp成立不成立aAbp不成立成立a當(dāng)型While型直到型Until型2024/5/27山東大學(xué)管理學(xué)院戚桂杰282.4.3三種基本結(jié)構(gòu)和改進(jìn)的流程圖(3)循環(huán)結(jié)構(gòu)

Abp成立不成立a當(dāng)型While型Abp不成立成立a直到型Until型0xx<5?x+1x打印x值0xx>=5?x+1

x打印x值NYNY2024/5/27山東大學(xué)管理學(xué)院戚桂杰292.4.3三種基本結(jié)構(gòu)和改進(jìn)的流程圖三種基本結(jié)構(gòu)的共同特點(diǎn):(1)只有一個(gè)入口(2)只有一個(gè)出口(3)結(jié)構(gòu)內(nèi)的每一部分都有機(jī)會(huì)被執(zhí)行(4)結(jié)構(gòu)內(nèi)不存在“死循環(huán)”ABabABbp成立不成立Abp成立不成立aaAB死循環(huán)三種基本結(jié)構(gòu)可解決任何復(fù)雜的問(wèn)題2024/5/27山東大學(xué)管理學(xué)院戚桂杰302.4.4用N-S流程圖表示算法N-S(I.Nassi&B.Shneiderman)流程圖的基本符號(hào)其中A或B框可以是簡(jiǎn)單操作,也可以是三種結(jié)構(gòu)之一ABA當(dāng)p1成立A直到p1成立ABp成立不成立順序結(jié)構(gòu)選擇結(jié)構(gòu)當(dāng)型循環(huán)結(jié)構(gòu)直到型循環(huán)結(jié)構(gòu)p(1+r)p當(dāng)n<=10r=0.08P>=100成立不成立r=0.06AB2024/5/27山東大學(xué)管理學(xué)院戚桂杰312.4.4用N-S流程圖表示算法例2.111t2ititi+1i直到i>5打印t例2.121i打印ni,gii+1i直到i>50gi

80是否2024/5/27山東大學(xué)管理學(xué)院戚桂杰322.4.4用N-S流程圖表示算法2000y

y/4的余數(shù)為0y/100的余數(shù)不為0

是否打印y“是閏年”y/400的余數(shù)為0打印y“是閏年”打印y“不是閏年”打印y“非閏年”y+1y直到y(tǒng)>2500是否是否例2.132024/5/27山東大學(xué)管理學(xué)院戚桂杰332.4.4用N-S流程圖表示算法例2.15開始i+1ir=0?打印n“是素?cái)?shù)”結(jié)束2in/i

的余數(shù)

ri>

?打印n“不是素?cái)?shù)”YNNY輸入n開始i+1ir=0?

輸出n“是素?cái)?shù)”結(jié)束0w

2in/i

的余數(shù)

ri

和w=0YNYN輸入n1ww=0

輸出n“不是素?cái)?shù)”YN2024/5/27山東大學(xué)管理學(xué)院戚桂杰342.4.4用N-S流程圖表示算法例2.15開始i+1ir=0?

輸出n“是素?cái)?shù)”結(jié)束0w

2in/i

的余數(shù)

ri

和w=0YNYN輸入n1ww=0

輸出n“不是素?cái)?shù)”YN輸出n“是素?cái)?shù)”1w輸入n0ww=02in/i

的余數(shù)

rr=0是否i+1i直到i>或w0輸出n“不是素?cái)?shù)”是否2024/5/27山東大學(xué)管理學(xué)院戚桂杰352.4.5用偽代碼表示算法2.4.6用計(jì)算機(jī)語(yǔ)言表示算法#include<stdio.h>intmain(){inti,t;t=1;i=2;

while(i<=5){t=t*i;i=i+1;}

printf("%d",t);return0;}#include<stdio.h>intmain(){intsign=1;doubledeno=2.0,sum=1.0,term;

while(deno<=100){sign=-sign;term=sign/deno;sum=sum+term;

deno=deno+1;}

printf("%f",sum);return0;}2024/5/27山東大學(xué)管理學(xué)院戚桂杰362.5結(jié)構(gòu)化程序設(shè)計(jì)方法(1)自頂向下;(2)逐步細(xì)化(3)模塊化設(shè)計(jì);(4)結(jié)構(gòu)化編碼工作報(bào)告當(dāng)前問(wèn)題前一階段工作對(duì)策工廠概況………………………………………………………………頂層設(shè)計(jì)第二層設(shè)計(jì)第三層設(shè)計(jì)2024/5/27山東大學(xué)管理學(xué)院戚桂杰37第3章最簡(jiǎn)單的C程序設(shè)計(jì)

——順序程序設(shè)計(jì)3.1順序程序設(shè)計(jì)舉例3.2數(shù)據(jù)的表現(xiàn)形式及其運(yùn)算3.2.1常量和變量1.常量在程序運(yùn)行過(guò)程中,其值不能被改變的量。(1)整型常量(2)實(shí)型常量(3)字符常量(4)字符串常量(5)符號(hào)常量2024/5/27山東大學(xué)管理學(xué)院戚桂杰381.常量(1)整型常量十進(jìn)制整數(shù)。八進(jìn)制整數(shù)。以0開頭。如0123、–011。十六進(jìn)制整數(shù)。以0x開頭。如0x123、–0x12。(2)實(shí)型常量十進(jìn)制小數(shù)形式指數(shù)形式形式:12.34e3、-1.23E-72024/5/27山東大學(xué)管理學(xué)院戚桂杰391.常量(3)字符常量普通字符,用單撇號(hào)括起來(lái)的字符。如'a','D','1','?','$'。此為源程序級(jí)的表示,例如c='a';若在計(jì)算機(jī)中表示,則為其ASCII碼的二進(jìn)制。注意ASCII表的規(guī)律,空字符、空格字符轉(zhuǎn)義字符:以字符\開頭的字符序列。例如'\n'2024/5/27山東大學(xué)管理學(xué)院戚桂杰40轉(zhuǎn)義字符字符形式\n\t\b\r\f\\\'\"\ooo\xhh含義換行水平制表退格回車換頁(yè)字符\字符'字符"1~3位8進(jìn)制所代表的字符1~2位16進(jìn)制所代表的字符ASCII代碼109813129239342024/5/27山東大學(xué)管理學(xué)院戚桂杰41利用\ddd和\xhh可表示任何字符(只要已知其ASCII碼)例如'\101'等同于'A','\012'等同于'\n‘;'\0'、'\000'為空字符。例轉(zhuǎn)義字符的應(yīng)用。#include<stdio.h>intmain(){printf("ab

c\tde\rf\tg\n");

printf("h\ti\b\bjk");return0;}輸出:

abcdefabcgdehihj

ikhj

kfgde2024/5/27山東大學(xué)管理學(xué)院戚桂杰42(4)字符串常量字符串常量是一對(duì)雙引號(hào)括起來(lái)的字符序列。例如:"Howdoyoudo","abc","a""a"與'a'的不同。字符串常量在內(nèi)存中的存放。例如"CHINA"CHINA\02024/5/27山東大學(xué)管理學(xué)院戚桂杰43(5)符號(hào)常量例符號(hào)常量的使用

#definePRICE30

intmain(){intnum,total;num=10;total=num*PRICE;

printf("Total=%d",total);return0;}符號(hào)常量的作用:(1)含義清楚(2)便于修改

intmain(){intnum,total;num=10;total=num*30;

printf("Total=%d",total);return0;}2024/5/27山東大學(xué)管理學(xué)院戚桂杰442.變量其值可以改變的量稱為變量。源程序中變量有一個(gè)名字。程序運(yùn)行時(shí)對(duì)應(yīng)內(nèi)存相應(yīng)的存儲(chǔ)單元(地址)。C語(yǔ)言中變量:“先定義,后使用”。便于保證(1)變量使用的正確性;(2)為其分配合適的單元;(3)變量進(jìn)行運(yùn)算的正確性。a123變量名變量值對(duì)應(yīng)單元地址存儲(chǔ)單元2024/5/27山東大學(xué)管理學(xué)院戚桂杰453.常變量constinta=3;在該變量存在期間其值不能改變。與變量的異同?與常量的異同?與符號(hào)常量的異同?2024/5/27山東大學(xué)管理學(xué)院戚桂杰464.標(biāo)識(shí)符標(biāo)識(shí)符(identifier):用來(lái)標(biāo)識(shí)變量名、符號(hào)常量名、函數(shù)名、數(shù)組名、類型名、文件名的有效字符序列。有效標(biāo)識(shí)符:只能由字母、數(shù)字、下劃線組成,且第一個(gè)字符必須為字母或下劃線。注1:C語(yǔ)言中大、小寫字母是有區(qū)別的。注2:標(biāo)識(shí)符的長(zhǎng)度(各個(gè)C編譯系統(tǒng)自己的規(guī)定)。注3:形象的標(biāo)識(shí)符。2024/5/27山東大學(xué)管理學(xué)院戚桂杰473.2.2數(shù)據(jù)類型所謂類型,就是對(duì)數(shù)據(jù)分配存儲(chǔ)單元的安排,包括存儲(chǔ)單元的長(zhǎng)度以及數(shù)據(jù)的存儲(chǔ)形式。數(shù)據(jù)類型基本類型整型(int)字符型(char)實(shí)型(浮點(diǎn)型)枚舉類型單精度型(float)雙精度型(double)指針類型空類型構(gòu)造類型數(shù)組類型結(jié)構(gòu)體類型共用體類型2024/5/27山東大學(xué)管理學(xué)院戚桂杰483.2.3整型數(shù)據(jù)1.整型數(shù)據(jù)的分類(1)基本整型

inti;//int型數(shù)據(jù)單元為2個(gè)字節(jié)或4個(gè)字節(jié)

i=10;數(shù)值是以補(bǔ)碼表示的。例如

–10的補(bǔ)碼。0000000000001010i20002001i的地址為2000000000000000101010的原碼1111111111110101按位取反1111111111110110再加12024/5/27山東大學(xué)管理學(xué)院戚桂杰491.整型數(shù)據(jù)的分類基本整型:int短整型:shortint

或short長(zhǎng)整型:longint

或long雙長(zhǎng)整型:longlong

int

sizeof(short)≤sizeof(int)≤

sizeof(long)≤

sizeof(longlong)2.整型變量的符號(hào)屬性表3.2ANSI標(biāo)準(zhǔn)定義的整數(shù)類型[signed]

intunsignedint[signed]short[int]unsignedshort[int][signed]long[int]unsignedlong[int]比特?cái)?shù)161632321616類型最小取值范圍–32768~32767即–215~(215–1)0~4294967275即0~(232–1)–2147483648~2147483647即–231~(231–1)–32768~32767即–215~(215–1)0~65535即0~(216–1)0~65535即0~(216–1)2024/5/27山東大學(xué)管理學(xué)院戚桂杰503.2.3整型數(shù)據(jù)整型變量的溢出#include<stdio.h>intmain(){int

a,b;a=32767;b=a+1;

printf("%d,%d",a,b);return0;}運(yùn)行結(jié)果為:32767,-32768說(shuō)明:(2)用%u格式輸出無(wú)符號(hào)數(shù)據(jù)。01111111111111111111111111111111ab01111111111111111000000000000000ab2024/5/27山東大學(xué)管理學(xué)院戚桂杰513.2.4字符型數(shù)據(jù)1.字符與字符代碼字符按ASCII碼形式存儲(chǔ)字符'1'與整數(shù)1的不同:1+1=?'1'+'1'=?2024/5/27山東大學(xué)管理學(xué)院戚桂杰523.2.4字符型數(shù)據(jù)2.字符變量charc1,c2;c1='a';c2='b';字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式及其使用方法字符在內(nèi)存中以二進(jìn)制形式存放其對(duì)應(yīng)的ASCII碼!例向字符變量賦以整數(shù)。#include<stdio.h>int

main(){charc1,c2;c1=97;c2=98;//等價(jià)于c1='a';c2='b';

printf("%c%c\n",c1,c2);

printf("%d%d\n",c1,c2);return0;}97c198c201100001c101100010c22024/5/27山東大學(xué)管理學(xué)院戚桂杰53例大小寫字母的轉(zhuǎn)換int

main(){charc1,c2;c1='a';c2='b';c1=c1–32;

c2=c2–32;

printf("%c%c\n",c1,c2);return0;}字符數(shù)據(jù)與整型數(shù)據(jù)可以互相賦值。charc=130;printf("%c,%d",c,c);2024/5/27山東大學(xué)管理學(xué)院戚桂杰543.2.5浮點(diǎn)型數(shù)據(jù)實(shí)型數(shù)據(jù)在內(nèi)存中的存放形式——是以指數(shù)形式存放在存儲(chǔ)單元中的。指數(shù)形式:123e3、123E3規(guī)范化的指數(shù)形式:1.23e5、1.23000e+05例:將5.25在內(nèi)存存放。5.25=(101.01)2=1.0101

22.實(shí)型變量的分類+.0101+00000010系數(shù)部分?jǐn)?shù)符系數(shù)部分小數(shù)指數(shù)類型floatdoublelongdouble比特?cái)?shù)3264128有效數(shù)字61519數(shù)值范圍(±)1.2×

10

38~3.4×

1038(±)

2.3×

10

308~1.7×

10308(±)

3.4×

10

4932~

1.1×

1049322024/5/27山東大學(xué)管理學(xué)院戚桂杰553.2.6怎樣確定常量的類型(1)整型常量在某類型的取值范圍內(nèi)即可?;颍嚎稍谡麛?shù)的末尾加L或l。(2)浮點(diǎn)型常量實(shí)型常量都是雙精度浮點(diǎn)型常量。或:可在實(shí)數(shù)的末尾加F或f,L或l。例:floatf=3.14159;floatf=3.14159f;longdoublea=1.23L;2024/5/27山東大學(xué)管理學(xué)院戚桂杰563.2.7運(yùn)算符和表達(dá)式1.基本的算術(shù)運(yùn)算符+、–、*、/、%注意:(1)兩個(gè)整數(shù)相除的結(jié)果為整數(shù)。若至少有一個(gè)運(yùn)算數(shù)為實(shí)數(shù),則算術(shù)運(yùn)算的結(jié)果為雙精度實(shí)數(shù)。例:1/2為0,1.0/2等于0.5(2)+、–還可為單目運(yùn)算符。3.算術(shù)表達(dá)式和運(yùn)算符的優(yōu)先級(jí)與結(jié)合性2024/5/27山東大學(xué)管理學(xué)院戚桂杰572.自增自減運(yùn)算符++i,––ii++,i––j=++i;j=i++;注1.自增自減運(yùn)算符,只能作用于變量,而不能用于常量或表達(dá)式。5++、(a+b)++不合法。注2.自增自減運(yùn)算符的結(jié)合方向“自右至左”例如(1)–i++(參見TurboC程序)

(2)i=3;j=(++i)+(++i)+(++i);2024/5/27山東大學(xué)管理學(xué)院戚桂杰584.各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算10+'a'+1.5-8765.1234*'b'(系統(tǒng)自動(dòng)進(jìn)行轉(zhuǎn)換)5.強(qiáng)制類型轉(zhuǎn)換運(yùn)算符:(類型)(表達(dá)式)(int)3.14、(float)1doublefloatlongunsignedintchar,short高低2024/5/27山東大學(xué)管理學(xué)院戚桂杰596.C運(yùn)算符(1)算術(shù)運(yùn)算符(+—*/%++––)

(2)關(guān)系運(yùn)算符(><==>=<=!=)

(3)邏輯運(yùn)算符(!&&||)

(4)位運(yùn)算符(<<>>~|^&)

(5)賦值運(yùn)算符(=及其擴(kuò)展賦值運(yùn)算符)

(6)條件運(yùn)算符(?:)

(7)逗號(hào)運(yùn)算符(,)

(8)指針運(yùn)算符(*和&)

(9)求字節(jié)數(shù)運(yùn)算符(sizeof)

(10)強(qiáng)制類型轉(zhuǎn)換運(yùn)算符((類型))

(11)成員運(yùn)算符(.—>)

(12)下標(biāo)運(yùn)算符([])

(13)其他(如函數(shù)調(diào)用運(yùn)算符())2024/5/27山東大學(xué)管理學(xué)院戚桂杰603.3C語(yǔ)句3.3.1C語(yǔ)句的作用和分類源程序文件1C程序局部變量聲明源程序文件2源程序文件n預(yù)處理命令全局變量聲明函數(shù)1函數(shù)首部函數(shù)n函數(shù)體執(zhí)行語(yǔ)句…………2024/5/27山東大學(xué)管理學(xué)院戚桂杰613.3.1C語(yǔ)句的作用和分類(1)控制語(yǔ)句

if()…else…(條件語(yǔ)句)

for()…(循環(huán)語(yǔ)句)

while()…(循環(huán)語(yǔ)句)

do…while()(循環(huán)語(yǔ)句)

continue(結(jié)束本次循環(huán)語(yǔ)句)

break(終止執(zhí)行switch或循環(huán)語(yǔ)句)

switch(多分支選擇語(yǔ)句)

return(從函數(shù)返回語(yǔ)句)

goto

(轉(zhuǎn)向語(yǔ)句)2024/5/27山東大學(xué)管理學(xué)院戚桂杰623.3.1C語(yǔ)句的作用和分類(2)函數(shù)調(diào)用語(yǔ)句

printf("ThisisaCstatement.");(3)表達(dá)式語(yǔ)句

a=3;

x+y;(4)空語(yǔ)句;(5)復(fù)合語(yǔ)句

{……}2024/5/27山東大學(xué)管理學(xué)院戚桂杰633.3.2最基本的語(yǔ)句——賦值語(yǔ)句例3.4給出三角形的三邊長(zhǎng),求三角形面積。解題思路、編寫程序、程序分析(略)。注意數(shù)學(xué)函數(shù)及'\t'的應(yīng)用。賦值運(yùn)算符:=例如:a=3;k=i*j;其作用?2.復(fù)合的賦值運(yùn)算符:+=、*=、%=、……a+=3等價(jià)于a=a+3x*=y+8等價(jià)于x=x*(y+8)x%=3等價(jià)于x=x%3一般地:v=vopexp(此處v為變量,exp為表達(dá)式,op為運(yùn)算符)等價(jià)于vop=exp目的:簡(jiǎn)化程序提高效率2024/5/27山東大學(xué)管理學(xué)院戚桂杰643.3.2最基本的語(yǔ)句——賦值語(yǔ)句3.賦值表達(dá)式:

整個(gè)作為一個(gè)表達(dá)式有此概念后,就可以理解并實(shí)現(xiàn):a=b=c=5a=5+(c=6)a=(b=4)+(c=6)a=(b=10)/c=2)a+=a–=a*a(若a的初值為12)printf("%d",a=b)變量=表達(dá)式2024/5/27山東大學(xué)管理學(xué)院戚桂杰654.賦值過(guò)程中的類型轉(zhuǎn)換賦值運(yùn)算符兩側(cè)的數(shù)據(jù)類型不一致時(shí),賦值運(yùn)算符右端的表達(dá)式計(jì)算結(jié)果要轉(zhuǎn)換為賦值運(yùn)算符左端變量的類型。注意:表達(dá)式的值是否超過(guò)變量所屬類型的取值范圍。

實(shí)型數(shù)據(jù)整型變量取整數(shù)部分,但注意范圍(1)實(shí)型變量整型數(shù)據(jù)以浮點(diǎn)形式存儲(chǔ)(2)double數(shù)據(jù)float變量取7位有效數(shù)字,但注意范圍(3)double變量float數(shù)據(jù)有效位數(shù)擴(kuò)展char數(shù)據(jù)整型變量字符數(shù)據(jù)送到整型變量低8位但注意符號(hào)擴(kuò)展(4)char變量整型數(shù)據(jù)取低8位(5)2024/5/27山東大學(xué)管理學(xué)院戚桂杰666.變量賦初值inta=3;floatf=3.56;charc='a';int

a,b,c=5;相當(dāng)于int

a,b,c;c=5;2024/5/27山東大學(xué)管理學(xué)院戚桂杰673.4數(shù)據(jù)的輸入輸出標(biāo)準(zhǔn)輸入輸出函數(shù):putchar()、getchar()、printf()、scanf()、puts()、gets()#include<stdio.h>2024/5/27山東大學(xué)管理學(xué)院戚桂杰683.4.1字符數(shù)據(jù)的輸入輸出1.putchar函數(shù)(字符輸出函數(shù))putchar函數(shù)的功能是向終端輸出一個(gè)字符。一般形式:putchar(表達(dá)式)先計(jì)算表達(dá)式之值,然后在終端輸出其ASCII碼為該值的字符。例如:chara='B';

putchar(a);

putchar('O');

putchar('Y');

putchar('\n');

putchar('A');putchar('A'+1);此時(shí)在屏幕上輸出:BOYAB2024/5/27山東大學(xué)管理學(xué)院戚桂杰693.4.1字符數(shù)據(jù)的輸入輸出2.getchar函數(shù)(字符輸入函數(shù))getchar函數(shù)的功能是從終端(實(shí)際上是從輸入緩沖區(qū))讀入一個(gè)字符。一般形式:getchar()例3.9從鍵盤輸入BOY3個(gè)字符,然后把它們輸出到屏幕。#include<stdio.h>intmain(){chara,b,c;a=getchar();b=getchar();c=getchar();

putchar(a);putchar(b);putchar(c);

putchar('\n');return0;}注意程序運(yùn)行過(guò)程中的輸入。2024/5/27山東大學(xué)管理學(xué)院戚桂杰703.4.1字符數(shù)據(jù)的輸入輸出2.getchar函數(shù)(字符輸入函數(shù))getchar函數(shù)的功能是從終端(實(shí)際上是從輸入緩沖區(qū))讀入一個(gè)字符。getchar()將輸入緩沖區(qū)下一個(gè)可讀字符的字符值作為函數(shù)值返回。注1.getchar()從輸入緩沖區(qū)讀入下一個(gè)可讀字符后(例如右圖中b),再下一個(gè)字符成為下一個(gè)可讀字符(右圖中c)注2.若當(dāng)前輸入緩沖區(qū)可讀字符為空(例如程序開始時(shí),或輸入緩沖區(qū)字符被讀完后——例如上圖讀完換行符

后),getchar

將等待用戶從鍵盤向緩沖區(qū)輸入數(shù)據(jù),直到輸入一行字符(鍵入

后),才開始讀輸入緩沖區(qū)(此時(shí)剛輸入的第一個(gè)字符為下一個(gè)可讀字符)。剛輸入的一行字符同時(shí)顯示在屏幕上。abc123

下一個(gè)可讀字符輸入緩沖區(qū)2024/5/27山東大學(xué)管理學(xué)院戚桂杰713.4.1字符數(shù)據(jù)的輸入輸出2.getchar函數(shù)(字符輸入函數(shù))補(bǔ)充1:getch()函數(shù)——直接讀鍵盤(而不是讀輸入緩沖區(qū),也就不必理會(huì)輸入緩沖區(qū)是否為空),此時(shí)該函數(shù)等待用戶從鍵盤輸入一個(gè)字符,當(dāng)用戶按任一鍵后(不必為

),getch()將該字符作為函數(shù)值返回。注意:為執(zhí)行g(shù)etch()函數(shù)而在鍵盤上鍵入的字符不顯示在屏幕上。該函數(shù)常常用來(lái)響應(yīng)用戶是否敲擊鍵盤。補(bǔ)充2:getche()函數(shù),基本同getch();只是為執(zhí)行g(shù)etche()函數(shù)而在鍵盤上鍵入的字符顯示在屏幕上。2024/5/27山東大學(xué)管理學(xué)院戚桂杰723.4.2格式輸入輸出1.printf函數(shù)(格式輸出函數(shù))printf()的功能是向終端輸出若干個(gè)任意類型(格式)的數(shù)據(jù)。一般形式:printf(參數(shù)1,參數(shù)2,參數(shù)3……參數(shù)n);

轉(zhuǎn)換控制字符串輸出表列例如:printf("%d,%c\n",i,c);其中printf()的第一個(gè)參數(shù)為轉(zhuǎn)換控制字符串,它包括:

格式說(shuō)明,由%和格式字符等組成,如%d,%6.2f等。其作用是將后面對(duì)應(yīng)的參數(shù)表達(dá)式的數(shù)據(jù)轉(zhuǎn)換為指定的格式輸出。普通字符,將原樣輸出。2024/5/27山東大學(xué)管理學(xué)院戚桂杰731.printf函數(shù)(格式輸出函數(shù))格式字符(1)d格式符。將對(duì)應(yīng)參數(shù)的數(shù)據(jù)以十進(jìn)制形式輸出。

%d:以十進(jìn)制形式按實(shí)際長(zhǎng)度輸出。

%md:m為指定的輸出數(shù)據(jù)的最小寬度。若實(shí)際輸出字符個(gè)數(shù)小于m,則在左端補(bǔ)以空格(右端對(duì)齊)。若實(shí)際輸出字符個(gè)數(shù)超過(guò)m,則m不起作用。

%

md:“”意味著左對(duì)齊格式,將在右端補(bǔ)以空格。

%ld、%lld:輸出長(zhǎng)整型(long)、雙長(zhǎng)整型(longlong)數(shù)據(jù)。注意:int型的數(shù)據(jù)應(yīng)利用%d格式輸出,long型數(shù)據(jù)應(yīng)利用%ld格式輸出。否則可能發(fā)生類型轉(zhuǎn)換而出錯(cuò)。該轉(zhuǎn)換規(guī)則不同于賦值表達(dá)式中的類型轉(zhuǎn)換。2024/5/27山東大學(xué)管理學(xué)院戚桂杰741.printf函數(shù)(格式輸出函數(shù))格式字符(補(bǔ)充)o格式符:將對(duì)應(yīng)參數(shù)的數(shù)據(jù)以無(wú)符號(hào)八進(jìn)制形式輸出。x格式符:將對(duì)應(yīng)參數(shù)的數(shù)據(jù)以無(wú)符號(hào)十六進(jìn)制形式輸出。u格式符:將對(duì)應(yīng)參數(shù)的數(shù)據(jù)以無(wú)符號(hào)十進(jìn)制形式輸出。注1:注意是否進(jìn)行了類型轉(zhuǎn)換。(int型數(shù)據(jù)與這些格式之間的轉(zhuǎn)換等同于int與unsigned在賦值時(shí)的轉(zhuǎn)換)注2:%與格式符o、x、u之間可加修飾符l(輸出長(zhǎng)整型)、整數(shù)m(最小寬度)、#(將輸出八進(jìn)制、十六進(jìn)制標(biāo)記:0、0x)例intmain(){unsignedinta=65535;

intb=–2;

printf("a=%d,%7o,%6x,%u\n",a,a,a,a);

printf("b=%d,%#o,%#x,%u\n",b,b,b,b);return0;}輸出結(jié)果為:a=–1,177777,ffff,65535b=–2,0177776,0xfffe,655342024/5/27山東大學(xué)管理學(xué)院戚桂杰751.printf函數(shù)(格式輸出函數(shù))格式字符(2)c格式符。將對(duì)應(yīng)參數(shù)的數(shù)據(jù)(作為字符的ASCII碼)以字符形式輸出。(3)s格式符。用于輸出一個(gè)字符串。

%s,輸出字符串,例如printf("%s","CHINA");當(dāng)然也等同于printf("CHINA");%ms,m為指定的輸出數(shù)據(jù)的最小寬度。若字符串字符個(gè)數(shù)小于m,則在左端補(bǔ)以空格(右端對(duì)齊)。若字符串字符個(gè)數(shù)超過(guò)m,則m不起作用。

%–ms,則在右端補(bǔ)以空格(左端對(duì)齊)。2024/5/27山東大學(xué)管理學(xué)院戚桂杰761.printf函數(shù)(格式輸出函數(shù))格式字符(4)f格式符。用于輸出實(shí)數(shù)(包括單、雙精度),以小數(shù)形式輸出。

%f,不指定字段寬度,由系統(tǒng)自動(dòng)指定,一般是整數(shù)+6位小數(shù)。但注意有效位數(shù)。

%m.nf,指定輸出的數(shù)據(jù)共占m列,其中有n位小數(shù)。

%–m.nf,同上,但左端對(duì)齊。(8)e、E格式符,以指數(shù)形式輸出實(shí)數(shù)。

%e,不指定字段寬度,由系統(tǒng)自動(dòng)指定,TurboC一般的輸出為:*.******e+***

%m.ne、%–m.ne(9)g、G格式符,取f或e格式的最小格式,不輸出無(wú)意義的0。2024/5/27山東大學(xué)管理學(xué)院戚桂杰771.printf函數(shù)(格式輸出函數(shù))總結(jié)1.格式說(shuō)明的一般形式:

%[flags][m][.n][h|l]type其中type為格式符,可為如下之一:d,i、o、x,X、u、c、s、f、e,E、g,Gflags為修飾符,可為:+、–、空格、#+:若輸出帶符號(hào)數(shù)據(jù),則在輸出數(shù)據(jù)前加上符號(hào)+或–。缺省+時(shí)僅當(dāng)輸出負(fù)數(shù)時(shí),才輸出負(fù)號(hào)–。–:右端補(bǔ)以空格,左端對(duì)齊??崭瘢狠敵鰩Х?hào)正數(shù)時(shí),在輸出數(shù)據(jù)前加一空格。若+與空格同時(shí)使用,則空格不起作用。#:在格式符o、x前使用時(shí),則輸出的八進(jìn)制、十六進(jìn)制數(shù)據(jù)有前綴0、0x.2024/5/27山東大學(xué)管理學(xué)院戚桂杰781.printf函數(shù)(格式輸出函數(shù))總結(jié)2.若%后沒(méi)有合適的格式符,則%不起作用,相當(dāng)于普通字符。例如printf("%abc……",……);則輸出%abc……但若要輸出的普通字符有%,且其后有普通字符為格式符,如要輸出……30%for……,則必須

printf("……30%%for……",……);總結(jié)3.轉(zhuǎn)換控制字符串中的格式說(shuō)明必須與后面的參數(shù)相對(duì)應(yīng),否則以格式說(shuō)明為準(zhǔn)進(jìn)行操作。例如:

printf("%d,%d\n",a,b,c);

printf("%d,%d\n",a);

在此,再一次特別強(qiáng)調(diào):轉(zhuǎn)換控制字符串中的格式說(shuō)明必須與后面的參數(shù)的類型相對(duì)應(yīng)2024/5/27山東大學(xué)管理學(xué)院戚桂杰792.scanf函數(shù)(格式輸入函數(shù))(1)scanf()函數(shù)功能:從輸入緩沖區(qū)中讀相應(yīng)格式的數(shù)據(jù)進(jìn)行匹配或送入相應(yīng)地址的內(nèi)存單元中。(2)一般形式:scanf(格式控制,地址表列);例如,scanf("%d%d%d",&a,&b,&c);若輸入123456789

則123送入a,456送入b,789送入c。(3)格式控制字符串中的格式說(shuō)明(以%開始,以格式符結(jié)束),確定要去讀一個(gè)什么樣的合法數(shù)據(jù)項(xiàng)。而格式控制字符串中的普通字符將與輸入數(shù)據(jù)相應(yīng)的字符進(jìn)行匹配。2024/5/27山東大學(xué)管理學(xué)院戚桂杰802.scanf函數(shù)(格式輸入函數(shù))(4)普通字符的匹配,分兩種情況:

空白符(包括空格、'\t'、'\n'):可以匹配輸入流中連續(xù)的空白符,它使scanf函數(shù)去讀(掃描)但不存儲(chǔ)輸入流中相應(yīng)的連續(xù)空白符,直到讀到下一個(gè)非空白符為止。(講義P77第9行說(shuō)法不妥)

非空白符:引起scanf函數(shù)去讀但不存儲(chǔ)輸入流中一個(gè)與其相同的字符;若輸入流中下一個(gè)字符與其不相同(不匹配),則引起scanf函數(shù)異常終止。例如scanf("%d/%d/%d,%d:%d",&m,&d,&y,&hh,&mm);應(yīng)輸入:9/24/2002,20:15

2024/5/27山東大學(xué)管理學(xué)院戚桂杰812.scanf函數(shù)(格式輸入函數(shù))(5)scanf()函數(shù)按某種格式去讀輸入流時(shí),怎樣讀一個(gè)合法的數(shù)據(jù)項(xiàng)?

%c格式:輸入流中下一個(gè)字符就是合法的數(shù)據(jù)項(xiàng)。

除%c外的其他格式:%d,%i、%u、%o、%x,%X、%s、%f,%e,%E,%g,%G等,將從輸入流的下一個(gè)非空白字符開始讀一個(gè)合法的數(shù)據(jù)項(xiàng)(也即scanf為讀這樣格式的數(shù)據(jù),若輸入流中下面可讀的字符為空白符的話,將引起scanf直接掃描過(guò)空白符,直到讀到第一個(gè)非空白符才開始讀合法數(shù)據(jù)項(xiàng)),直到遇到以下情況時(shí)結(jié)束該數(shù)據(jù)項(xiàng)的讀入:遇到空白符按指定的寬度結(jié)束,如scanf("%3d",&a);至多讀3個(gè)數(shù)字符遇非法輸入,例如若輸入流為:123.456abc,當(dāng)scanf()函數(shù)當(dāng)前輸入格式為%d,則讀123;當(dāng)%f,則讀123.456;當(dāng)%s,則讀123.456abc注意,若讀到的第一個(gè)非空白符就是非法輸入,則引起scanf異常結(jié)束。2024/5/27山東大學(xué)管理學(xué)院戚桂杰822.scanf函數(shù)(格式輸入函數(shù))(6)scanf()格式說(shuō)明的一般方式為:

%[*][m][h|l]type

m為指定輸入數(shù)據(jù)所占列數(shù)。例如:

scanf("%3d%3d",&a,&b);輸入:123456

則123送入a,456送入b。

scanf("%3c",&ch);輸入:abc123……

則abc被掃描,并將a送入ch。

%*type則只掃描該格式一個(gè)數(shù)據(jù)項(xiàng),而不送入內(nèi)存單元。這樣的格式不對(duì)應(yīng)后面地址表列中某一參數(shù)。2024/5/27山東大學(xué)管理學(xué)院戚桂杰832.scanf函數(shù)(格式輸入函數(shù))(7)特別注意:

scanf()函數(shù)從第二個(gè)參數(shù)起,都為變量地址。

scanf("%d%d",&a,&b);

格式控制字符串中的普通字符的匹配作用。(8)請(qǐng)分析下例:

inti;charch;

scanf("%d%c",&i,&ch);若輸入:123A則i,ch為何?

printf("Inputanumber:\n");

scanf("%d\n",&i);

printf("OK???");發(fā)現(xiàn)什么問(wèn)題了嗎?注意scanf()是從輸入緩沖區(qū)中讀入數(shù)據(jù)。每個(gè)輸入語(yǔ)句前最好有提示語(yǔ)句。每個(gè)scanf()最好使用獨(dú)立的輸入緩沖區(qū)內(nèi)容:執(zhí)行前輸入緩沖區(qū)為空(所以等待用戶鍵盤輸入),執(zhí)行完后仍清空緩沖區(qū)。2024/5/27山東大學(xué)管理學(xué)院戚桂杰84第4章選擇結(jié)構(gòu)程序設(shè)計(jì)4.1選擇結(jié)構(gòu)和條件判斷C語(yǔ)言有兩種選擇語(yǔ)句:(1)if語(yǔ)句if語(yǔ)句最常用的形式:if(條件判斷表達(dá)式)語(yǔ)句1else語(yǔ)句2例如:if(x>0)y=1;elsey=–1;(2)switch語(yǔ)句例4.12024/5/27山東大學(xué)管理學(xué)院戚桂杰854.2用if語(yǔ)句實(shí)現(xiàn)選擇結(jié)構(gòu)4.2.1用if語(yǔ)句實(shí)現(xiàn)選擇結(jié)構(gòu)舉例例4.3輸入3個(gè)數(shù)a,b,c,要求按由小到大的順序輸出。#include<stdio.h>intmain(){floata,b,c,t;

scanf("%f,%f,%f",&a,&b,&c);

if(a>b){t=a;a=b;b=t;}

if(a>c){t=a;a=c;c=t;}

if(b>c){t=b;b=c;c=t;}printf("%5.2f,%5.2f,%5.2f\n",a,b,c);return0;}2024/5/27山東大學(xué)管理學(xué)院戚桂杰864.2.2if語(yǔ)句的一般形式if語(yǔ)句最常用的形式:if(表達(dá)式)語(yǔ)句1else語(yǔ)句2if語(yǔ)句的三種形式1.if(表達(dá)式)語(yǔ)句2.if(表達(dá)式)語(yǔ)句1

else語(yǔ)句23.if(表達(dá)式1)語(yǔ)句1

elseif(表達(dá)式2)語(yǔ)句2elseif(表達(dá)式3)語(yǔ)句3……elseif(表達(dá)式m)語(yǔ)句melse語(yǔ)句m+1表達(dá)式語(yǔ)句假(0)真(非0)表達(dá)式語(yǔ)句1語(yǔ)句2假真表達(dá)式1語(yǔ)句1表達(dá)式2表達(dá)式3表達(dá)式4語(yǔ)句2語(yǔ)句3語(yǔ)句4語(yǔ)句5假假假假真真真真2024/5/27山東大學(xué)管理學(xué)院戚桂杰874.2.2if語(yǔ)句的一般形式說(shuō)明:(1)if后面的表達(dá)式可為任意的數(shù)值類型。但一般為關(guān)系表達(dá)式或邏輯表達(dá)式。(2)每個(gè)子語(yǔ)句若為表達(dá)式語(yǔ)句等簡(jiǎn)單語(yǔ)句,應(yīng)有一分號(hào);若為復(fù)合語(yǔ)句{……},則不能有分號(hào)。例如:if(x>0)printf("%f",x);elseprintf("%f",–x);if(a+b>c&&b+c>a&&c+a>b){s=0.5*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c));

prints("area=%6.2f\n",area);}elseprintf("itisnotatrilateral");各有一個(gè)分號(hào)不可有分號(hào)2024/5/27山東大學(xué)管理學(xué)院戚桂杰884.3關(guān)系運(yùn)算符和關(guān)系表達(dá)式關(guān)系運(yùn)算——比較運(yùn)算,結(jié)果為“真”或“假”關(guān)系運(yùn)算符及其優(yōu)先順序<、<=、>、>=、==、!=<、<=、>、>=優(yōu)先級(jí)相同,高于==、!=例如:c>a+b、a>b==c、a==b<c、a=b>c算術(shù)運(yùn)算符(高)關(guān)系運(yùn)算符賦值運(yùn)算符(低)2024/5/27山東大學(xué)管理學(xué)院戚桂杰894.3關(guān)系運(yùn)算符和關(guān)系表達(dá)式關(guān)系表達(dá)式——其值為邏輯值:1代表“真”;0代表“假”例如,a=3,b=2,c=1,則a>b值為1a>b==c值為1b+c<a值為0d=a>bd的值為1f=a>b>cf的值為0

2024/5/27山東大學(xué)管理學(xué)院戚桂杰904.4邏輯運(yùn)算符和邏輯表達(dá)式4.4.1邏輯運(yùn)算符及其優(yōu)先次序&&(邏輯與:AND)、||(邏輯或:OR)、!(邏輯非:NOT)、若a=4,b=5,則:!a值為0;a&&b

值為1;a||b值為1;!a||b值為1'c'&&'d'a真真假假a&&b真假假假b真假真假!a假假真真!b假真假真a||b真真真假真——非0假——0真——1假——02024/5/27山東大學(xué)管理學(xué)院戚桂杰914.4邏輯運(yùn)算符和邏輯表達(dá)式邏輯運(yùn)算的真值表a非0非000a&&b1000b非00非00!a0011!b0101a||b11102024/5/27山東大學(xué)管理學(xué)院

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論