C語(yǔ)言講義綜合_第1頁(yè)
C語(yǔ)言講義綜合_第2頁(yè)
C語(yǔ)言講義綜合_第3頁(yè)
C語(yǔ)言講義綜合_第4頁(yè)
C語(yǔ)言講義綜合_第5頁(yè)
已閱讀5頁(yè),還剩55頁(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)介

1、C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)作者:楊 鑒第一講 C程序基本語(yǔ)法1、C程序的基本框架/*這是一個(gè)用于練習(xí)的程序*/本程序用于實(shí)現(xiàn)15+25的和#include"stdio.h" /編譯預(yù)處理命令,另外一種寫(xiě)法:#include<stdio.h>void main() /函數(shù)首部(或函數(shù)頭) /函數(shù)體開(kāi)始 int a,b,sum; /數(shù)據(jù)說(shuō)明部分,用于說(shuō)明程序中要用到的常量,變量,數(shù)組,函數(shù)等等. a=15; /執(zhí)行部分開(kāi)始,執(zhí)行部分用于實(shí)現(xiàn)程序要求的功能 b=25; sum=a+b; printf("sum=%dn",sum);/執(zhí)行部分結(jié)束 /函數(shù)體結(jié)

2、束/每一個(gè)語(yǔ)句的末尾必須以分號(hào)(;)結(jié)束,而且這些符號(hào)必須在英文狀態(tài)下來(lái)打出.注意:注釋不會(huì)參與程序的編譯和執(zhí)行2、函數(shù)體內(nèi)的說(shuō)明部分(1)標(biāo)識(shí)符A、標(biāo)識(shí)符只能由字母(a-z,A-Z)、數(shù)字(0-9)、下劃線(_)所構(gòu)成B、標(biāo)識(shí)符的第一個(gè)字符必須是字母或者下劃線C、在C語(yǔ)言中,標(biāo)識(shí)符中的字母是區(qū)分大小寫(xiě)的。(Sum和sum)D、在定義標(biāo)識(shí)符的時(shí)候,標(biāo)識(shí)符不能與系統(tǒng)關(guān)鍵字同名。char 32 as* mr.david _s $32 -hx date main標(biāo)識(shí)符包含三種:<1>系統(tǒng)關(guān)鍵字(32個(gè))<2>預(yù)定義關(guān)鍵字(include、define、所有系統(tǒng)庫(kù)函數(shù)的函數(shù)名如

3、:sin、cos等)<3>用戶定義標(biāo)識(shí)符(2)常量和變量常量:在程序的運(yùn)行過(guò)程中,值不發(fā)生改變的量。分類: 直接常量(字面常量):258,65534(整型常量),3.14(實(shí)型常量),2.568,0.5,'a'(字符常量),'!'。 符號(hào)常量:就是用一個(gè)標(biāo)識(shí)符去表示一個(gè)常數(shù)值。利用符號(hào)常量可以做到一改全改。符號(hào)常量的定義格式:#define 符號(hào)常量名 常量值說(shuō)明:#define這是一個(gè)宏定義命令,屬于編譯預(yù)處理命令。符號(hào)常量名是一個(gè)合法的標(biāo)識(shí)符,通常全部用大寫(xiě)字母表示。舉例:#define X=2 (wrong)#define XYZ 2; (wr

4、ong)#define X 2 (right)例題:#define PAI 3.1415927main() float r,s,c; r=1.5; s=PAI*r*r; c=2*PAI*r; printf("s=%f,c=%fn",s,c);變量的含義:在程序的運(yùn)行過(guò)程中,值可以隨時(shí)發(fā)生改變的量。變量分配內(nèi)存空間的大小是由變量所屬的數(shù)據(jù)類型來(lái)決定。(3)數(shù)據(jù)類型C語(yǔ)言所包含的數(shù)據(jù)類型有:基本數(shù)據(jù)類型(整型、實(shí)型、字符型),構(gòu)造數(shù)據(jù)類型(數(shù)組、結(jié)構(gòu)體、共用體),空類型(void),指針類型,用戶自定義類型1整型整型常量:在C語(yǔ)言中,整型常量通常有三種表示方法:十進(jìn)制、八進(jìn)制、

5、十六進(jìn)制。256,0256->174,0x256->598整型變量通常情況下,整型分為三大類:長(zhǎng)整型、整型、短整型。他們都可以分為有符號(hào)和無(wú)符號(hào)兩種。有符號(hào)的長(zhǎng)整型:long無(wú)符號(hào)的長(zhǎng)整型:unsigned long有符號(hào)的整型:int無(wú)符號(hào)的整型:unsigned int(或者直接寫(xiě)成unsigned)有符號(hào)的短整型:short int無(wú)符號(hào)的短整型:unsigned short int變量在內(nèi)存中所占存儲(chǔ)空間的大小是由變量所屬的數(shù)據(jù)類型決定的。比如:long a;a在編譯時(shí)在內(nèi)存中分配4B的空間。int類型(有符號(hào)的整型)的數(shù)據(jù)的取值范圍:-32768-32767unsigne

6、d int類型(無(wú)符號(hào)的整型)的數(shù)據(jù)的取值范圍:0-65535注意:在VC6.0中,int占4B的內(nèi)存單元。變量定義的格式:數(shù)據(jù)類型 變量名1,變量名2,變量名3.;舉例:、int a;int a,b;int a,b,c;long x,y,z;補(bǔ)充:12l或著12L,這樣12就表示了一個(gè)長(zhǎng)整型數(shù)據(jù)。12LU或者12lu就表示12是一個(gè)無(wú)符號(hào)長(zhǎng)整型數(shù)據(jù)。12u或者12U就表示12是一個(gè)無(wú)符號(hào)的整型數(shù)據(jù)。2實(shí)型實(shí)型常量:兩種表現(xiàn)形式:(1)十進(jìn)制小數(shù)形式;(2)指數(shù)形式。十進(jìn)制小數(shù)形式:由三部分構(gòu)成,整數(shù)部分,小數(shù)點(diǎn),小數(shù)部分。例如:356.789,2.,0.5,.5均是合法的。指數(shù)形式:由三部分

7、構(gòu)成,十進(jìn)制小數(shù)部分,階碼標(biāo)志(E或者e),階碼(整數(shù))。舉例:2.56e3<=>2.56*103<=>2.560000e+003;.5E38;2.E-56注意:實(shí)型數(shù)據(jù)小數(shù)點(diǎn)后默認(rèn)保留六位小數(shù)。 當(dāng)實(shí)型數(shù)據(jù)以指數(shù)形式輸出時(shí),通常按照規(guī)范化的指數(shù)形式輸出。所謂規(guī)范化的指數(shù)形式是指指數(shù)形式的十進(jìn)制小數(shù)部分中,小數(shù)點(diǎn)前有且只有一位,并且必須有一位非零的有效數(shù)字。256.369->2.563690e2<=>2.563690E+002例如:#include"stdio.h"void main() printf("%e",

8、256.369);輸出結(jié)果:2.563690E+002實(shí)型變量:分類:<1>單精度型(float):4B,通常小數(shù)點(diǎn)后保留6-7位有效數(shù)字,理論上一般為6位,實(shí)際上也是輸出6位.float x=10.256;printf("%f",x);<2>雙精度型(double):8B,通常小數(shù)點(diǎn)后保留15-16位有效數(shù)字,理論上一般為15位,但是實(shí)際輸出6位.double x=10.256;printf("%lf",x);注意:實(shí)型數(shù)據(jù)在運(yùn)算輸出時(shí),都統(tǒng)一按照雙精度數(shù)處理.float x,y,z;double a,b;字符型(char):字

9、符型數(shù)據(jù)在內(nèi)存只分配一個(gè)字節(jié)的空間.字符型常量:用一對(duì)單引號(hào)括起來(lái)的一個(gè)字符.分類:<1>普通字符常量 'a' '0' '%' '#' '>' 注意區(qū)分: 1 和 '1'.<2>轉(zhuǎn)義字符常量:用一對(duì)單引號(hào)括起來(lái)的以反斜杠''開(kāi)頭的一個(gè)字符序列.此類字符通常專門起控制作用,不會(huì)輸出. 分類:一般的轉(zhuǎn)義字符,八進(jìn)制的轉(zhuǎn)義字符,十六進(jìn)制的轉(zhuǎn)義字符一般的轉(zhuǎn)義字符:'n','r','b','t',除了

10、這幾個(gè)常用的轉(zhuǎn)義字符之外,還有幾個(gè)特殊的轉(zhuǎn)義字符:''','"',''.舉例:/要求程序輸出字符串"welcome to 'ChongQi'和"welcome to ChongQing"#include"stdio.h"void main() printf("welcome to 'ChongQing'"); printf("welcome to "ChongQing"n"); print

11、f("welcome to ChongQing");八進(jìn)制的轉(zhuǎn)義字符:'ddd',注意,這里的d表示的是一位八進(jìn)制數(shù)據(jù).通過(guò)八進(jìn)制的轉(zhuǎn)義字符的形式可以表示一個(gè)普通的字符.例如:'101','102'舉例:/驗(yàn)證八進(jìn)制轉(zhuǎn)義字符的使用#include"stdio.h"void main() printf("101,102,103");十六進(jìn)制的轉(zhuǎn)義字符:'xhh',這里的x僅僅是表示后面的h的取值是一個(gè)十六進(jìn)制數(shù).舉例:/驗(yàn)證八進(jìn)制和十六進(jìn)制轉(zhuǎn)義字符的使用#include&q

12、uot;stdio.h"void main() printf("101,102,103n"); printf("x41,x42,x43n");字符型變量:char a;char x,y;char p,q,m,n;4、運(yùn)算符與表達(dá)式(1)算術(shù)運(yùn)算符+ - * / %說(shuō)明:<1>當(dāng)+和-作為正負(fù)號(hào)使用的時(shí)候,他們是單目運(yùn)算符,他們的優(yōu)先級(jí)高于*,/,%三種運(yùn)算符。但是如果作為加減號(hào)使用時(shí),他們是雙目運(yùn)算符,他們的優(yōu)先級(jí)就低于*,/,%三種運(yùn)算符。例如:+23,-25525+34,25-12,2*3,4/2,5%2<2>數(shù)學(xué)表

13、達(dá)式2x,在C語(yǔ)言中應(yīng)該表示為2*x,x的平方在C語(yǔ)言中就應(yīng)該表示為x*x.<3>在C語(yǔ)言中,整數(shù)相除的結(jié)果為整數(shù),若有小數(shù)部分,直接去掉,不進(jìn)行四舍五入。<4>5%2的結(jié)果為1,-5%2的結(jié)果為-1,5%-2的結(jié)果為1,-5%-2的結(jié)果為-1。(2)自增、自減運(yùn)算符+,-功能:對(duì)變量進(jìn)行自增、自減運(yùn)算。二者都是單目運(yùn)算符。他們的優(yōu)先級(jí)高于算術(shù)運(yùn)算符。自增、自減運(yùn)算表達(dá)式:前置運(yùn)算,后置運(yùn)算。舉例:int i;前置運(yùn)算:+i -i特點(diǎn):就是對(duì)變量i的值先加1或者減1,此時(shí)變量i的值已經(jīng)改變,然后再把i的值拿出來(lái)使用。后置運(yùn)算:i+ i-特點(diǎn):就是先把變量i的值拿出來(lái)使用

14、,此時(shí)變量i的值沒(méi)有改變,使用完之后再把變量i的值加1或者減1。自增、自減運(yùn)算語(yǔ)句:+i;<=>i+;<=>i=i+1;-i;<=>i-;<=>i=i-1;舉例:#include"stdio.h"main() int i=5; i+; printf("%d%d%d%d",+i,i+,i-,-i);/printf函數(shù)輸出順序從左至右輸出,輸出項(xiàng)的運(yùn)算順序相反。 輸出結(jié)果:6 4 5 5(3)賦值運(yùn)算符以及復(fù)合賦值運(yùn)算符賦值運(yùn)算符:=x=2 這是一個(gè)賦值表達(dá)式,目的是把2賦給x。整個(gè)賦值表達(dá)式的結(jié)果是被賦值的變

15、量的值。注意:賦值運(yùn)算符的左邊只能是變量,我們只能對(duì)變量進(jìn)行賦值。復(fù)合賦值運(yùn)算符:+=,-=,*=,/=,%=等。a+=2;<=>a=a+2; a*=b<=>a=a*b x+=(a+b)<=>x=x+(a+b)(4)關(guān)系運(yùn)算符關(guān)系運(yùn)算符:> >= < <= = !=> >= < <=優(yōu)先級(jí)相同,= !=也相同,并且前四種優(yōu)先級(jí)高于后面兩種。雙目運(yùn)算符,(例如:a>b)關(guān)系表達(dá)式的值只有兩個(gè),真和假,但是在C語(yǔ)言里用1和0表示。關(guān)系運(yùn)算符的優(yōu)先級(jí)低于算術(shù)運(yùn)算符。舉例:int a=5,b=3,c=1;a>

16、;b 1b<c 0a>=b 1c<=b 1a>b>c <=>(a>b)>c 0a>b>=c 1a>b=c 1a!=b 1a!=b!=c 0 (5)邏輯運(yùn)算符邏輯運(yùn)算符:! && |!表示邏輯非運(yùn)算,就是取反,原來(lái)為真,取反之后就為假,原來(lái)為假,取反之后就為真。單目運(yùn)算符,優(yōu)先級(jí)和+,-相同。&&表示邏輯與運(yùn)算,雙目運(yùn)算符,只有當(dāng)參與與運(yùn)算的兩個(gè)操作數(shù)都同時(shí)為真的時(shí)候,結(jié)果才為真,有一個(gè)為假,結(jié)果就為假。注意:在C語(yǔ)言中,判斷真假的依據(jù)是:非零為真,零為假。|表示邏輯或運(yùn)算,雙目運(yùn)算符,只有當(dāng)

17、參與或運(yùn)算的兩個(gè)操作數(shù)都同時(shí)為假的時(shí)候,結(jié)果才為假,有一個(gè)為真,結(jié)果就為真。int a=5,b=3,c=1;!(a>b) 0!b&&c 0 a&&b 1c|b 1!a&&b|c 11&&a>b&&b>=c 10&&a>b&&b>=c 0(6)條件運(yùn)算符條件運(yùn)算符:? :例如:a>b?a:b(7)逗號(hào)運(yùn)算符逗號(hào)運(yùn)算符:,起表達(dá)式的連接作用,在使用時(shí)連接多個(gè)表達(dá)式,采用自左至右方式進(jìn)行運(yùn)算。使用格式:表達(dá)式1,表達(dá)式2,表達(dá)式3,.,表達(dá)式n(8)強(qiáng)制

18、類型轉(zhuǎn)換運(yùn)算符使用格式:(類型)表達(dá)式(9)位運(yùn)算符位運(yùn)算符:<< >> & | 第二講 C程序基本語(yǔ)法(續(xù))(6)條件運(yùn)算符?:它是一個(gè)三目運(yùn)算符。使用格式:條件?表達(dá)式1:表達(dá)式2說(shuō)明:判斷?之前的條件是否成立,如果條件成立,則將表達(dá)式1的值作為整個(gè)條件表達(dá)式的值;否則,則將表達(dá)式2的值作為整個(gè)條件表達(dá)式的值。舉例:求25和34中的最大數(shù)#include"stdio.h"main() int a,b,max; a=25; b=34; max=a>b?a:b; printf("max=%dn",max);輸出結(jié)果:

19、max=34求任意兩個(gè)整數(shù)中的最大數(shù)。#include"stdio.h"main() int a,b,max; scanf("%d%d",&a,&b); max=a>b?a:b; printf("max=%dn",max);(7)強(qiáng)制類型轉(zhuǎn)換運(yùn)算符格式:(類型)表達(dá)式說(shuō)明:對(duì)表達(dá)式進(jìn)行強(qiáng)制類型轉(zhuǎn)換得到的僅僅是一個(gè)中間結(jié)果,并沒(méi)有改變被強(qiáng)制轉(zhuǎn)換的數(shù)據(jù)的類型和值。表達(dá)式(int)259.36的結(jié)果是:259#include"stdio.h"main() int a=23; float b=2.56

20、; a=(int)b; printf("%d%fn",a,b);輸出結(jié)果:2 2.560000(8)位運(yùn)算符在C語(yǔ)言中,位運(yùn)算的對(duì)象只能是整型或者字符型數(shù)據(jù),不能是其他類型的數(shù)據(jù)。 (位非):?jiǎn)文窟\(yùn)算符表達(dá)式:4 0000000000000100的位非運(yùn)算結(jié)果為:1111111111111011 <<(左移位):雙目運(yùn)算符格式:a<<i運(yùn)算規(guī)則:將a的各個(gè)二進(jìn)制位向左移動(dòng)i位,右端空出的部分補(bǔ)0,左端溢出的部分舍棄。int b=2;求表達(dá)式b<<1的結(jié)果:4求表達(dá)式b<<2的結(jié)果:8求表達(dá)式b<<3的結(jié)果:16 &

21、gt;>(右移位):雙目運(yùn)算符格式:a>>i運(yùn)算規(guī)則:將a的各個(gè)二進(jìn)制位向右移動(dòng)i位,右端溢出的部分舍棄,若a為正整數(shù)或者無(wú)符號(hào)整數(shù),則左端全部補(bǔ)0,若a為負(fù)整數(shù),則左端全部補(bǔ)1。int b=8;求表達(dá)式b>>1的結(jié)果:4求表達(dá)式b>>2的結(jié)果:2求表達(dá)式b>>3的結(jié)果:1 & (位與):雙目運(yùn)算符格式:a&b運(yùn)算規(guī)則:1&1=1 1&0=0 0&0=0 0&1=0求表達(dá)式3&4的結(jié)果是:00000 0000 0000 0011&0000 0000 0000 01000000

22、0000 0000 0000 | (位或):雙目運(yùn)算符格式:a|b運(yùn)算規(guī)則:1|1=1 1|0=1 0|0=0 0|1=1 求表達(dá)式3|4的結(jié)果是:70000 0000 0000 0011|0000 0000 0000 01000000 0000 0000 0111 (位異或):雙目運(yùn)算符格式:ab運(yùn)算規(guī)則:相同為0,不同為111=0 00=0 10=1 01=1求表達(dá)式34的結(jié)果是:70000 0000 0000 00110000 0000 0000 01000000 0000 0000 0111例題:1、設(shè)有以下程序段:unsigned char a=1,b=2,c,d,e;c=a(b&l

23、t;<2);d=73;e=4&3;該程序執(zhí)行后,c,d,e的值分別為:9 4 32、設(shè)有以下程序段int a=1,b=2,c;c=a(b>>2);該程序執(zhí)行后,c的值為:13、有以下程序main() unsigned char a=2,b=4,c=5,d; d=a|b; d&=c; printf("%d",d);改程序運(yùn)行后,輸出的結(jié)果為:4在c語(yǔ)言中,沒(méi)有專門的輸入輸出語(yǔ)句和命令,要想實(shí)現(xiàn)c程序中的輸入和輸出,必須通過(guò)引用庫(kù)函數(shù)實(shí)現(xiàn)。1、數(shù)據(jù)的輸出(1)單個(gè)字符的輸出函數(shù):putchar()使用格式:putchar(表達(dá)式);注意:括號(hào)里

24、的表達(dá)式既可以是字符型變量或者整型變量,也可以是運(yùn)算表達(dá)式,還可以是字符常量或整型常量。#include"stdio.h"main() int a=65,b=66; putchar('1'); putchar('A'); Putchar('n'); putchar('B'); putchar('2') putchar(a);putchar('n');putchar(b); putchar('3'); putchar(a+32);putchar('n'

25、;);putchar(b+32);(2)標(biāo)準(zhǔn)化的輸出函數(shù):printf()使用格式:printf("格式字符串",輸出項(xiàng)列表);說(shuō)明:格式字符串中包含的內(nèi)容:<1>格式說(shuō)明符表現(xiàn)形式:%+-#0m.nh/l格式字符printf("%+d",25);輸出結(jié)果:+25對(duì)比:printf("%d",25);輸出結(jié)果:25注意:在使用printf函數(shù)輸出的時(shí)候,輸出的數(shù)據(jù)默認(rèn)為右對(duì)齊的方式輸出。當(dāng)在%和格式字符之間加一個(gè)'-'的時(shí)候,輸出的數(shù)據(jù)按左對(duì)齊方式輸出。printf("%-8d",25)

26、;輸出結(jié)果:25 對(duì)比:printf("%8d",25);輸出結(jié)果: 25舉例:#include"stdio.h"main()printf("%-8d",25);printf("n");printf("%08d",25);輸出結(jié)果為:2500000025舉例:#使用的目的就是輸出八進(jìn)制整數(shù)和十六進(jìn)制整數(shù)的前綴。#include"stdio.h"main() int a=65; printf("%d,%o,%xn",a,a,a); printf("

27、%d,%#o,%#xn",a,a,a);輸出結(jié)果:65,101,4165,0101,0x41m用于指定輸出數(shù)據(jù)的寬度 m>輸出數(shù)據(jù)的實(shí)際寬度,除輸出數(shù)據(jù)外,多余的位置,空格填充。 m<輸出數(shù)據(jù)的實(shí)際寬度,按數(shù)據(jù)的實(shí)際寬度輸出。#include"stdio.h"main()int a=65;printf("%d,%6d,%1dn",a,a,a);.n用于指定輸出數(shù)據(jù)的精度,它與m搭配使用#include"stdio.h"main()double a=16.355;printf("%f,%12f,%12.3

28、f,%.2f,%1.3fn",a,a,a,a,a); printf("%lf",a);<2>普通字符普通字符是除了格式說(shuō)明符和轉(zhuǎn)義字符之外的所有字符,在輸出時(shí),原樣輸出。int a=5,b=6;printf("a=%d,b=%dn",a,b);輸出的結(jié)果是:a=5,b=6<3>轉(zhuǎn)義字符注意:(1)因?yàn)楦袷秸f(shuō)明符要和輸出項(xiàng)之間一一對(duì)應(yīng),所以當(dāng)我們只需要輸出一個(gè)字符串的時(shí)候,則沒(méi)有輸出項(xiàng)。當(dāng)然在格式字符串中也就沒(méi)有格式說(shuō)明符。printf("hello,world!n");(2)當(dāng)格式說(shuō)明符的個(gè)數(shù)大于輸出

29、項(xiàng)的個(gè)數(shù)時(shí),此時(shí),除輸出輸出項(xiàng)所對(duì)應(yīng)的數(shù)據(jù)外,剩下的輸出項(xiàng)輸出隨機(jī)數(shù)。當(dāng)然,輸出的隨機(jī)數(shù)是沒(méi)有任何意義的。(3)當(dāng)格式說(shuō)明符的個(gè)數(shù)少于輸出項(xiàng)的個(gè)數(shù)時(shí),此時(shí),按格式說(shuō)明的個(gè)數(shù)輸出,剩下的輸出項(xiàng)舍棄。2、數(shù)據(jù)的輸入(1)單個(gè)字符的輸入函數(shù):getchar()(2)標(biāo)準(zhǔn)化的輸入函數(shù):scanf()輸入函數(shù)的講解1、單個(gè)字符的輸入函數(shù)getchar()使用格式:字符型變量=getchar();#include"stdio.h"main() char ch1; ch1=getchar(); putchar(ch1); putchar('n'); printf(&quo

30、t;%c,%dn",ch1,ch1);輸入:a<CR>輸出結(jié)果: a a,972、標(biāo)準(zhǔn)化的輸入函數(shù)scanf()使用格式:scanf("格式字符串",地址列表);格式字符串包括三種字符:(1)格式說(shuō)明符%格式字符%m格式字符(特殊情況)(2)普通字符(3)轉(zhuǎn)義字符注意:與printf函數(shù)中的格式控制字符串不同,在scanf函數(shù)中普通字符和轉(zhuǎn)義字符在使用時(shí)都必須原樣輸入。地址列表其實(shí)就是取出要輸入數(shù)據(jù)的變量的首地址列表。用取地址符&來(lái)取出每一個(gè)變量存放的首地址。舉例:(1)int a,b,c;printf("請(qǐng)輸入三個(gè)整數(shù):"

31、);scanf("%d%d%d",&a,&b,&c);輸入方式:(1)12 34 56<CR>(2)12<CR>34<CR>56<CR>(3)123456<CR> /通過(guò)按鍵盤上的Tab鍵來(lái)實(shí)現(xiàn)數(shù)據(jù)的輸入舉例(2)char c1,c2;scanf("%c%c",&c1,&c2);輸入:(在輸入字符型數(shù)據(jù)時(shí)注意,空格、回車、TAB鍵均會(huì)被作為有效的字符輸入)錯(cuò)誤的方式:a b<CR> 輸出結(jié)果:c1的值是'a',但是c2的值是&#

32、39; '正確的方式:ab<CR>(3)int a,b;scanf("%3d%4d",&a,&b);輸入:錯(cuò)誤的方式:123 2008<CR>正確的方式:1232008<CR>(4)int a,b,c,d,m;scanf("%d%d%d",&a,&b,&c,&d);scanf("%d",&m);輸入:123 20 108 253<CR>當(dāng)我們輸入之后,真正能得到數(shù)據(jù)的只有a、b、c三個(gè)整型變量(5)int x,y,z;sca

33、nf("%d%*d%d%d",&x,&y,&z);輸入:10 20 30 40<CR>最后的結(jié)果就是:x的值是10,y的值是30,z的值是40(6)int m,n,p,q;scanf("%d,%d,%d,%d",&m,&n,&p,&q);正確的輸入數(shù)據(jù)的方式:10,20,30,40<CR>錯(cuò)誤的輸入數(shù)據(jù)的方式:10 20 30 40<CR>int a,b;scanf("a=%d,b=%dn",&a,&b);正確的輸入數(shù)據(jù)的方式:

34、a=10,b=20n<CR>錯(cuò)誤的輸入數(shù)據(jù)的方式:a=10,b=20<CR> 10 20<CR>例題講解:1、以下程序運(yùn)行時(shí),若從鍵盤輸入:10 20 30<CR>,輸出結(jié)果是:#include"stdio.h"main() int i=0,j=0,k=0; scanf("%d%*d%d",&i,&j,&k); printf("%d,%d,%d",i,j,k);2、已知字符A的ASCII碼是65,以下程序運(yùn)行時(shí)若從鍵盤輸入:B33<CR>.則輸出結(jié)果是

35、:#include"stdio.h"main() char a,b; a=getchar(); scanf("%d",&b); a=a-'A'+'0' b=b*2; printf("%c %c",a,b);3、以下程序運(yùn)行時(shí)若從鍵盤輸入:1234567<CR>.則輸出結(jié)果是:#include"stdio.h"main() int a=1,b; scanf("%2d%2d",&a,&b); printf("%d %dn&

36、quot;,a,b);4、設(shè)有以下程序:main() int x=102,y=012; printf("%2d,%dn",x,y);程序執(zhí)行后的輸出結(jié)果是:102,105、設(shè)有以下程序:main() int x=666,y=888; printf("%dn",x,y);程序執(zhí)行后的輸出結(jié)果是:6666、設(shè)有以下程序:main() int x=666,y=888; printf("%dn",(x,y);程序執(zhí)行后的輸出結(jié)果是:888關(guān)系運(yùn)算符和邏輯運(yùn)算符的應(yīng)用舉例:(1)設(shè)有定義:int a=2,b=3,c=4;則以下選項(xiàng)中值為0的表達(dá)

37、式是(A)A、(!a=1)&&(!b=0) 0B、(a<b)&&!c|1 1C、a&&b 1D、a|(b+b)&&(c-a) 1(2)有以下程序#include"stdio.h"main() int i=1,j=2,k=3; if(i+=1&&(+j=3|k+=3) printf("%d %d %d",i,j,k);程序運(yùn)行后的結(jié)果是:2 3 3(3)已知字母A的ASCII碼是65,若變量kk為char型,以下不能正確判斷出kk中的值為大寫(xiě)字母的表達(dá)式是:(B)A、kk

38、>='A'&&kk<='Z'B、!(kk>='A'|kk<='Z')C、(kk+32)>='a'&&(kk+32)<='z'D、isalpha(kk)&&(kk<91)(4)以下選項(xiàng)中,當(dāng)x為大于1的奇數(shù)時(shí),值為0的表達(dá)式是:DA、x%2=1 B、x/2 C、x%2!=0 D、x%2=0第三講 選擇結(jié)構(gòu)程序設(shè)計(jì)選擇結(jié)構(gòu)1、單分支選擇結(jié)構(gòu)(if語(yǔ)句)(1)if(條件) 語(yǔ)句組;說(shuō)明:條件可以是任意形式的表達(dá)式,甚

39、至是一個(gè)常量或者變量。但是判斷條件真假的依據(jù)是:非零為真,零為假。語(yǔ)句組可以是一條語(yǔ)句,它是在條件成立的情況下執(zhí)行的。如果條件為假,就不執(zhí)行。另外,當(dāng)語(yǔ)句組是由多條語(yǔ)句組成時(shí),則必須用一對(duì)括起來(lái),表示一個(gè)整體(復(fù)合語(yǔ)句)。這個(gè)復(fù)合語(yǔ)句同樣的是在條件成立的情況下才會(huì)執(zhí)行,條件不成立就不執(zhí)行。舉例:任意輸入一個(gè)整數(shù),如果大于零,就將該整數(shù)值加1.#include"stdio.h"main() int m,n=0; printf("請(qǐng)輸入任意的一個(gè)整數(shù)"); scanf("%d",&m); if(m>0) n=m+1; pri

40、ntf("n=%dn",n);例2:求任意兩個(gè)整數(shù)中的最大數(shù)。#include"stdio.h"main() int m,n,max; printf("請(qǐng)輸入任意的兩個(gè)整數(shù):"); scanf("%d%d",&m,&n); max=m; if(max<n) max=n; printf("max=%dn",max);(2)if.else.結(jié)構(gòu)使用格式: if(條件) 語(yǔ)句組1; else 語(yǔ)句組2;舉例:例1:求任意兩個(gè)整數(shù)中的最大數(shù)。#include"stdio.

41、h"main() int m,n,max; printf("請(qǐng)輸入兩個(gè)任意的整數(shù):"); scanf("%d%d",&m,&n); if(m>n) max=m; else max=n; printf("max=%dn",max);例2:求任意三個(gè)整數(shù)中的最大數(shù)。#include"stdio.h"main() int m,n,p,max; printf("請(qǐng)輸入兩個(gè)任意的整數(shù):"); scanf("%d%d%d",&m,&n,&a

42、mp;p); if(m>n) max=m; else max=n; if(max<p) printf("max=%dn",max);(3)if.else if.else結(jié)構(gòu)使用格式: if(條件1) 語(yǔ)句組1; else if(條件2) 語(yǔ)句組2; else if(條件3) 語(yǔ)句組3; . else 語(yǔ)句組n;舉例:例1:任意輸入一個(gè)同學(xué)的成績(jī),求其所對(duì)應(yīng)的檔次“A”“B”“C”“D”“E”.#include"stdio.h"main() float score; printf("請(qǐng)輸入任意的一個(gè)分?jǐn)?shù):"); scanf(

43、"%f",&score); if(score>=90 && socre<=100) printf("A"); else if(score>=80 && socre<90) printf("B"); else if(score>=70 && socre<80) printf("C"); else if(score>=60 && socre<70) printf("D"); els

44、e printf("E");(4)if語(yǔ)句的嵌套應(yīng)用=第一種:if(條件1) if(條件2) 語(yǔ)句組;第二種:if(條件1) if(條件2) 語(yǔ)句組1; else 語(yǔ)句組2;第三種:if(條件1) if(條件2) 語(yǔ)句組1; else 語(yǔ)句組2;else 語(yǔ)句組3; if(條件1) 語(yǔ)句組1;else if(條件3) 語(yǔ)句組3; else 語(yǔ)句組4;if(條件1) if(條件2) 語(yǔ)句組1; else 語(yǔ)句組2;else if(條件3) 語(yǔ)句組3; else 語(yǔ)句組4;.(除了上述常用的if語(yǔ)句結(jié)構(gòu)外,還有很多的嵌套結(jié)構(gòu))=舉例:1有以下程序#include"st

45、dio.h"main() int a=5,b=4,c=3,d=2; if(a>b>c) printf("%dn",d); else if(c-1>=d)=1) printf("%dn",d+1); else printf("%dn",d+2);該程序運(yùn)行后的結(jié)果是:2有以下程序int k=0,a=1,b=2,c=3;k=a<b?b:a;k=k>c?c:k;執(zhí)行該程序后,k的值為:3以下程序的輸出結(jié)果是:#include"stdio.h"main() int a=5,b=4,c

46、=6,d; printf("%dn",d=a>b?(a>c?a:c):(b);2、多分支選擇結(jié)構(gòu)(switch語(yǔ)句)使用格式:switch(表達(dá)式) case 表達(dá)式1:語(yǔ)句組1;break; case 表達(dá)式2:語(yǔ)句組2;break; case 表達(dá)式3:語(yǔ)句組3;break; case 表達(dá)式4:語(yǔ)句組4;break; . case 表達(dá)式n:語(yǔ)句組n;break; default: 語(yǔ)句組n+1;注意:表達(dá)式的值只能是整型或字符型常量;表達(dá)式1.表達(dá)式n的值也都只能取整型值或者字符型常量值。語(yǔ)句組中的語(yǔ)句可以是一條,也可以是多條。不需要用花括號(hào)括起來(lái)。#i

47、nclude"stdio.h"main() int x; printf("請(qǐng)輸入1-7之間的一個(gè)數(shù)字:"); scanf("%d",&x); if(x>=1&&x<=7) switch(x) case 1:printf("Monday!"); case 2:printf("Tuesday!"); case 3:printf("Wednesday!"); case 4:printf("Thursday!"); case 5

48、:printf("Friday!"); case 6:printf("Saturday!"); case 7:printf("Sunday!"); else printf("輸入有誤!");改正后#include"stdio.h"main() int x; printf("請(qǐng)輸入1-7之間的一個(gè)數(shù)字:"); scanf("%d",&x); if(x>=1&&x<=7) switch(x) case 1:printf(&q

49、uot;Monday!");break; case 2:printf("Tuesday!");break; case 3:printf("Wednesday!");break; case 4:printf("Thursday!");break; case 5:printf("Friday!");break; case 6:printf("Saturday!");break; case 7:printf("Sunday!");break; else printf(&q

50、uot;輸入有誤!");多個(gè)case可以共享同一組語(yǔ)句#include"stdio.h"main() int x; printf("請(qǐng)輸入1-7之間的一個(gè)數(shù)字:"); scanf("%d",&x); if(x>=1&&x<=7) switch(x) case 1: case 2: case 3: case 4:printf("Thursday!");break; case 5:printf("Friday!"); case 6:printf(&quo

51、t;Saturday!"); case 7:printf("Sunday!"); else printf("輸入有誤!");2、有以下程序#include"stdio.h"main() int x=1,y=0,a=0,b=0; switch(x) case 1: switch(y) case 0:a+;break; case 1:b+;break; case 2:a+;b+;break; case 3:a+;b+; printf("a=%d,b=%dn",a,b);該程序運(yùn)行后的輸出結(jié)果是:第四講 循環(huán)結(jié)

52、構(gòu)程序設(shè)計(jì)1、循環(huán)結(jié)構(gòu)重復(fù)地做同一件事情,就稱之為循環(huán)。(1)if與goto語(yǔ)句搭配所構(gòu)成的循環(huán)goto語(yǔ)句(無(wú)條件轉(zhuǎn)移語(yǔ)句):當(dāng)程序執(zhí)行到goto語(yǔ)句時(shí),直接無(wú)條件轉(zhuǎn)移到語(yǔ)句標(biāo)號(hào)所在的語(yǔ)句行繼續(xù)執(zhí)行。格式: . . .goto 語(yǔ)句標(biāo)號(hào); . . .語(yǔ)句標(biāo)號(hào):程序中的執(zhí)行語(yǔ)句;舉例:/*求1-100之間的偶數(shù)之和*/#include"stdio.h"void main() int i=1,sum=0,sum1=0;/a變量用于存放任意的一個(gè)偶數(shù),sum用于存放所有偶數(shù)相加之和,sum1用于存放所有奇數(shù)相加之和f1:if(i<=100) if(i%2=0) sum=s

53、um+i; else sum1=sum1+i; i+; goto f1;/f1是一個(gè)標(biāo)識(shí)符,是一個(gè)語(yǔ)句標(biāo)號(hào) printf("sum=%dn",sum); printf("sum1=%dn",sum1);一個(gè)循環(huán)通常由5個(gè)部分構(gòu)成:<1>循環(huán)變量賦初值(例如:i=1)<2>找到循環(huán)變量的終值(例如:i的終值為100)<3>找出循環(huán)的條件(例如:i<=100)<4>找出反復(fù)執(zhí)行的循環(huán)體語(yǔ)句(例如: if(i%2=0) sum=sum+i;else sum1=sum1+i; i+; goto f1;/f1是

54、一個(gè)標(biāo)識(shí)符,是一個(gè)語(yǔ)句標(biāo)號(hào))<5>在循環(huán)體內(nèi)必須有改變循環(huán)條件的語(yǔ)句(例如:循環(huán)體內(nèi)的i+;通過(guò)i的值不斷變化,該循環(huán)條件的真假)(2)while循環(huán)(當(dāng)型循環(huán))格式:while(循環(huán)條件) 循環(huán)體語(yǔ)句;說(shuō)明:當(dāng)循環(huán)條件成立的時(shí)候,就執(zhí)行循環(huán)體語(yǔ)句,當(dāng)循環(huán)條件不成立的時(shí)候,就立即退出循環(huán)。循環(huán)條件可以是一個(gè)變量,常量,表達(dá)式。判斷條件成立與否的依據(jù)是:非零為真,零為假。這里的循環(huán)體語(yǔ)句可以是一條語(yǔ)句,也可以是多條語(yǔ)句,由于循環(huán)體語(yǔ)句是在循環(huán)條件成立的情況下執(zhí)行的,所以如果循環(huán)體語(yǔ)句含有多條執(zhí)行語(yǔ)句時(shí),就必須用一對(duì)括起來(lái)。注意:while 循環(huán)結(jié)構(gòu)在語(yǔ)法上被認(rèn)為是一條語(yǔ)句,因此當(dāng)退出

55、循環(huán)后,就立即執(zhí)行循環(huán)的下一條語(yǔ)句即可。舉例:求1-100的和#include"stdio.h"main() int i=1,sum=0; while(i<=100) sum=sum+i; i+; printf("sum=%dn",sum);求5!#include"stdio.h"main() int i=1,sum=1; while(i<=5) sum=sum*i; i+; printf("sum=%dn",sum);求1!+2!+.+5!#include"stdio.h"main() int i=1,sum=1,s=0; while(i<=5) sum=sum*i; s+=sum; i+; printf("sum=%dn",sum);求100以內(nèi)的偶數(shù)的和#include&quo

溫馨提示

  • 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)論