C語言基礎(chǔ)知識順序_第1頁
C語言基礎(chǔ)知識順序_第2頁
C語言基礎(chǔ)知識順序_第3頁
C語言基礎(chǔ)知識順序_第4頁
C語言基礎(chǔ)知識順序_第5頁
已閱讀5頁,還剩53頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、專題之二 順 序 結(jié) 構(gòu)2.1 字符型常量與變量 2.2 putchar函數(shù)與getchar函數(shù) 2.3 printf函數(shù) 2.4 scanf函數(shù) 2.5 位運算的含義 本節(jié)內(nèi)容學(xué)習(xí)目標(biāo)與要求本章筆試題所占分值在12分左右。上機考試中對putchar、getchar、printf、scanf函數(shù)的用法考核率比較高,應(yīng)重點掌握printf函數(shù)的用法。 C語句概述c語言的語句用來向計算機系統(tǒng)發(fā)出操作指令。一個語句經(jīng)編譯后產(chǎn)生若干條機器指令。一個實際的程序應(yīng)當(dāng)包含若干語句。應(yīng)當(dāng)指出,c語句都是用來完成一定操作任務(wù)的。聲明部分的內(nèi)容不應(yīng)稱為語句。如:int a;不是一個c語句,它不產(chǎn)生機器操作,而只是

2、對變量的定義。從第1章已知,一個函數(shù)包含聲明部分和執(zhí)行部分,執(zhí)行部分即由語句組成。程序應(yīng)該包括數(shù)據(jù)描述(由聲明部分來實現(xiàn))和數(shù)據(jù)操作(由語句來實現(xiàn))。數(shù)據(jù)描述主要定義數(shù)據(jù)結(jié)構(gòu)(用數(shù)據(jù)類型表示)和數(shù)據(jù)初值。數(shù)據(jù)操作的任務(wù)是對已提供的數(shù)據(jù)進行加工。C語句分為5類(1) 控制語句。它完成一定的控制功能。c只有9種控制語句,它們是: if()else(條件語句) for() (循環(huán)語句) hile() (循環(huán)語句) dohile() (循環(huán)語句) continue (結(jié)束本次循環(huán)語句) break (中止執(zhí)行switch或循環(huán)語句) sitch (多分支選擇語句) goto (轉(zhuǎn)向語句) return

3、 (從函數(shù)返回語句)C語句分為5類(2) 函數(shù)調(diào)用語句。由一次函數(shù)調(diào)用加一個分號構(gòu)成一個語句,例如:printf(this is a c stateent);(3) 表達式語句。由一個表達式構(gòu)成一個語句,最典型的是,由賦值表達式構(gòu)成一個賦值語句。a=3 是一個賦值表達式, 而a=3;是一個賦值語句。(4) 空語句。下面是一個空語句: while(i+b)t=a;a=b;b=t;C語言本身不提供輸入輸出語句,輸入和輸出操作是由函數(shù)來實現(xiàn)的。printf和scanf不是C語言的關(guān)鍵字,而只是函數(shù)的名字。實際上c語言函數(shù)庫中有 ,它是以標(biāo)準(zhǔn)的輸入輸出設(shè)備(一般為終端設(shè)備)為輸入輸出對象的。其中有:p

4、utchar(輸出字符),getchar(輸入字符),printf(格式輸出),scanf(格式輸入), puts(輸出字符串),gets(輸入字符串)。在使用c語言庫函數(shù)時,要用預(yù)編譯命令include將有關(guān)的頭文件 包括到用戶源文件中。在調(diào)用標(biāo)準(zhǔn)輸入輸出庫函數(shù)時,文件開頭應(yīng)有以下預(yù)編譯命令: #include 或 #include stdio.h數(shù)據(jù)類型說明符 char例如, char a10, str, c; 一個字符變量能存儲一個字節(jié)的信息,每個字符有固定的編碼,最常用的就是ASCII 編碼。 標(biāo)準(zhǔn)ASCII編碼是把每個字符和與0127的數(shù)值聯(lián)系起來,用7位二進制表示,再將最高位充0,

5、就是一個字節(jié)了。 例如,在ASCII編碼表中,A用數(shù)值65表示,其8位二進制表示是: 01000001 字符變量考點1 字符型常量與變量 字符常量 C語言中的字符常量是用單引號將一個字符括起來。例如a、b??梢杂米址A繛樽址兞抠x值: char alpha=a; char beta=b;注意: (1)引號中的字符只能是一個字符。 (2)不能用雙引號括起一個字符表示單個字符常量。 (3)非圖形字符,如退格,換行等,也可以表示成字符型常量。表示方法是使用轉(zhuǎn)義符與一些特殊字符構(gòu)成轉(zhuǎn)義序列。例如n就是一個轉(zhuǎn)義序列,表示回車換行。 (4)字符型數(shù)據(jù)可以像整型數(shù)據(jù)一樣參與四則運算。 b- a=1相當(dāng)于

6、98-97=1常用的轉(zhuǎn)義字符常量轉(zhuǎn)義字符轉(zhuǎn)義字符的意義ASCII代碼n回車換行10t橫向跳到下一制表位置9b退格(光標(biāo)退后一格)8r回車13f走紙換頁12反斜線符92單引號符39 雙引號符34a鳴鈴7ddd13位八進制數(shù)所代表的字符xhh12位十六進制數(shù)所代表的字符 0空值0歷年真題真題6:已知大寫字母A的ASCII碼是65,小寫字母a的ASCII碼是97.下列不能將變量c中的大寫字母轉(zhuǎn)變?yōu)閷?yīng)小寫字母的語句是()?!?007.4】 A)c=(c-A)%26+a B)c=c+32 C)c=c-A+a D)c=(A+c)%26-a 真題7:下列程序的輸出結(jié)果是 。【2007.4】#include

7、 #include main( )char a=1,2,3,4,0;printf(%d,%dn,sizeof(a),strlen(a);5, 4sizeof與strlen的區(qū)別#include #include main()char a7=a00a00;int i,j;i=sizeof(a);j=strlen(a);printf(i=%d,j=%dn,i,j);i=7, j=2真題8:已知字符A的ASCII碼值是65,字符變量cl的值是A,c2的值是D。執(zhí)行語句printf(%d,%d,cl,c2-2);后,輸出結(jié)果是( )?!?007.9】A)A,B B)A,68C)65,66 D)65,6

8、8真題9:下列正確的字符串常量是( )?!?007.9】A) B)abcC)Olympic Games D) getchar()函數(shù)的用法getchar()是接收一個從標(biāo)準(zhǔn)輸入輸出設(shè)備上輸入的字符。一般的標(biāo)準(zhǔn)輸入設(shè)備是鍵盤。該函數(shù)沒有參數(shù),函數(shù)返回的數(shù)據(jù)類型為整型,值為字符的ASCII碼值。 考點2 putchar函數(shù)與getchar函數(shù)例#include stdio.hvoid main() int c; c= getchar(); printf(%c,c);putchar()函數(shù)的用法putchar()是向標(biāo)準(zhǔn)輸入輸出設(shè)備上輸出一個字符,一般的標(biāo)準(zhǔn)輸出設(shè)備是屏幕終端。putchar()與g

9、etchar()不同,輸出字符做為函數(shù)的參數(shù),放在括號里。所以括號里的內(nèi)容是不能缺省的。putchar()函數(shù)返回的數(shù)據(jù)類型為整型,值為字符的ASCII碼值。若想輸出字符a,可以用幾種方式? int c ; c=a; putchar( c);以及 putchar(a); 和 putchar(97);對于不可打印的字符,輸出方式有兩種: putchar(007) ; 和 putchar(007);例 輸入一個字符,按字符原封不動輸出。 #include stdio.h void main() int c,i; c=getchar(); i=putchar(c); 或者 #include stdi

10、o.h void main() putchar(getchar() */ 歷年真題真題1:要求通過while循環(huán)不斷讀入字符,當(dāng)讀入字母N時結(jié)束循環(huán)。若變量已正確定義,下列正確的程序段是( )?!?006.4】A)while(ch=getchar()!=N)printf(%c,ch);B)while(ch=getchar()!=N)printf(%c,ch);C)while(ch=getchar()= =N)printf(%c,ch);D)while(ch=getchar()= =N)printf(%c,ch);真題2:有下列程序:【2006.4】#include main( ) char c

11、1,c2,c3,c4,c5,c6;scanf(%c%c%c%c,&c1,&c2,&c3,&c4);c5=getchar( ); c6=getchar( );putchar(c1);putchar(c2);printf(%c%cn,c5,c6);程序運行后,若從鍵盤輸入(從第1列開始)12345678則輸出結(jié)果是( )。A)1267 B)1256C)1278 D)1245真題3:當(dāng)執(zhí)行下列程序時,輸入1234567890,則其中while循環(huán)體將執(zhí)行 次。【2007.4】#includemain( ) char ch;while(ch=getchar( )=0)printf(#);若輸入字符串:

12、abcde,則以下while循環(huán)體將執(zhí)行 次。ch=getchar( );while(ch= =e) printf(*);A) 5 B) 4 C) 1 D) 00格式輸出函數(shù)printf(格式控制字符串, 輸出項表列);輸出若干個任意類型的數(shù)據(jù)printf(a=%d b=%f, a, b); 函數(shù)名輸出表列普通字符格式說明 3 格式輸出1. 標(biāo)志:標(biāo)志字符為-、+、#、空格四種,其意義如下所示: 標(biāo)志 意義 -結(jié)果左對齊,右邊填空格 +輸出符號(正號或負(fù)號) 空格輸出值為正時冠以空格,為負(fù)時冠以負(fù)號 #對c,s,d,i,u類無影響;對o類,在輸出時加前綴0;對x類,在輸出時加前綴0 x;對e,

13、g,f 類,確保出現(xiàn)小數(shù)點,即使無小數(shù)位時亦如此 例:#include main() int a=100; float b=123.255; printf(a=%d ,a); printf(a=%10d ,a); printf(a=%-10d ,a); printf(a=%+d ,a); printf(a=% d ,a); printf(a=%#o ,a); printf(a=%#x ,a); printf(b=%#f ,b); / a=100 /a= 100/ a=100 /a=+100/a= 100/a=0144/a=0 x64/b=123.2549972.輸出最小寬度:用十進制整數(shù)來表示

14、輸出的最少位數(shù)。(至少要輸出這么多位?。?若實際位數(shù)多于定義的寬度:則按實際位數(shù)輸出。 若實際位數(shù)少于定義的寬度:則右對齊,左邊留空。 有負(fù)號,左對齊,右邊留空 表示寬度的數(shù)字以0開始,則右對齊,左邊留空。 Turbo C2.0提供的格式字符如下: 符號 作用 %c 單個字符 %d 十進制有符號整數(shù) %e 以科學(xué)記數(shù)法的形式輸出十進制的浮點數(shù) 如2.451e+02 %f 輸出十進制浮點數(shù),不帶域?qū)挄r,保留6位小數(shù) %g 選用e或f格式中較短的一個輸出十進制浮點數(shù),不輸出無效零 %o 無輸出無符號八進制整數(shù)(不輸出前綴0) %p 指針的值 %s 輸出字符串 %u 輸出無符號十進制整數(shù) %x, %

15、X 輸出無符號十六進制整數(shù) (不輸出前綴0 x) 一、一般形式 scanf (格式控制,地址表列) 格式控制的含義同printf函數(shù); 地址表列是由若干個地址組成的表列,可以是變量的地址,或字符串的首地址。格式輸入函數(shù)scanf(格式控制字符串, 地址表列); scanf(%d,%f, &a,&b);格式說明地址表列考點4 scanf函數(shù)(格式輸入函數(shù))二、格式: scanf(格式控制字符串,地址表列) 其中:格式控制字符串的作用與printf()函數(shù)相同。 不能顯示提示信息 地址表列中要給出各變量的地址。地址是由地址運算符&加上變量名組成的 注意區(qū)分變量的值和變量的地址這兩個不同的概念不能用

16、scanf( )在屏幕上顯示提示信息。三、使用scanf( )函數(shù)需注意 :(1)scanf( )函數(shù)中沒有精度控制。 如:scanf(%4.2f,&a);是非法的 (2)scanf()函數(shù)中一定給出變量地址,不可是變量名,否則出錯。 如: scanf(%d,a); 錯 scanf(%d,&a); 對(3)輸入多個數(shù)據(jù)時,格式控制串中沒有非格式字符,則輸入時數(shù)據(jù)間的分隔符可用空格、TAB鍵、回車鍵。(4)輸入字符數(shù)據(jù)時,若格式控制符中無非格式符,則認(rèn)為所有輸入的字符均為有效字符。 scanf(%c%c%c,&a,&b,&c); printf(a=%c,b=%c,c=%c,a,b,c); 輸入:

17、A,B,C 輸出:a=A, b=, ,c=B (5)如果格式控制字符串中有非格式字符,則輸入時也要輸入非格式字符。 scanf(%d,%d,%d,&a,&b,&c); 輸入應(yīng)為:5,6,7若為:scanf(a=%d,b=%d,c=%d,&a,&b,&c); 輸入應(yīng)為:a=5,b=6,c=7(6)輸入、輸出格式符不相符,則輸出數(shù)據(jù)錯誤 輸入數(shù)據(jù)時,遇以下情況時該數(shù)據(jù)認(rèn)為結(jié)束遇空格、回車、TAB 鍵遇寬度限制: %3d遇非法輸入格式輸入函數(shù)#include main() int a, b; printf(Please input a and b:); scanf(%2d%*2d%2d, &a, &

18、b); printf(a=%d, b=%d, +b=%dn,a,b,a+b);Please input a and b:a=12, b=56, a+b = 68123456例24* 表示本輸入項在讀入后不賦給相應(yīng)變量#include main() int a, b; printf(Please input a and b:); scanf(%2d%*2d%2d, &a, &b); printf(a=%d, b=%d,a+b=%dn,a,b,a+b);Please input a and b:a=12, b=5, a+b = 1712345a例25#include main() int a, b

19、;scanf(%d %d, &a, &b);printf(a = %d, b = %dn, a, b);問題1:當(dāng)要求程序輸出結(jié)果為 a = 12, b = 34時,用戶應(yīng)該如何輸入數(shù)據(jù)? 12 34輸入數(shù)據(jù)的格式控制例25#include main() int a, b;scanf(%d %d, &a, &b);printf(a = %d, b = %dn, a, b);問題2:當(dāng)限定用戶輸入數(shù)據(jù)以逗號為分隔符,即輸入數(shù)據(jù)格式為: 12, 34時,應(yīng)修改程序中的哪條語句?怎樣修改? scanf(%d,%d, &a, &b); 輸入數(shù)據(jù)的格式控制例25#include main() int a

20、, b;scanf(%d %d, &a, &b);printf(a = %d, b = %dn, a, b);問題3:語句scanf(%d %d, &a, &b);修改為scanf(a = %d, b = %d, &a, &b);時,用戶應(yīng)該如何輸入數(shù)據(jù)?a = 12, b = 34輸入數(shù)據(jù)的格式控制例25#include main() int a, b;scanf(%d %d, &a, &b);printf(a = %d, b = %dn, a, b); 問題4:限定用戶輸入數(shù)據(jù)為以下格式為 1234 同時要求程序輸出結(jié)果為a = 12, b = 34scanf(%2d%2d, &a, &b

21、); 輸入數(shù)據(jù)的格式控制例25#include main() int a, b;scanf(%d %d, &a, &b);printf(a = %d, b = %dn, a, b); 問題5:限定用戶輸入數(shù)據(jù)為以下格式為1234 同時要求程序輸出結(jié)果為a = 12, b = 34scanf(%d%d, &a, &b);printf(a = %d, b = %dn, a, b);輸入數(shù)據(jù)的格式控制例25#include main() int a, b;scanf(%d %d, &a, &b);printf(a = %d, b = %dn, a, b);問題6:設(shè)計程序使得用戶可以以任意字符(回車

22、、空格、制表符、逗號、其它)作為分隔符進行數(shù)據(jù)的輸入scanf(%d%*c%d, &a, &b); 輸入數(shù)據(jù)的格式控制例25例題1 有以下程序: #include main() int y=1111; printf(y=%6dn,y); printf(y=%+06dn,y); 程序的運行結(jié)果為:例題2 有以下程序:#includemain()int y=456;printf(*y=%7o*n,y);printf(*y=%-7o*n,y);printf(*y=%07o*n,y);程序的運行結(jié)果為: *y= 710* *y=710 * *y=0000710*例題3 有以下程序: main() in

23、t y=3.667; printf(*y=%f*n,y); printf(*y=%7.2f*n,y); printf(*y=%8.0f*n,y); 程序的運行結(jié)果為: *y=3.667000* *y= 3.67* *y= 4*例題4 有以下程序: main() int x,y; x=11/3;y=5; printf(%d,%dn,x, y);程序的運行結(jié)果為: %d,%3C語言規(guī)定,在格式控制字符串中若連續(xù)出現(xiàn)兩個,系統(tǒng)視為一個字符輸出。例題5 有以下程序: main() int y; y=26; printf(%d,%#o,%#xn,y,y, y);程序的運行結(jié)果為: 26,032,0 x1

24、a若按o和x輸出的數(shù)據(jù),數(shù)據(jù)前面沒有0和0 x標(biāo)志,可以用引導(dǎo),具體用法是在和o 或x之間插入一個歷年真題(printf)真題2:有以下程序段( )。【2008.4】char ch;int k;ch=a; k=12;printf( %c,%d, ,ch,ch,k);Printf( k=%dn,k);已知字符a的ASCII十進制代碼為97,則執(zhí)行上述程序段后輸出結(jié)果是A)因變量類型與格式描述符的類型不匹配輸出無定值B)輸出項與格式描述符個數(shù)不符,輸出為零值或不定值C)a,97,12k=12D)a,97,k=12真題3:若有定義:int k;,以下程序段的輸出結(jié)果是 。【2008.4】for(k=

25、2;kb)a=b,b=c;c=a;printf(a=%d b=%d c=%dn,a,b,c);程序的輸出結(jié)果是A)a=10 b=50 c=10 B)a=10 b=50 c=30C)a=10 b=30 c=10 D)a=50 b=30 c=50真題5:【2008.9】若整型變量a和b中的值分別為7和9,要求按以下格式輸出a和b的值:a=7b=9請完成輸出語句:printf( ,a,b); 。a=%dnb=%dn歷年真題(scanf)真題4:設(shè)變量均已正確定義,若要通過scanf(%d%c%d%c,&a1,&c1,&a2,&c2);語句為變量a1和a2賦數(shù)值10和20,為變量c1和c2賦字符X和Y

26、。下面的輸入形式中正確的是( )(注:口代表空格字符)?!?007.4】A)10X20YB)10X20YC)10X 20YD)10X 20Y真題5:若在定義語句int a,b,c,*p=&c;之后,接著執(zhí)行下列選項中的語句,則能正確執(zhí)行的語句是( )。【2007.9】A)scanf(%d,a,b,c); B)scanf(%d%d%d,a,b,c);C)scanf(%d,p); D)scanf(%d,&p);真題6:有下列程序段:【2007.9】int j;float y;char name50;scanf(%2d%f%s,&j,&y,name);當(dāng)執(zhí)行上述程序段,從鍵盤上輸入55566 777

27、7abc后,y的值為( )。A)55566.0 B)566.0C)7777.0 D)5667777.0真題7:執(zhí)行下列程序時,輸入1234567,則輸出是 ?!?007.9】#include main( )int a=1,b;scanf(%2d%2d,&a,&b);printf(%d%dn,a,b);1234真題8:若變量已正確定義為int型,要通過語句scanf(%d,%d,%d,&a,&b,&c);給a賦值1、給b賦值2、給c賦值3,以下輸入形式中錯誤的是(u代表一個空格符)?!?008.9】A)uuu1,2,3 B)1u2u3C)1,uuu2,uuu3 D)1,2,3 考點5 位運算 1

28、、位運算符的含義位運算就是對數(shù)的二進制位進行的運算。6種位運算符的含義見下表。運算符含義優(yōu)先級接位求反1(高)右移2&按位與3按位異或4|按位或5(低)【說明】位運算符中除以外,均為二元運算符,即要求兩側(cè)各有一個運算量。運算量只能是整型或字符型的數(shù)據(jù),不能為實型數(shù)據(jù)。 位運算 基本的位運算1.按位與運算按位與運算實現(xiàn)兩個數(shù)據(jù)對應(yīng)二進制位的與操作,二進制位與操作的規(guī)則如下: 0&0=0,0&1=0,1&0=0,1&1=1 2.按位或運算按位或運算實現(xiàn)兩個數(shù)據(jù)對應(yīng)二進制位的或操作,二進制位或操作的規(guī)則如下: 0|0=0,0|1=1,1|0=1,1|1=1 基本的位運算3.按位異或運算按位異或運算實現(xiàn)兩個數(shù)據(jù)對應(yīng)二進制位的異或操作,二進制位異或操作的規(guī)則如下: 00=0,01=1,10=1,11=04.按位取反運算按位取反運算是單目運算,其功能是對參與運算的數(shù)的各二進位按位求反,將二進制位0變?yōu)?,將二進制位1變?yōu)?。5.左移位運算 左移位運算實現(xiàn)一個數(shù)據(jù)對應(yīng)二進制數(shù)的向左移

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論