




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、國家計算機二級考試C語言輔導課件一、C語言程序的結(jié)構(gòu)1.程序的構(gòu)成,main函數(shù)和其他函數(shù)。2.頭文件,數(shù)據(jù)說明,函數(shù)的開始和結(jié)束標志以及程序中的注釋。3.源程序的書寫格式。4.C語言的風格。5.相關(guān)題目C語言程序是由函數(shù)構(gòu)成,即函數(shù)是C程序的基本組成單位.每一個C語言源程序可以包含多個程序文件,但必須而且只能具有一個main函數(shù)作為程序的主控函數(shù),稱為主函數(shù).位置雖然不確定,但程序的運行都是從主函數(shù)開始到主函數(shù)結(jié)束. 一個源程序的不同程序文件之間通過調(diào)用來使用,但main函數(shù)不能被調(diào)用,只有一個程序文件中具有main函數(shù),其它程序文件沒有. 一個函數(shù)中不能定義另一個函數(shù),函數(shù)不能嵌套定義.
2、int f1(int k)int w; w=k*k; return(w);void main() int i,j; long s1,s2; for(i=1;i=10;i+) s1=s1+f1(i);for(j=1;j=10;j+) s2=s2+f2(j);printf(“%ld,%ld”,s1,s2); int f2(int m) int z; z=m*m*m; return(z);1)頭文件的作用,使用方法,擴展名.h2)注釋部分的格式/* */,位置,作用3)大括號 表示函數(shù)體的開始和結(jié)束#include#include”math.h”main() float x; scanf(“%f”,
3、x);/*輸入一個實數(shù)*/ printf(“%f”,sin(x);1)分號是語句的結(jié)束符2)一行可以容納多條語句,而一條語句可以在多行3)源程序(.c)-目標程序(.obj)-可執(zhí)行程序(.exe) 編譯 連接main() int a,b; a=10;b=20; printf(“a=%d,b=%d”, a,b);1)標識符語法規(guī)則: C語言中的標識符只能由字母、數(shù)字和下劃線三種字符組成,且第一個字符必須為字母或下劃線。 區(qū)分大小寫,變量習慣上用小寫,符號常量用大寫。 對長度無統(tǒng)一規(guī)定。一般為8位,Turbo C則允許32個字符。 標識符不能跨行書寫,不能與關(guān)鍵字同名。_12 a1 1s s%2
4、 2)32個關(guān)鍵字總結(jié):主要在第一章,涉及選擇題11121)以下敘述中正確的是(07 9)A)C語言程序?qū)脑闯绦蛑械谝粋€函數(shù)開始執(zhí)行B)可以在程序中由用戶指定任意一個函數(shù)作為主函數(shù),程序?qū)拇碎_始執(zhí)行C)C語言規(guī)定必須用main作為主函數(shù)名,程序?qū)拇碎_始執(zhí)行,在此結(jié)束D)main可作為用戶標識符,用以命名任意一個函數(shù)作為主函數(shù)2)以下敘述中正確的是(08.4) A)C程序中的注釋只能出現(xiàn)在程序的開始位置和語句的后面 B)C程序書寫格式嚴格,要求一行內(nèi)只能寫一個語句 C)C程序格式自由,一個語句可以寫在多行 D)用C語言編寫的程序只能放在一個程序文件中3)以下選項中合法的標志符是(09.3)
5、 A)1_1 B)1-1 C)_1 D)1_ _CCC4)以下敘述中正確的是(08.9) A)C程序的基本組成單位是語句 B)C程序中的每一行只能寫一條語句 C)簡單C語句必須以分號結(jié)束 D)C語句必須在一行內(nèi)寫完5)計算機能直接執(zhí)行的程序是(08.9) A)源程序 B)目標程序 C)匯編程序 D)可執(zhí)行程序6)以下敘述正確的是(10.3)A)C語言程序是由過程和函數(shù)組成的B)C語言函數(shù)可以嵌套調(diào)用,例如:fun(fun(x)C)C語言函數(shù)不可以單獨編譯D)C語言中除了main函數(shù),其他函數(shù)不可作為單獨文件形式存在CDB二、數(shù)據(jù)類型及其運算1.C的數(shù)據(jù)類型(基本類型,構(gòu)造類型,指針類型,無值類
6、型void)及其定義方法。2.C運算符的種類、運算優(yōu)先級和結(jié)合性。3.不同類型數(shù)據(jù)間的轉(zhuǎn)換與運算。4.C表達式類型(賦值表達式,算術(shù)表達式,關(guān)系表達式,邏輯表達式,條件表達式,逗號表達式)和求值規(guī)則。5.相關(guān)習題1)常量各自類型的表現(xiàn)形式 (1)整型常量 :十進制(123),八進制(0123),十六進制(0X123),57L (2)實型常量:十進制(12.3, 12. , .3),指數(shù)形式 (2.0e+5) (2.0e+1.5,e+2) (3)字符常量(a,1, 023,xa7,n,t) (4)字符串常量(“a”,”ab123”)注意:字符常量與字符串常量的不同(定界符字符個數(shù)占據(jù)內(nèi)存長度)2
7、)各種數(shù)據(jù)類型 整型(short int 2 ,int 2 ,long int 4, unsinged ) 實型(float 4 7,double 8 15) 字符型 (char 1)3)變量的定義 掌握格式,含義,特點(一次只能對應一個值 新值覆蓋舊值) int a; float b=4.5; (1)同種類型變量用一個類型標志符定義之間用逗號隔開 int a=20;b=10; (2)不同種類型變量定義之間用分號隔開 int a=20,float b=2.0; (3)變量定義時不允許出現(xiàn)連續(xù)賦值 int a=b=20;1)除法:當被除數(shù)和除數(shù)均為整數(shù),則商一定為整數(shù)( 3/2 , 3.0/2)
8、2)求余:被除數(shù)和除數(shù)必須均為整數(shù)( 3.2%2)方法: (1)被除數(shù)和除數(shù)取絕對值,求余(2)余數(shù)的符號與被除數(shù)相同3)自增自減運算(1)操作數(shù)只能是變量(3+)(2)x+,+x的區(qū)別(先做再變,先變再做) (設(shè)x的原值等于3) y=x+; y=+x; printf(“%d”,x+); printf(“%d”,x+); 6+(x+) 6+(+x) x+3 +x34)賦值運算符: (1)賦值號左邊只能出現(xiàn)變量名(y=x+1=0,x=9=10) (2)復合賦值運算符的寫法及含義( a-=a+=a*a a為2) (3)結(jié)合性5)逗號運算符優(yōu)先級最低:掌握運算順序,注意一個逗號表達式只有一個結(jié)果 p
9、rintf(“%d”,x+,x+6,x+=7);6)條件運算符: (1)唯一的一個三目運算符(2)結(jié)合性(3)規(guī)則( (w)?x+:y+ 找等價 表達式1的值非0或0)1)賦值轉(zhuǎn)換:以變量類型為準 int a ; a = 2.3; float b; b=7;2)計算時自動轉(zhuǎn)換:低精度向高精度轉(zhuǎn)換,特別的是單精度數(shù)運算一定轉(zhuǎn)為雙精度數(shù),以提高運算速度(25頁) 表達式:a+b-a+203)強制類型能夠轉(zhuǎn)換:格式 (類型名)表達式 (int)3.7/2 (int)x+2 (int) (x+2)注意:強制類型轉(zhuǎn)換不改變變量自身的類型,變量類型一旦定義在程序運行階段是無法改變的 1)關(guān)系表達式: (1
10、)優(yōu)先級:所有相同,比算術(shù)運算符低 3+29=!4 (2)不同類型數(shù)據(jù)之間也可以用關(guān)系運算符比較大小 a=30 12.31 (3)關(guān)系表達式結(jié)果0或1 (4)注意=和=的區(qū)別 x=3 x=3 x+1=3; x+1=3; (5)數(shù)學中的式子2x2 & x92)邏輯表達式: (1)優(yōu)先級:!、&、| (2)參加運算的操作數(shù)可以是各種類型數(shù)據(jù),但只分為0和非0兩類處理 !2+6 & 7|A (3)運算規(guī)則 (4)結(jié)果0或1 (5)&和|特性,當前面就能獲得結(jié)果,那么后面的式子將不再做 int i=3,j=3; i+ | j+; int i=0,j=3; i+ & j+3)條件表達式4)逗號表達式:(
11、1)優(yōu)先級最低 (2)運算從左至右,各表達式的值 (3)表達式的值只有一個,一組表達式中最后一個表達式的值5)代數(shù)式如何正確轉(zhuǎn)為C中的表達式 (1)乘號不能省略 2x - 2*x (2)函數(shù)的括號不能省 sinx- sin(x) (3) 優(yōu)先級的問題 2ab - 2*a*b/(2*c) 2c (4)標準函數(shù)名 總結(jié):主要涉及到第二章和第四章一部分 ,試題為131617或181)若有表達式(w)?(-x): (+y), 則其中與w等價的表達式是(08.9)A)W =1 B)W=0 C)W!=1 D)W!=02)若函數(shù)中有定義語句:int k;則(09.3)A)系統(tǒng)將自動給k賦初值0 B)這時k中
12、值無定義C)系統(tǒng)將自動給k賦初值-1D)這時k中無任何值3)以下選項中能做數(shù)據(jù)常量的是(09.3)A)o115 B)0118 C)1.5e1.5 D)115L DBD4)有以下程序#include main()char c1,c2;c1=A+8-4;c2=A+8-5;printf(“%c,%dn”,c1,c2);已知字母A的ASCII碼為65,程序運行后的輸出結(jié)果是(09.9)A) E,68 B) D,68 C) E,D D)輸出無定值5)若有定義:double a=22;int i=0,k=18;,則不符合C語言規(guī)定的賦值語句是(10.3) A)a=a+,i+;B)i=(a+k) y ) ;
13、else max = y;4)復合語句:用 把多個語句括起來稱為復合語句,又稱分程序(1)while ( x y ) t =x ; x = y; y = t;1)字符輸入函數(shù): putchar( ) (功能,參數(shù)及其類型,返回值及其類型) putchar(a); putchar(023);putchar(x1a);putchar(30+35); char x; int y; float z; putchar(x); putchar(y); putchar(z);2)字符輸入函數(shù):getchar()(功能,返回值及其類型) x=getchar(); putchar(getchar();3)格式輸
14、出函數(shù)printf()(1)輸出類型(在格式控制字符串中加入類型說明符): %d,%ld,%o,%x,%u,%f,%e,%c,%s說明:(1)輸出項與格式描述符個數(shù)相等,類型匹配 (2) 輸出時,格式限制符中的普通字符按原樣輸 出 printf(“x=%d,%f”,x); printf(“x=%d”,x,y); printf(“x=%d,y=%f”,x,y); (3)輸出時,注意數(shù)值的符號(負號)和小數(shù)點占據(jù)的位 數(shù) printf(“%3d,%3d,%3.2f”,-456,456,3.27); printf(“%+3d,%_3d,%3.2f”,456,456,3.27);(2)輸出長度(在類型
15、限定前加上數(shù)字) %3d,%8d,%-8d,%5.3f,%.3f,%5c,%5.3s說明:1)實數(shù)輸出時,默認是6位小數(shù) 2)截取小數(shù)時需四舍五入(3)輸出表達式時,先按從右到左運算,在從左至右輸出 n = 1; printf(“%d,%d,%d”,n,n+,+n);基本原則:不能使輸出數(shù)據(jù)失真,當限制長度比實際長度短,按實際長度輸出 printf(“%3s,%2d,%2.3”,”abcd”,123,23.5678);4)格式輸入函數(shù)scanf()(1) “格式控制”后面應當是變量地址,而不應是變量名。int n; scanf(“%d”,&n); scanf(“%d”,n);(2)如果在“格式
16、控制”字符串中除了格式說明符以外還有其他普通字符,則在輸入數(shù)據(jù)時應輸入與這些字符相同的字符。 scanf(“n1=%d,n2=%d”,&n1,&n2) (3) 格式字符和輸入列表的變量類型匹配,個數(shù)相等 int i; float j,k; double l; scanf(“%d%d”,&i, &j); scanf(“%d%f”,&i, &j,&k); scanf(“%d%f%f”,&i, &j); scanf(“%f”,l);(3)在輸入數(shù)值數(shù)據(jù)時,遇以下情況時該認為結(jié)束。 a.遇空格,或按“回車”或“跳格”(Tab)鍵。 b.按指定的寬度結(jié)束。 c.遇非法輸入。scanf(“%d%d”,&a
17、,&b); 12x3 scanf(“%d%f”,&x1,&x2); 123.4 scanf(“%d%d”,&x1,&x2); scanf(“%c”,&c); 12_3 12 3a a scanf(“%2d%*3d %2d”,&a,&b); 輸入:12345678 (4)對于“%c” ,空格字符和轉(zhuǎn)義字符都是有效字符。 scanf(“%c%c”,&c1,&c2); 12 1_2 (5)scanf()函數(shù)格式限制中只有”域?qū)挕?而沒有小數(shù)位數(shù)的限制 scanf(“%5.1f”,&x);(6) double a; scanf(“%lf”,&a);總結(jié):基本內(nèi)容在第三章,重點是scanf()函數(shù)和pr
18、intf()函數(shù)的應用,選擇題一般各占一題1819,還有后面的綜合應用1)若變量已正確定義為int型,要通過語句scanf(“%d,%d,%d”,&a,&b,&c);給a賦值1,給b賦值2,給c賦值3,以下輸入形式中錯誤的是(_代表一個空格)(08.9)A)_ _ _ 1,2,3 B)1_2_ 3 C)1,_ _ _2,_ _ _3 D)1,2,3 2)程序段:int x=12; double y=3.141593; printf(“%d%8.6f”,x,y);的輸出結(jié)果是(09.3)A)123.141593 B)12 3.141593 C)12,3.141593 D)123.1415930
19、BA3) 若整型變量a和b中的值分別為7和9,要求按以下格式輸出a和b的值: (08.4) a=7 b=9請完成輸出語句:printf(“_”,a,b); 4)有以下程序 main() int a =0,b=0; a=10;/*給a賦值 b=20; 給b賦值*/ printf(“a+b=%dn”,a+b) /*輸出結(jié)果*/程序運行后的輸出結(jié)果是(06.9)A)a+b=10 B)a+b=30 C)30 D)出錯 a=%dnb=%dB5) 有以下程序includemain() char a,b,c,d;scanf(“%c%c”,&a,&b);c=getchar(); d=getchar();pri
20、ntf(“%c%c%c%cn”,a,b,c,d);當執(zhí)行程序時,按下列方式輸入數(shù)據(jù)(從第1列開始,代表回車,注意:回車也是一個字符)1234則輸出結(jié)果是(10.3)A)1234 B)12C)12 D)12 3 34C四、選擇結(jié)構(gòu)程序設(shè)計1.用if語句實現(xiàn)選擇結(jié)構(gòu)。2.用switch語句實現(xiàn)多分支選擇結(jié)構(gòu)。3.選擇結(jié)構(gòu)的嵌套。4.相關(guān)習題1)關(guān)系表達式( = = 2 3=2 aA Aa (1)優(yōu)先級:前四個比后兩個高,比算術(shù)運算符低 3+29=!4 (2)不同類型數(shù)據(jù)之間也可以用關(guān)系運算符比較大小 a=30 12.31 (3)關(guān)系表達式結(jié)果0或1 (4)注意=和=的區(qū)別 x=3 x=3 x+1=
21、3; x+1=3; (5)數(shù)學中的式子2x2 & x5 & 7|A (4)結(jié)果0或1 (5)&和|特性,當前面就能獲得結(jié)果,那么后面的式子將不再做 int i=3,j=3; i+ | j+; int i=0,j=3; i+ & j+1)If分類: (1)單分支(if.): if(x2) printf(“ok”); 表達式語句真(非)條件成立,執(zhí)行語句(2)雙分支(ifelse): if (x2) printf(“ok”); else printf(“no”); 假(0)表達式語句1語句2真假(3)多分支(ifelse if else if. else)表達式1表達式2表達式3表達式4語句1語句
22、2語句3語句4語句5假假假假真真真真if(x10) printf(“1”);else if(x=9) printf(“2”);else if(x=8) printf(“3”);else printf(“4”);隱含條件 x=9 & xx2) printf(%d,1); printf(%d,2);else printf(%d,3);(3)If中的條件表達式可以是各種類型的,只需通過判斷表達式結(jié)果為0或非0,決定執(zhí)行什么語句 char x; int y; float k; if(x).else if(y+)else if(k+10)else if(yx)else if(y&k)排序:1.輸入兩個實
23、數(shù),按代數(shù)值由小到大的次序輸出這兩個數(shù)算法分析:1、輸入兩個實數(shù),分別賦給 兩個實型變量a,b2、兩個數(shù)的比較 2.1如果ab 則進行交換if(ab) t=a;a=b;b=t; 2.2如果a不大于b,則不能交換3、輸出a,b 源程序: main() float a,b,t; scanf(“%f,%f”,&a,&b); if(ab) t=a;a=b;b=t; printf(“%5.2f,%5.2f”,a,b); 2.輸入3個數(shù)a,b,c,要求按由小到大的順序輸出算法:(1)if ab 將a和b對換 (a是a,b中的小者)(2)if ac 將a和c對換 (a是a,c中的小者,因此a是三者中最小者)
24、(3)if bc 將b和c對換 (b是b,c中的小者,也是三者中次小者)(4)順序輸出a,b,c源程序:main() float a,b,c,t;scanf(“%f ,%f,%f”,&a,&b,&c);if (ab) t=a;a=b;b=t;if (ac) t=a;a=c;c=t;if (bc) t=b;b=c;c=t;printf(“%5.2f,%5.2f,%5.2f”,a,b,c);將上if語句改為: main() float a,b,c,t; scanf(“%f ,%f,%f”,&a,&b,&c); if (ab) t=a;a=b;b=t; else if (ac) t=a;a=c;c=
25、t; else if (bc) t=b;b=c;c=t; printf(“%5.2f,%5.2f,%5.2f”,a,b,c); switch結(jié)構(gòu)與if多分支結(jié)構(gòu)的區(qū)別: 1)switch結(jié)構(gòu)只能表示等于關(guān)系,即 switch后的表達式是否與case 后的常量相等,而if可表示大于小于等于 switch(a/b) case 0: ; case 1: ; break; default: ;(可省) 2)當前面條件均不成立時,switch執(zhí)行default后的語句而if執(zhí)行else后的語句,兩個關(guān)鍵字均可省;但default的位置可調(diào)整,放到case之前運行結(jié)果不會不同;而else則不可.int a
26、=6;switch(a)case 1:printf(“1”);break; default :printf(“2”);break; case 6:printf(“3”);main()int a=6;if (a=1)printf(1);else printf(2);else if(a=6)printf(3);3)If結(jié)構(gòu)中至多只能執(zhí)行一條語句,執(zhí)行完即結(jié)束,而對于switch結(jié)構(gòu),找到符合條件的位置即找到入口,如不遇break語句則從入口處按從上至下的順序,執(zhí)行到該結(jié)構(gòu)結(jié)束int a=6;switch(a)case 1:printf(“1”);break; case 6:printf(“3”);
27、default :printf(“2”);break;4)break語句在if結(jié)構(gòu)中不能使用1)If與else的匹配原則(就近,else之上,沒有其它if與之匹配):由上至下,從第一個else找匹配的2)If嵌套的讀題順序:匹配、從外向內(nèi)執(zhí)行 #include void main() unsigned int year,leap; printf(“enter year:”); if(year%400=0) leap =1; else if(year%4=0&year%100!=0) leap=1; else leap = 0; if(leap=1) printf(“%d:is a leap y
28、ear.”,year); else printf(“%d is not a leap year.”,year );程序1:main() float x; int y; scanf(“%f”,&x); if (x0) y=1;else y=0;總結(jié):第四章,選擇題20-25中1-2題,填空題1-2題1)有以下程序 #include main() int a=1,b=2,c=3,d=0; if (a=1&b+=2) if (b!=2|c-!=3) printf(”%d,%d,%dn,a,b, c); else printf(%d, %d, %dn.,a,b, c); else printf(%d,
29、 ad,%dn,a,b,c); 程序運行后的輸出結(jié)果是(09.3)A) 1,2,3 B) 1,3,2 C) 1,3,3 D ) 3,2,1C2)以下程序段中,與語句:k=ab?(bc?1:0):0;功能相同的是(09.9)A)if(ab)&(bc)k=1;B) if(ab)|(bc)k=1; else k=0; else k=0; C) if(ab) k=1; else if(bc) k=1; else k=0;A3)以下選項中與if(a=1)a=b; else a+;語句功能不同的switch語句是(10.3)A)switch(a) case 1:a=b;break;default:a+;B
30、)switch(a=1) case 0:a=b;break;case 1:a+;C)switch(a) default:a+;break;case 1:a=b;D)switch(a=1) case 1:a=b;break;case 0:a+;B4)沒有定義:int a=1,b=2,c=3;以下語句中執(zhí)行結(jié)果與其它三個不同的是(09.9)A)if(ab) c=a,a=b,b=c; B)if(ab) c=a,a=b,b=c;C)if(ab) c=a;a=b;b=c; D)if(ab) c=a;a=b;b=c;C5)有如下嵌套的if語句if (ab)if(ac)k=a;else k=c;elseif
31、(b0)6x+1(6x0)x(x=6)五、循環(huán)結(jié)構(gòu)程序設(shè)計1.for循環(huán)結(jié)構(gòu)。2.while和do-while循環(huán)結(jié)構(gòu)。3.continue語句和break語句。4.循環(huán)的嵌套。5.相關(guān)習題1)while 格式 表達式語句0非0實例: main() int x=1; s=0; while(x5) s=s+x; x+; printf(“%dn”,s); 流程圖:2)dowhiledowhile的先執(zhí)行與while的先判斷結(jié)果可能會有所不同注意區(qū)別 main() int x=1; s=0; while(x5) do s=s+x; s=s+x; x+; x+; printf(“%dn”,s); wh
32、ile(x5); printf(“%dn”,s);區(qū)別: (1)格式 ,特別是分號 (2)判斷條件的先后,有時會影響程序的結(jié)果 (若上題中x的值被賦為6,結(jié)果是否有不同)語 句表達式0(假)非0(假)流程圖:2)for(賦初值;循環(huán)結(jié)束的條件;控制變量的變 化)求解表達式1表達式2語 句求解表達式3for 語句的下一語句假真(2)三個表達式可省,但分號不能省 for ( ; i = 100 ; i + +) for ( i = 1; ; i + +) for ( i = 1; i = 100 ; ) for ( ; i = 100 ; ) for ( ; ; ; ) for(k=0,m=1;i
33、=1;i+,j+ )main() int x=1; s=0; while(x5) for(x=1,s=0;x5;x+) s=s+x; s=s+x; x+; printf(“%d”,s); printf(“%dn”,s); (1)注意for循環(huán)執(zhí)行順序?qū)嵗簃ain() float x=1,s=0; for(;x6) for(y=1;y=2;y+) s=s+x; x-; printf(“%d”,s); 3)continue結(jié)束本次循環(huán),break結(jié)束個循環(huán),但注意在循環(huán)嵌套中只結(jié)束本層循環(huán). for(i=1;i=3;i+) for(j=1;j=2;j+) if(i=1) break; print
34、f(“%dn”,j);for(i=1;i=3;i+) for(j=1;j=2;j+) if(j =2) continue; printf(“%dn”,j);for(i=1;i=3;i+) if(i=3) break; printf(“%dn”,i);for(i=1;i=3;i+) if(i=3) continue; printf(“%dn”,i);5)常用算法:(1)累加求和題(2)圖形輸出題(3)查找題 (4)取某個數(shù)或某組數(shù)的每位數(shù)字累加求和題基本思路:找規(guī)律,找加數(shù)變化規(guī)律1)找出相鄰加數(shù)之間值的變化規(guī)律 2)或者加數(shù)與項數(shù)之間值的變化規(guī)律經(jīng)典例題:1+3+5+7+9+.+101 (s
35、= 0) for(i=1;i=101;i+=2) for(i=1;i=51;i+) s=s+i; s=s+2*i-1; 2/1-3/2+5/3-8/5+13/8-. flag = 1;a=2;b=1; for(i=1;i=20;i+) s = s+flag*a/b t=a; a=a+b;b=t; flag=-flag;main() double f,k;int m,i,j; scanf(%d,&n); for (i=1,f=0;i=n;i+) k=1; for (j=2;j=i;j+) k=k+j; f=f+1.0/k; printf(%f,f);main() double f,k;int m
36、,i,j; scanf(%d,&n); for (k=1,i=2,f=1;i=n;i+) k=k+i; f=f+1.0/k; printf(%f,f);s=1+1/(1+2)+1/(1+2+3)+.+1/(1+2+3+4+.+n)若把f的初值改為0main() double f,k;int m,i,j; scanf(%d,&m); k=1; for (i=1,f=1;i=m;i+) k=k*i; f=f+1.0/k; printf(%f,f);fn=1+1/1!+1/2!+1/3!+.+1/m!#includedouble fun(int m)main() int m;double f; FI
37、LE *out; printf(“Input m:”); scanf(“%d”,&m) f = fun(m);printf(“F=%fn”,f);out =fopen(“outfile.dat”,”w”);for(m=10;m10;m+) fprintf(out,”%fn”,fun(m);fclose(out);請編寫程序,它的功能是計算下列級數(shù)和,和值等于 s=x/1+x2/2!+x3/3!+xn/n!當n=10、x=0.3時,函數(shù)值為1.349859下列給定程序中,函數(shù)fun()的功能是:根據(jù)整型形參m的值,計算如下公式的值: 1-1/4-1/9-1/16.-1/(n*n) 請改正函數(shù)fu
38、n()中的錯誤,使它能得出正確的結(jié)果。 注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。 試題程序: #include #include #include double fun(int m) double y=1.0; int I; /*found*/ for(I=2;Im;I+) /*found*/ y-=1/(I*I); return(y); void main() int n=5; system(CLS); printf(nThe result is %1fn, fun(n);圖形輸出題 * * *main()int i,j; for(i=1;i=3;i+) for(j
39、=1;j=3-i;j+) printf( ); for (j=1;j=2*i-1;j+) printf(*); printf(n);基本思路:1)確定行數(shù),從而確定外層循環(huán)的次數(shù); 2)找出每行列數(shù)與行號之間的規(guī)律,從而寫出內(nèi)層循環(huán);3)找出每行空格數(shù)與行號之間的規(guī)律,從而確定每行起始位置。輸出九九乘法表1*1=1 1*2=2 2*2=41*3=3 2*3=6 3*3=91*4=4 2*4=8 3*4=12 4*4=161*5=5 2*5=10 3*5=15 4*5=20 5*5=251*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=361*7=7 2*7=14 3*
40、7=21 4*7=28 5*7=35 6*7=42 7*7=491*8=8 2*8=16 3*8=24 4*8=24 5*8=40 6*8=48 7*8=56 8*8=641*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81for(i=1;i=9;i+) for(j=1;j=i;j+) printf(“%d*%d=%d ”,j,i,i*j); printf(“n”);查找題基本思路:窮舉法,通常外層循環(huán)表示查找范圍,而內(nèi)層用選擇結(jié)構(gòu)表示查找條件,但有時,測試時也需要使用循環(huán).輸入所有的1100之間的偶數(shù),并求出它們的平均數(shù)m
41、ain() int x,ave=0,num=0;for(x=1;x=100;x+) if(x%2!=0) continue; printf(“%d ”,x); ave = ave+x; num+;printf(“ave=%d”,ave/num);編程:輸出1到m(含m)之內(nèi)能被7或11整除的所有整數(shù),并計算個數(shù)。 例如,若賦值給m的值為50,則程序輸出: 7 11 14 21 22 28 33 35 42 44 49 判斷一個數(shù)是否是素數(shù)計算并輸出3到n(包括3和n)之間的素數(shù)的平方根之和 main() int i,j; float s;scanf(“%d”,&n); for(i=3;i=n;
42、i+) for(j=2;ji;j+) if(i%j=0) break; if(j=i) s=s+sqrt(i); main() int i,j; float s;scanf(“%d”,&n); for(i=3;i=n;i+) for(j=2;jsqrt(i);j+) if(i%j=0) break; if(j=i) s=s+sqrt(i); main() int i,j,flag; float s;scanf(“%d”,&n); for(i=3;i=n;i+) flag=0; for(j=2;jsqrt(i);j+) if(i%j=0) flag=1; break; if(flag=0) s=
43、s+sqrt(i);實現(xiàn)求1000以內(nèi)的自然數(shù)中的完數(shù)及其個數(shù)(所謂完數(shù),指它恰好等于除它本身之外的因子之和,如:6=1+2+3,28=1+2+4+7+14),并顯示結(jié)果 main()int i,k,s,num=0; for(i=2;i=1000;i+) s=0; for(k=1;k=i/2;k+) if(i%k=0) s=s+k; if(s=i) printf(%d,i);num+; printf(nnum=%d,num);取數(shù)字任意輸入一個數(shù),請把它的每位數(shù)字逆序輸出例如:356 輸出 6 5 3main() int x,m; scanf(“%d”,&x); while (x!=0) m
44、= x%10; x=x/10;printf(“%dt”,m); 基本思路:通過與10相除,逐次降低每位的位權(quán)找出三位數(shù)中所有的”水仙花數(shù)”,輸出并統(tǒng)計個數(shù);水仙花數(shù)是指3位數(shù)的各位數(shù)字的立方和等于這個數(shù)本身.例如,153=1*1*1+5*5*5+3*3*3main()int i,m,k,s,num=0; for(i=100;i=999;i+) s=0;m=i; while(m!=0) k=m%10; m=m/10; s=s+k*k*k; if(i=s) printf(%d,i);num+; printf(nnum=%d,num); 編程:將長整型數(shù)中每一位上為奇數(shù)的數(shù)依次取出,構(gòu)成一個新數(shù)放在
45、t中。高位仍在高位,低位仍在低位。例如當原來的數(shù)為87653142時,新的數(shù)為7531。 下列給定程序中函數(shù)fun的功能是:計算正整數(shù)num各位上的數(shù)字之積。例如,若輸入252,則輸出應該是20。若輸入202,則輸出應該是0。 請改正程序中的錯誤,使它能得出正確的結(jié)果。 注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。 試題程序: #include #include long fun(long num) /*found*/ long k; do k *=num%10; /*found*/ num =10; while(num); return(k); main() int n
46、; printf(Please enter a number: ); scanf(%ld,&n); printf(n%ldn,fun(n);(1)有以下程序#include main( ) char c1,c2; scanf(“%c”,&c1);while(c190) scanf(“%c”,&c1); c2=c1+32;printf(“%c, %cn”,c1,c2);程序運行輸入65回車后,能否輸出結(jié)果、結(jié)束運行(請回答能或不能)【 】(09.3)不能2)有以下程序include(stdio.hmain()int al;b2;for(;a8;a+) b+=a;a+=2;printf(%d,%d
47、n,a,b);程序運行后的輸出結(jié)果是(10.3)A)9,18 B)8,11 C)7,11D)10,14D3)有以下程序#includemain()int i,j; for(i=3;i=1;i-) for(j=1;j=2;j+) printf(“%d”,i+j); printf(“n”);程序運行結(jié)果是(08.9)A)2 3 4 B)4 3 2 C) 2 3 D)4 5 3 4 5 5 4 3 3 4 3 4 4 5 2 3D4)有以下程序includestdio.h main()in i,j,m=1;for(i=1;i3;i+)for(j=3;j0;j-) if(i*j)3)break; m=
48、i*j;printf(m=%dn,m);程序運行后的輸出結(jié)果是(10.3)A)m=6 B)m=2 C)m=4D)m=5A5)以下程序的功能是:將值為三位正整數(shù)的變量x中的數(shù)值按照個位、十位、百位的順序拆分并輸出。請?zhí)羁铡?10.3)#include main() int x=256; printf(%d-%d-%dn, 【 】 x/10%10,x/100);X%10結(jié)束七、函數(shù) 1.庫函數(shù)的正確調(diào)用。2.函數(shù)的定義方法。3.函數(shù)的類型和返回值。4.形式參數(shù)與實在參數(shù),參數(shù)值傳遞。5.函數(shù)的正確調(diào)用,嵌套調(diào)用,遞歸調(diào)用。6.局部變量和全局變量。7.變量的存儲類別(自動,靜態(tài),寄存器,外部),變量
49、的作用域和生存期。調(diào)用格式1)函數(shù)語句:把函數(shù)調(diào)用作為一個語句。 printf( );2) 函數(shù)表達式 函數(shù)出現(xiàn)在一個表達式中,這種表達式稱為函數(shù)表達式。 這時要求函數(shù)帶回一個確定的值以參加表達式的運算。 例如: c=2*sin(a);3) 函數(shù)參數(shù) 函數(shù)調(diào)用作為一個函數(shù)的實參。 printf(“%d”,fabs(-1);注意:頭文件 定義格式 函數(shù)類型 函數(shù)名(參數(shù)類型 參數(shù) 名, , 參數(shù)類型 參數(shù)名)1、 無參函數(shù)的定義形式 類型標識符 函數(shù)名() 聲明部分 語句 2、 有參函數(shù)的定義形式類型標識符 函數(shù)名(形式參數(shù)表列) 聲明部分 語句print_message( )printf( “
50、How do you do ! n” );int max( int x,int y ) int z ; z = x y ? x : y ; return( z ) ;main() int x,y; scanf(“%d”,&x); y=x*x;printf(“%d”,y) ;int fun(int a) int b; b=a*a; return(b);main() int x,y; scanf(“%d”,&x); y=fun(x);printf(“%d”,y) ; 編寫一個函數(shù),由參數(shù)傳入一個整數(shù),計算該數(shù)的各位數(shù)字之積。main() int x,y,z=1; scanf(“%d”,&x); f
51、or( ;x!=0; ) y=x%10; z=z*y; x=x/10; printf(“%d”,z);說明:1)定義時部分可省,請注意省略后默認的含義 2)自定義函數(shù)定義的位置(任意位置) 3)不能嵌套定義(可以嵌套調(diào)用)int max(int x,int y) int min(int x,int y) return (xy?x:y) 一.函數(shù)類型 函數(shù)類型主要指的是函數(shù)返回值的類型,定義時確定1)如果在定義函數(shù)時不指定函數(shù)類型,系統(tǒng)會隱含指定函數(shù)類型為int型 2)在定義函數(shù)時對函數(shù)說明的類型一般應該和return語句中的表達式類型一致。如果不一致,則以函數(shù)類型為準。對數(shù)值數(shù)據(jù),可以自動進行
52、轉(zhuǎn)換。即函數(shù)類型決定返回值的類型。 float f() int f() . return 1; return 1.5; 二.函數(shù)的返回值 1)函數(shù)的返回值是通過函數(shù)中的return語句獲得的。return 語句將被調(diào)用函數(shù)中的一個確定的值帶回主調(diào)函數(shù)中去 格式: return (表達式);或 return 表達式; 例: max(int x,int y) return(xy?x:y); 2)如果不需要從被調(diào)用函數(shù)帶回函數(shù)值可以不要return語句或者return; 語 句。此時函數(shù)并不是不帶回值,而只是不帶回有用的值,帶回的是一個不確定的值。3)為了明確表示“不帶回值”,可以用void(空類型
53、或無類型)void printstar( ) void print_message( ) 則下面的用法就是錯誤的: a=printstar(); b=print_message();注意:如果出現(xiàn)多個 return 語句,且不是出現(xiàn)在選擇結(jié)構(gòu)的各個分支中,則系統(tǒng)會自動執(zhí)行第一個return語句,其它的不被執(zhí)行main() main() . return 3; if (xy) return 1; return 6; else return 2;1) 以下關(guān)于return語句的敘述中正確的是(10.3) A)一個自定義函數(shù)中必須有一條return語句B)一個自定義函數(shù)中可以根據(jù)不同情況設(shè)置多條re
54、turn語句C)定義成void類型的函數(shù)中可以有帶返回值的return語句D)沒有return語句的自定義函數(shù)在執(zhí)行結(jié)束時不能返回到調(diào)用處B2)以下敘述中錯誤的是(08.9)A)用戶定義的函數(shù)中可以沒有return語句B)用戶定義的函數(shù)中可以有多個return語句,以便可以調(diào)用一次返回多個函數(shù)值C)用戶定義的函數(shù)中若沒有return語句,則應當定義函數(shù)為void類型D)函數(shù)的return語句中可以沒有表達式B3.參數(shù)1)類型:形參:各種基本類型變量、數(shù)組、指針變量實參:各種基本類型變量、常量、數(shù)組、數(shù)組元素、指針變量2)形參和實參必須個數(shù)相同、類型一致3)方式(1)值傳遞:形參變化不影響實參
55、int f(int a,int b) a=a*a; b=b*b; printf(“%d,%d”,a,b); main( ) int x=2,y=3; f(x,y); printf(“%d,%d”,x,y);(2)地址傳遞2323xyab491).有以下程序#include void fun(int p) int d=2 ;p=d+; printf(“%d”,p);main()int a=1;fun (a); printf(“%dn”,a);程序運行后的輸出結(jié)果是(09.9) A) 32 B) 12 C) 21 D) 22 C2)有以下程序 fun(int x,int y)return(x+y)
56、; main()int a=1,b=2,c=3,sum; sum=fun(a+,b+,a+b),c+); printf(“%dn”,sum);執(zhí)行后的輸出結(jié)果是(06 9)A) 6 B) 7 C) 8 D) 9C3)若函數(shù)調(diào)用時的實參為變量時,以下關(guān)于函數(shù)形參和實參的敘述中正確的是(07.9)A)函數(shù)的實參和其對應的形參共占同一存儲單元B)形參只是形式上的存在,不占用具體存儲單元C)同名的實參和形參占同一存儲單元D)函數(shù)的形參和實參分別占用不同的存儲單元D4)下面的函數(shù)調(diào)用語句中func函數(shù)的實參個數(shù)是 (08 9) func(f2(v1,v2),(v3,v4,v5),(v6,max(v7,v
57、8);A)3 B) 4 C) 5 D) 8A一.函數(shù)調(diào)用函數(shù)調(diào)用的一般形式為 函數(shù)名(實參表列)1)如果是調(diào)用無參函數(shù),則“實參表列”可以沒有,但括弧不能省略, 如果實參表列包含多個實參,則各參數(shù)間用逗號隔開。 實參與形參的個數(shù)應相等,類型應一致。 實參與形參按順序?qū)?一傳遞數(shù)據(jù)。int f( int x,int y) .main()int a=5,b=4; f(a,b);2)函數(shù)語句:把函數(shù)調(diào)用作為一個語句。 print_star( );3) 函數(shù)表達式 函數(shù)出現(xiàn)在一個表達式中,這種表達式稱為函數(shù)表達式。 這時要求函數(shù)帶回一個確定的值以參加表達式的運算。 例如: c=2*max(a,b
58、);4) 函數(shù)參數(shù) 函數(shù)調(diào)用作為一個函數(shù)的實參。 m=max(a,max(b,c);又如: printf(“%d”,max(a,b);5)被調(diào)函數(shù)的特點 (1) 必須是已經(jīng)存在的函數(shù)(是庫函數(shù)或用戶自己定義的函數(shù))。 (2)如果使用庫函數(shù),一般還應該在本文件開頭用#include命令 將調(diào)用有關(guān)庫函數(shù)時所需用到的信息“包含”到本文件中來。(3)如果使用用戶自己定義的函數(shù),而且該函數(shù)與調(diào)用它的函 數(shù)(即主調(diào)函數(shù))在同一個文件中,一般還應該在主調(diào)函數(shù)中對被調(diào)用的函數(shù)作聲明,即向編譯系統(tǒng)聲明將要調(diào)用此函數(shù),并將有關(guān)信息通知編譯系統(tǒng)。6)函數(shù)聲明(1)格式: 函數(shù)類型 函數(shù)名(參數(shù)類型1,參數(shù)類型2)
59、 在函數(shù)聲明中也可以不寫形參名,而只寫形參的類型。例: float f(int a,int b); float f(int ,int );(2)位置:在變量定義之前或之后,但必須在其它執(zhí)行語句之前(3)省略:函數(shù)類型為int或char; 函數(shù)定義在調(diào)用之前1)下列敘述中錯誤的是(06.4) A)C 程序必須由一個或一個以上的函數(shù)組成 B)函數(shù)調(diào)用可以作為一個獨立的語句存在 C)若函數(shù)有返回值,必須通過 return 語句返回 D)函數(shù)形參的值也可以傳回給對應的實參 D 下列給定的程序中,函數(shù)fun的功能是:計算并輸出k以內(nèi)最大的10個能被13或17整除的自然數(shù)之和。k的值由主函數(shù)傳入,若k的值
60、為500,則函數(shù)的值為4622。 請改正程序中的錯誤,使它能得出正確的結(jié)果。 注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。 試題程序: #include #include #include int fun(int k) int m=0,mc=0, j; while(k=2)&(mc10) /*found*/ if(k%13=0)|(k%17=0) m=m+k;mc+; k-; /*found*/ return m; void main() system(CLS); printf(%dn ,fun(500); 試題程序: #include #include #include
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度債權(quán)債務資產(chǎn)保全執(zhí)行合同
- 2025年度離婚財產(chǎn)分割及子女成長環(huán)境優(yōu)化協(xié)議書
- 二零二五年度美容儀器加盟保證金及售后服務合同
- 2025年度跨境電商平臺員工勞動合同解除書
- 二零二五年度公益歌曲委托創(chuàng)作與宣傳推廣合同
- 二零二五年度特殊工種員工合同解除及職業(yè)康復協(xié)議
- 二零二五年度拆遷補償安置房產(chǎn)分配協(xié)議及租賃權(quán)證辦理
- 2025年度牛羊養(yǎng)殖場動物防疫與疾病防治合同
- 2025年度能源顧問合作協(xié)議
- 工傷賠償協(xié)議書(2025年度)賠償標準說明
- 小學利潤問題應用題100道附答案(完整版)
- 醫(yī)院智能化系統(tǒng)內(nèi)網(wǎng)、外網(wǎng)及設(shè)備網(wǎng)系統(tǒng)拓撲圖-可編輯課件
- 車庫租賃合同
- 小學生心理健康主題家長會
- 社交禮儀-儀態(tài)禮儀
- 安徽省2024年中考語文真題試卷【附答案】
- QB/T 4031-2024 阻燃性汽車空氣濾紙(正式版)
- 2024年南京科技職業(yè)學院單招職業(yè)適應性測試題庫帶答案
- DB52-T 1780-2024 醬香型白酒安全生產(chǎn)規(guī)范
- 2024年皖西衛(wèi)生職業(yè)學院單招職業(yè)適應性測試題庫及參考答案
- 線蟲病疫木及異??菟浪蓸涮幹猛稑朔桨福夹g(shù)方案技術(shù)標)
評論
0/150
提交評論