版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
C語言程序設(shè)計(1-6章)C語言程序設(shè)計第1章概論1.1C語言有哪些主要特點?其主要用途是什么?1.2程序設(shè)計語言的主要構(gòu)成要素有哪些?1.3程序設(shè)計語言的實現(xiàn)都有哪些方法?1.4程序設(shè)計語言按照實現(xiàn)方法可分為哪幾種類型?1.5為什么要學習程序設(shè)計語言?1.6將C語言和你所掌握的高級語言做一比較。1.7C程序的主要構(gòu)成單位是什么?1.8C語言的保留字和特定字有何區(qū)別?1.9下面哪些是合法的C語言一般標識符?std-sex,Std-num,2.13,_2.13,name,int,Int,var-num,yes_or_no,select,File_name,_DATA,define,a+c,new,ok?1.10C程序從編輯到執(zhí)行要經(jīng)過哪些步驟?1.11C函數(shù)主要由哪幾部分構(gòu)成?復合語句在C語言中是用什么標界的?又稱為什么?1.12填空。1.一個C程序是由若干個函數(shù)構(gòu)成的,其中必須有一個函數(shù)。2.一個C語句最少應(yīng)包含一個。1.13單項選擇。1.C語言程序的基本單位是()。(1)子程序(2)程序(3)過程(4)函數(shù)2.合法的C語言標識符是()。(1)_a1(2)a+b(3)3abc(4)AB,CD答案:C語言主要用于編寫系統(tǒng)軟件,其主要特點如下:語言簡潔,緊湊,使用靈活運算符豐富具有數(shù)據(jù)類型構(gòu)造和流控結(jié)構(gòu)能力語言生成的代碼質(zhì)量高可移植性好語言語法限制不嚴格,程序設(shè)計自由度大1.2程序設(shè)計語言的主要構(gòu)成要素有:數(shù)據(jù)。運算(操作)控制結(jié)構(gòu)存儲答理固運算環(huán)境。1.3程序設(shè)計語言的實現(xiàn)方法主要有:1.翻譯或編譯。2.軟件模擬(軟件解釋)。1.4程序設(shè)計語言的按照實現(xiàn)方法有編譯型和解釋型兩種。1.5略1.6略1.7C程序的主要構(gòu)成單位是函數(shù)。C語言程序設(shè)計(1-6章)全文共32頁,當前為第1頁。1.8C程序的保留字和特定字的區(qū)別是,保留字不能用來表示用戶自定義的對象,而特定字卻不受此限(盡管不提倡這樣做)。C語言程序設(shè)計(1-6章)全文共32頁,當前為第1頁。1.9合法的一般標識符如下:name,int,yes_or_no,select,File_name,_DATA,new1.10要經(jīng)過編輯程序一C預處理程序一C編譯程序一匯編程序一連接程序一執(zhí)行。1.11函數(shù)主要由返回值類型,函數(shù)名及參數(shù)列表構(gòu)成。復合語句是用{}來標界的,又稱為作用域。1.121.main2.;1.131.(4)2.(1)第2章C語言的基本數(shù)據(jù)類型和變量的存儲類2.1填空1.‘a(chǎn)’占_______字節(jié)。2.“a”占_______字節(jié)。3.字符串“ab\072cdef”的長度_______。4.字符串“\”33abcdef”的長度_______。5.字符串“abc\0defgh”的長度_______。6.字符串“\\033abceL”的長度_______。7.字符串“\\\n33abcd”的長度_______。8.字符串“\033abcdef”的長度_______。9.格式字符%d表示輸出_________型數(shù)據(jù)。10.格式字符%f表示輸出_________型數(shù)據(jù)。2.2何為常量?何為變量?變量的命名規(guī)則是什么?2.3指出下列變量定義的錯誤所在。1.charactera1,a2,a3;2.chara1,inti;3.a(chǎn)1,a2,a3:char;4.integeri1,i2,i3;5.realr1,r2;6.doubleinta1,a2;7.doublefloatf1,f2;8.floatif;2.4指出下列符號,數(shù)字串所屬的數(shù)據(jù)類型:0,0.0,012,102,0x123,0XABC,2E-6,6.02e23,‘a(chǎn)’,-128,+1,35C語言中的八進制和十六進制常數(shù)為什么不以字母‘O’和‘H’為前綴而要以‘O’和‘Ox’為前綴呢2.6既然變量名不管是什么,在編譯之后都變成了地址,那么為什么要限制其不能為保留字呢?2.7用作變量名的標識符的長度是由操作系統(tǒng)決定的還是由C編譯程序決定的?2.8任何類型的數(shù)據(jù)在計算機內(nèi)部都是采用什么形式存儲的?為什么要說明變量的類型?2.9C語言為什么要規(guī)定“先定義,后使用”,這樣有什么好處。2.10將下面的十進制常數(shù)分別表示為C語言中的八進制和十六進制常數(shù):C語言程序設(shè)計(1-6章)全文共32頁,當前為第2頁。32,75,-617,10,-128,1024,-1234,256C語言程序設(shè)計(1-6章)全文共32頁,當前為第2頁。2.11字符常量以字符串常量有什么區(qū)別?如何區(qū)分普通整型常量和長整型常量?C中實型常量有無float和double之分?2.12填空1.在________定義的變量的作用域局部于該函數(shù)。2.某函數(shù)內(nèi)定義的變量的作用域是____________3.一個函數(shù)內(nèi)部定義的變量是___________.4.C語言中的存儲類別包含________,_________,____________和_____________.2.13單項選擇一個文件中定義的全局變量的作用域為()(1)本程序的全部范圍(2)本文件的全部范圍(3)函數(shù)內(nèi)全部范圍(4)從定義該變量的位置開始開始到本文件結(jié)束2.14變量都具有哪些屬性?如何確定一個變量的屬性?2.15變量的存儲類有哪幾種?試指出各種變量的作用域。2.16采用靜態(tài)存儲分配的變量有哪些?采用動態(tài)存儲分配的變量有哪些?2.17變量的“定義”和“說明”是否是同一種概念?如不同,試指出他們之間的區(qū)別?2.18判斷下列說法是否正確:1.一個函數(shù)中定義的變量對其他函數(shù)都是可見的。2.一個函數(shù)中定義的變量對其他函數(shù)都是不可見的。3.一個函數(shù)中說明的變量對其他函數(shù)都是可見的。4.一個函數(shù)中說明的變量對其他函數(shù)都是不可見的。5.main函數(shù)中定義的auto變量對其他函數(shù)來說都是可見的。6.main函數(shù)中定義的auto變量對其他函數(shù)來說都是不可見的。7.main函數(shù)中定義的static變量對其他函數(shù)來說都是可見的。8.main函數(shù)中定義的static變量對其他函數(shù)來說都是不可見的。9.在一個函數(shù)中可以通過保留字extern來定義外部變量。10.同一個函數(shù)中的變量不能重名。2.19在程序中用一條賦值語句對變量賦初值和在定義該變量時對其初始化有何不同?答案:2.11.12.23.84.105.106.107.98.89.十進制整10.十進制實2.2略,2.3將有錯誤的糾正如下:1.charal,a2,a3;2.charal;int1;3.chara1,a2,a3;4.intil,i2,i3;5.floatrl,r2;6.doubleal,a2;或intal,a2;7.doublefl,f2;或floatf1,f2;8.if為保留字,不能用作變量名.2.4略。2.5避免和變量名發(fā)生混淆。C語言程序設(shè)計(1-6章)全文共32頁,當前為第3頁。2.6便于C編譯程序在對源程序編譯時正確地區(qū)分保留字和變量。C語言程序設(shè)計(1-6章)全文共32頁,當前為第3頁。2.7由C編譯程序決定。2.8采用二進制形式存儲,說明變量的類型是為了對變量進行存儲分配和合法的操作。2.9便于C編譯程序在對源程序的編譯時進行語法檢查。2.10(32)10=(40)8=(20)16(75)10=(113)8=(4b)16(-617)10=(37777776627)8=(fffffd97)16(10)10=(12)8=(a)16(-128)10=(37777777600)8=(ffffff80)16(1024)10=(2000)8=(400)l6(-1234)10=(37777775456)8=(fffffb2e)16(256)10=(400)8=(100)16提示:用戶可以在MSVC+t-6.0的環(huán)境下使用printf(”%o\n”,X);printf(”%x\n”,X);實際驗證一下,同學們可能覺得,負數(shù)的結(jié)果有些不可思議,原因就在于負數(shù)在計算機中使用補碼存儲的。2.11字符串常量沒有特定的詞來定義,需要用數(shù)組來定義,字符常量用“char”來定義。字符串常量用“雙引號”,而且字符串使用‘\0'作為結(jié)束符。字符常量用“單引號”。字符串是由字符常量組成的。在MSVC++6.0環(huán)境下,普通整型和長整型的長度是一樣的。2.12.1.函數(shù)內(nèi)2.定義該變量的語句所在的“塊”3.局部變量4.Auto,register.,static和extern2.13(1)2.14略2.15略2.16采用靜態(tài)存儲分配的變量有static和extem變量,采用動態(tài)存儲分配的變量有auto和register變量。2.17變量的“定義”和“說明”是有區(qū)別的,變量只能被“定義”一次,但卻能被“說明”多次。變量的“定義”決定了變量真正的類型和存儲分配。2.181.錯2.對3.對4.錯5.錯6.對7.錯8.對9.錯10.錯2.19變量的“初始化”總是在對變量存儲分配后緊跟著進行的。如果變量采用“靜態(tài)存儲分配”,則其“初始化”是在編譯時完成;如果變量采用“動態(tài)存儲分配”,則其“初始化”是在運行時完成。而用賦值語句對變量“賦值”則總是在運行時完成。第3章運算和表達式3.1寫出下列表達式運算之后a的值(設(shè)開始時a=5)1.a+=a2.a=(a--)+33.a++4.a%=a5.a=a+=2*36.a+=a-=a*=a=63.2寫出下面程序的執(zhí)行結(jié)果Main(){intm,n,k;k=0;n=k+1;m=k*=2;printf(“m=%d,n=%d,k%=d\n”,m,n,k);C語言程序設(shè)計(1-6章)全文共32頁,當前為第4頁。}C語言程序設(shè)計(1-6章)全文共32頁,當前為第4頁。3.3求下列表達的值(設(shè)a=5,b=3;floatx=2.5,y=3.7)1.(x*a++)-y)/2.0+a%b2.(x+y)/2-a%23.(int)(x+y)*(a+b)/3+‘a(chǎn)’-‘d’4.(a+b)-(int)(x+y)+515.++a*b--/x-y6.++a,b*=2,x+y,x-y,x+y+a+b3.4C語言在有了+,-,*,/,=運算符之后,為什么還要提供++,--,+=,-=,*=和/=運算符?3.5單項選擇1.表達式求值()x+a%3*(int)(x+y)%2/4其中x=2.5,a=7,y=4.7(1)2.5(2)2.75(3)3(4)3.52.表達式求值()a/b?a+b:b-a其中a=2,b=4(1)0.5(2)6(3)2(4)03.表達式求值()(a+b)/2+(int)x%(int)y其中a=2,b=3,x=3.5,y=2.5(1)3(2)3.5(3)4.25(4)2.54.表達式求值()2+(x++>y?3.0:5.0)/2其中x=3,y=3(1)3.5(2)3(3)4(4)4.55.表達式求值()1/2*x+20%3*(x=y)/16其中x=3.0,y=4(1)0.5(2)2.0(3)0.0(4)1.56.表達式求值()a++-c+b++其中a=3,b=-4,c=5(1)-3(2)-4(3)-5(4)-67.表達式求值()++a-c+b++其中a=3,b=-4,c=5(1)-3(2)-4(3)-5(4)-68.表達式求值()a+b,b*5,a=b+4其中a=3,b=-4(1)-1(2)-20(3)0(4)-43.6給出例3.7和例3.8的執(zhí)行結(jié)果,并對結(jié)果進行合理的解釋答案:3.11.102.73.64.05.116.03.2m=0;n=1;k=03.31.12.652.2.13.134.535.3.56.18.23.4簡化程序書寫,提高代碼生成質(zhì)量3.51.(1)2.(3)3.(1)4.(4)5.(1)6.(4)7.(2)8.(3)3.6例3.7x=66,i=4,j=5例3.8x=116,i=4,j=5第4章語句及控制結(jié)構(gòu)4.1填空C語言程序設(shè)計(1-6章)全文共32頁,當前為第5頁。1.程序的三種控制結(jié)構(gòu)是___________,____________和_________C語言程序設(shè)計(1-6章)全文共32頁,當前為第5頁。2.一個賦值表達式最后加一個________就成了_________語句4.2單項選擇1.求標有/**/語句的執(zhí)行次數(shù)()intx=10;while(x++<20)x+=2;/**/(1)10(2)11(3)4(4)32.求標有/**/語句的執(zhí)行次數(shù)()Inty=0,x=2;do{y=x*x;/**/}while(++y<5);(1)5(2)4(3)2(4)13.求標有/**/語句的執(zhí)行次數(shù)()Inty,I;For(i=0;i<20;i++){If(i%2==0)continue;y+=I;/**/}(1)20(2)19(3)10(4)94.求標有/**/語句的執(zhí)行次數(shù)()Inty,I;For(i=0;i<20;i+=2){If(i%5!=0)break;y+=I;/**/}(1)20(2)19(3)5(4)15.求標有/**/語句的執(zhí)行次數(shù)()Intx,y;For(x=0,y=10;x++<y;y++)X*=2;/**/(1)10(2)4(3)17(4)36.求標有/**/語句的執(zhí)行次數(shù)()Intx=5,y=-5;While(x*y)y++;/**/(1)10(2)9(3)5(4)67.求標有/**/語句的執(zhí)行次數(shù)()Intx=1;While(x++<20)x+=3;/**/(1)4(2)5(3)6(4)74.3C語言主要有哪幾種控制結(jié)構(gòu)?C語言程序設(shè)計(1-6章)全文共32頁,當前為第6頁。4.4簡答題C語言程序設(shè)計(1-6章)全文共32頁,當前為第6頁。1.用while語句構(gòu)造一個for語句。2.用for語句構(gòu)造一個while語句。3.寫出for語句的工作流程。4.簡述break和continue語句的作用。5.用if和goto語句構(gòu)成do-while語句。6.簡述switch語句的功能。7.試比較while和do-while語句的異同。4.5打印出1900-2000年中所有的閏年。4.6編寫一個求兩個正整數(shù)a,b最高公因數(shù)的程序。4.7編寫一個求兩個正整數(shù)a,b最小公因數(shù)的程序。4.8編寫一個程序,其反復從鍵盤上讀入字符,如果讀入的是英文,則將其大小寫互換,然后輸出。否則,按原樣輸出。輸入空格符時,程序結(jié)束。4.9今有物,不知其數(shù);三三數(shù)之剩二,五五數(shù)之剩二。問至少物幾何?4.10編寫一個程序,驗證4-100的每一個偶數(shù)都可以表示為兩個素數(shù)之和。4.11甲,乙,丙三人分一堆西瓜。這堆西瓜中的一半又半個分給甲,剩下的再一半又半個分給乙,剩下的分給丙,但每次分時并沒有切開西瓜,問甲乙丙各得幾個西瓜。4.12求1-1/2+1/3-1/4+…+1/99-1/100,怎樣寫程序才能減少誤差?4.13小雞每只0.5元,母雞每只2元,公雞每只3元,100元錢要買100只雞,問共有幾種買法?4.14編寫程序,求一個求菲波那奇數(shù)列1,1,2,3,5,8,13,21,…第20項的結(jié)果并將結(jié)果輸出。4.15讀入一行字符,對其中的元音字符‘a(chǎn)’‘o’‘e’‘i’‘u’進行計數(shù),并輸出結(jié)果。4.16編寫程序,從鍵盤上讀入10個整數(shù),然后求出它們之間的最大者并輸出(讀入整形變量x可調(diào)用scanf庫函數(shù),形式為scanf(“%d,&x”))。4.17設(shè)計一個C程序,輸出序列中前n個數(shù),該序列滿足:(1)數(shù)1在序列中。(2)若x在序列中,則2x,3x,5x也在序列中。(3)序列中無其他數(shù)。4.18閱讀程序,寫出運行結(jié)果1.main(){Inti,s=0;i=1;do{if(i%3==0)s+=i;i++;}while(i<20);Printf(“s=%d\n”,s);}2.main(){Inti,s=0;i=0;lp:if(i%4==0)s+=i;C語言程序設(shè)計(1-6章)全文共32頁,當前為第7頁。i++;C語言程序設(shè)計(1-6章)全文共32頁,當前為第7頁。if(i<30)gotolp;printf(“s=%d\n”,s);}3.main(){Inti,n,s=0;For(i=0;i<20;i++)If(i%2==0)s+=i;Printf(“s=%d\n”,s);}4.main(){Inti,n,s=0;i=1;while(i<20){s+=i;i+=2;}Printf(“s=%d\n”,s);}答案:4.11.順序,分支,循環(huán)2.分號,表達式語句4.21.(3)2.(4)3.(3)4.(4)5.(4)6.(3)7.(2)4.3順序,分支,循環(huán)4.41.For(e1;e2;e3)s;可表示為:e1;while(e2){s;e3;}2.While(e)s;可表示為:For(;e;)s;3.For(e1;e2;e3)s;的流程是:(1)求解表達式e1.(2)如果表達式e2為“假”,則結(jié)束;否則轉(zhuǎn)(3)(3)執(zhí)行語句s(4)求解表達式e3,轉(zhuǎn)(2)4.break是結(jié)束循環(huán),即跳出循環(huán)語句;continue則是結(jié)束本次循環(huán),繼續(xù)執(zhí)行下一次循環(huán)。5.Dos;while(e);可表示為:Loop:S;If(e)gotoloop;C語言程序設(shè)計(1-6章)全文共32頁,當前為第8頁。6.并逐個與其后的常量表達式值比較,當表達式的值與某個常量表達式的值相等時,即執(zhí)行其后的語句,然后不再進行判斷,繼續(xù)執(zhí)行后面所有case后的語句。如果表達式的值與所有case后的常量表達式均不相同時,則執(zhí)行default后的語句。C語言程序設(shè)計(1-6章)全文共32頁,當前為第8頁。7.While是“先判斷,后執(zhí)行”,而dowhile是“先執(zhí)行,后判斷”4.5#include“stdio.h”Voidmain(){Intyear=1990;While(year<=2000){If((year%4==0&&year%100)||year%400==0)Printf(“%d\n”,year);year++;}}4.6#include“stdio.h”#include“stdlib.h”Voidmain(){inta,b,r;Printf(“inputintegera:”);Scanf(“%d”,&a);Printf(“inputintegerb:”);Scanf(“%d”,&b);If(!(a>0&&b>0)){Printf(“aandbmustbepositive!\n”);exit(1);}While(r=a%b){a=b;b=r;}Printf(“result=%d\n”,b);} 4.7設(shè)正整數(shù)a,b的最高公因數(shù)和最小公倍數(shù)分別為d,t,則有ab=dt,即有t=(ab)/b,程序如下:#include“stdio.h”#include“stdlib.h”Voidmain(){inta,b,r;Printf(“inputintegera:”);Scanf(“%d”,&a);Printf(“inputintegerb:”);C語言程序設(shè)計(1-6章)全文共32頁,當前為第9頁。Scanf(“%d”,&b);C語言程序設(shè)計(1-6章)全文共32頁,當前為第9頁。If(!(a>0&&b>0)){Printf(“aandbmustbepositive!\n”);exit(1);}p=a*b;While(r=a%b){a=b;b=r;}Printf(“result=%d\n”,p/b);} 4.8#include“stdio.h”#include<conio.h>Voidmain(){charch;While((ch=getch())!=‘’)If(ch>=‘a(chǎn)’&&ch<=‘z’)Putchar(ch-‘a(chǎn)’+‘A’);Elseif(ch>=‘A’&&ch<=‘Z’)Putchar(ch-‘A’+‘a(chǎn)’);ElsePutchar(ch)}將上面程序中的getch()用getchar()替換后,看看結(jié)果有什么不同。4.9#include“stdio.h”Voidmain(){intn=2;While(!(n%3==2&&n%5==3&&n%7==2))n++;Printf(“result=%d\n”,n);}4.10#include“stdio.h”is_prime(intn){intI;For(i=2;n%i;)i++;If(i==n)Return(1);ElseReturn(0);}Voidmain()C語言程序設(shè)計(1-6章)全文共32頁,當前為第10頁。{inti,j,n;C語言程序設(shè)計(1-6章)全文共32頁,當前為第10頁。Printf(“4=2+2\n”);For(n=6;n<=100;n+=2){i=3;j=n-i;while(!is_prime(i)||!is_prime(j)){i+=2;j=n-i}Printf(“%d=%d+%d\n”,n,i,j);}}4.11#include“stdio.h”#include“stdlib.h”Voidmain(){inta,b,c,n;Printf(“inputtotlenumberofthewater-melon:”);Scanf(“%d”,&n);If(n%2==0)gotoerr;a=n/2+1;n=n-a;If(n%2==0)gotoerr;b=n/2+1;c=n-b;printf(“A=%d,B=%d,C=%d\n”,a,b,c);exit(0);err:printf(“cannotdividethewater-melonstoA,B&Cwithoutcutting!\n”);}4.12為了減少誤差,應(yīng)盡量避免兩個相近的數(shù)相減。為此編程如下:#include“stdio.h”#include“stdlib.h”Voidmain(){floati,s1=0,s2=0;For(i=1;i<=100;i+=2){s1+=1/i;s2+=1/(i+1);}Printf(“result=%f\n”,s1-s2);}由于1-1/2+1/3+1/4+…+1/99-1/100C語言程序設(shè)計(1-6章)全文共32頁,當前為第11頁。=(1+1/2+…+1/99-1/100)-2(1/2+1/4+…+1/98-1/100)C語言程序設(shè)計(1-6章)全文共32頁,當前為第11頁。=1/51+1/52+1/53+…+1/99+1/100故也可編程如下:#include“stdio.h”Voidmain(){floati,s=0;For(i=51;i<=100;i++)s+=1/i;Printf(“result=%f\n”,s);}4.13#include“stdio.h”Voidmain(){inti,j,k;For(i=0;i<=33;i++)For(j=0;j<=33;j++){k=100-i-j;if(i*3+j*2+k*0.5==100)printf(“cock=%d,hen=%d,chick=%d\n”,i,j,k);}}4.14#include“stdio.h”Voidmain(){inti,j,r,n=20;For(i=1;j=1;n>2;--n){r=i+j;i=j;j=r;}Printf(“%d\n”,r);}4.15#include“stdio.h”#include<conio.h>Voidmain(){charch;Inta,o,e,i,u;a=o=e=i=u=0;while((ch=getch())!=‘\r’)switch(ch){Case‘a(chǎn)’:a++;break;C語言程序設(shè)計(1-6章)全文共32頁,當前為第12頁。Case‘o’:C語言程序設(shè)計(1-6章)全文共32頁,當前為第12頁。o++;break;Case‘e’:e++;break;Case‘i’:i++;break;Case‘u’:u++;}Printf(“thennumberof‘a(chǎn)’=%d\n”,a);Printf(“thennumberof‘o’=%d\n”,o);Printf(“thennumberof‘e’=%d\n”,e);Printf(“thennumberof‘i’=%d\n”,i);Printf(“thennumberof‘u’=%d\n”,u);}4.16#include“stdio.h”Voidmain(){inti,x,max;Scanf(“%d”,&max);For(i=0;i<10;i++){Scanf(“%d”,&x);If(x>max)max=x;}Printf(“Maxone=%d\n”,max);}4.17#include“stdio.h”#include“stdlib.h”Voidmain(){inti,j,n;Printf(“inputthenumbern:”);Scanf(“%d”,&n);If(n<=0){Printf(“nmustbeapositiveinteger!\n”);Exit(1);}i=0;while(n){j=++i;while(j%2==0)j/=2;while(j%3==0)j/=3;while(j%5==0)j/=5;if(j==1){C語言程序設(shè)計(1-6章)全文共32頁,當前為第13頁。printf(“%d\n”,i);C語言程序設(shè)計(1-6章)全文共32頁,當前為第13頁。n--;}}}4.181.s=632.s=1123.s=904.s=100第五章數(shù)組5.1填空標準C可以對_______或________數(shù)組在定義時賦初值。5.2選擇題1.設(shè)有數(shù)組定義:Chararray[]=“China”;則數(shù)組array所占的空間為______(1)4字節(jié)(2)5字節(jié)(3)6字節(jié)(4)7字節(jié)2.下列定義數(shù)組的語句中不正確的是_______(1)staticinta[2][3]={1,2,3,4,5,6};(2)staticinta[2][3]={{1},{4,5}};(3)staticinta[][3]={{1},{4}};(4)staticinta[][]={{1,2,3}{4,5,6}};3.以下能正確定義數(shù)組并正確賦初值的語句是_________(1)intN=5,b[N][N];(2)inta[1][2]={{1},{3}};(3)intc[2][]={{1,2},{3,4}};(4)intd[3][2]={{1,2},{34}};4.以下為一維整型數(shù)組a的正確說明是_______(1)inta(10)(2)intn=10,a[n](3)intn;(4)#defineSIZE10;Scanf(“%d”,&n);inta[SIZE];Inta[n];5.以下為二維整型數(shù)組a的正確說明是_______(1)inta[3][](2)floata(3,4)(3)doublea[1][4](4)floata(3)(4)6.若二維數(shù)組a有m列,則計算任一元素a[i][j]在數(shù)組中位置的公式為_______(假設(shè)a[0][0]位于數(shù)組的第一個位置上)(1)i*m+j(2)j*m+1(3)i*m+j-1(4)i*m+j+17.若二維數(shù)組a有m列,則在a[i][j]前的元素個數(shù)為_______(1)j*m+i(2)i*m+1(3)i*m+j-1(4)i*m+j+18.用數(shù)組名作為函數(shù)調(diào)用時的實參,實際上傳遞給形參色是_______(1)實參數(shù)組全部元素的值(2)實參數(shù)組第一個元素的值(3)實參數(shù)組的首地址(3)實參數(shù)組元素的個數(shù)5.3已知a是一個二維數(shù)組,問a[2]的含義是什么?5.4填上適當?shù)恼Z句或表達式,使其能完成相應(yīng)的功能。1.從鍵盤上輸入一個字符串,然后將其反序,最后輸出Main(){intn;chara[60];C語言程序設(shè)計(1-6章)全文共32頁,當前為第14頁。Inti,j;charch;C語言程序設(shè)計(1-6章)全文共32頁,當前為第14頁。gets(a);n=______;for(i=0,j=n-1;i<j;_______){Ch=a[i];a[i]=a[j];a[j]=ch;}Puts(a);}2.輸入9個實數(shù)給一個3*3的矩陣,然后求出此矩陣兩條對角線元素值的和Main(){floata[3][3],sum=0;Inti,j;For(i=0;i<3;i++)for(j=0;j<3;j++)scanf(“%f”,______);For(i=0;i<3;i++)sum+=_______;Printf(“Sum=%f\n”,sum);}3.求某天(年月日)是星期幾的函數(shù)Voidmain(){intn;/*年*/inty;/*月*/intr;/*日*/intfirst;/*該年1月1日是星期幾*/intI,leap,s;scanf(“%d,%d,%d,%d”,&n,&y,&r,&first);staticintmon[2][13]={0,31,28,31,30,31,30,31,31,30,31,30,31,0,31,29,31,30,31,30,31,31,30,31,30,31};______________;s=________________;for(i=1;i<y;i++)s+=mon[leap][i];s+=_______;printf(“%d”,s);}5.5用篩法求100以內(nèi)的素數(shù)。5.613個小孩圍成圈玩游戲。從第3個人開始循環(huán)報數(shù),報數(shù)為”5”者出圈,接著從下一個人開始重新報數(shù),報數(shù)為”5”者再出圈….,直到所有人都出圈為止。求他們的出圈順序。5.7編寫程序?qū)崿F(xiàn)strcpy()函數(shù)的功能5.8輸入一個字符串,輸出其反序5.9輸入一個字符串,然后判定它是否為一個palindrome。所謂palindrome,是指其從正反兩個方向看都是一樣的(不分大小寫),如”madam“C語言程序設(shè)計(1-6章)全文共32頁,當前為第15頁。5.1015個教徒和15個非教徒在海上遇險,必須將一半的人投入海中,其余的人才能幸免于難,于是想了個辦法:30人圍成一圈,從第一個人開始依次報數(shù),當數(shù)到第13人就將他扔入大海,接著從下一個人開始重新報數(shù),當再數(shù)到第13人時將其又扔下海,如此循環(huán)進行直到僅剩15個人為止。問怎樣排法才能使每次投入大海的都是非C語言程序設(shè)計(1-6章)全文共32頁,當前為第15頁。5.11閱讀程序,寫出運行結(jié)果Main(){inta[11],i,j,t;For(i=1;i<11;i++)scanf(“%d”,&a[i]);For(j=1;j<=9;j++)For(i=1;i<=10-j;i++)If(a[i]>a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}For(i=1;i<11;i+=2)printf(“%d”,a[i]);}輸入:104115-110-10-111005.12從鍵盤輸入100個整數(shù),然后將它們從小到大排序并輸出。答案:5.1靜態(tài),外部5.21.(3)2.(4)3.(4)4.(4)5.(3)6.(4)7.(2)8.(3)5.3a[2]是數(shù)組a第三行的首地址。5.41.Strlen(a)i++,j—2.&a[i][]j(i==1?a[i][j]:a[i][0]+a[i][2-i])3.Leap=(n%4==0&&n%100)||n%400==0R((first+(s-1)%7)>7?first+(s-1)%7-7:first+(s-1)%7)5.5#include”stdio.h”#include”math.h”Is_prime(intn){intk,i=1;K=sqrt((double)n);While(++I<=k)If(n%i==0)return(0);Return1;}Voidmain(){intn;For(n=2;n<=100;n++)C語言程序設(shè)計(1-6章)全文共32頁,當前為第16頁。If(is_prime(n))printf(“%d\n”,n);}C語言程序設(shè)計(1-6章)全文共32頁,當前為第16頁。5.6#include”stdio.h”Voidmain(){charname[14][10];Intflag[14],I,j,n;Printf(“Inputthenamesofthepeople:\n”);For(i=1;i<=13;i++){Scanf(“%s”,&name[i]);Flag[i]=1;}N=0;i=3;j=1;While(1)While(j<5){I=(i+1>13?1:i+1);J+=flag[i];}Puts(name[i]);Flag[i]=0;N++;If(n==13)break;J=0;}}5.7Char*strcpy(char*s1,char*s2){char*p;P=s1;While(*p++=*s2++);Return(s1);}5.8#include”stdio.h”Voidmain(){chars[51],*I;Printf(“Inputasringlessthan50characters:\n”);Gets(s);I=s;While(*I,)i++;While(--i>=s)putchar(*I);Putchar(‘\n’);}5.9#include”stdio.h”C語言程序設(shè)計(1-6章)全文共32頁,當前為第17頁。#incude”string.h”C語言程序設(shè)計(1-6章)全文共32頁,當前為第17頁。Is_pal(char*s){char*p,*q;P=s;Q=s+strlen(s)-1;While(p<q)if(*p++)!=(*q--))return(0);Return(1);}Voidmain(){chars[51],*i=0;Printf(“Inputastringlessthan50characters:\n”);Gets(s);If(is_pal(s))Puts(“isaPalidrome!”);ElsePuts(“isnotaPalindrome!”);}5.10參見習題5.75.11-11-115115.12#include”stdio.h”Voidmain(){Inta[100],I,j,t;Printf(“Input10integers:\n”);For(i=0;i<100;i++)Scanf(“%d”,&a[i]);For(i=0;i<99;i++)For(j=99;j>I;j--)If(a[j-1]>a[j]){T=a[j];A[j]=a[j-1];A[j-1]=t;}Printf(“Thesortofthemis:\n”);For(i=0;i<100;i++)Printf(“%d”,a[i]);Printf(“\n”);}第六章函數(shù)6.1填空1.在定義一個函數(shù)時如果不加類型說明,則它的隱含類型為________C語言程序設(shè)計(1-6章)全文共32頁,當前為第18頁。2.為了明確表示函數(shù)沒有返回值,可用________來進行函數(shù)類型定義。C語言程序設(shè)計(1-6章)全文共32頁,當前為第18頁。3.函數(shù)的返回值是通過______語句返回到調(diào)用函數(shù)中的。4.C語言規(guī)定下述情況下可以不在調(diào)用函數(shù)前對被調(diào)函數(shù)作類型說明:若函數(shù)值是整型或字符型;或者_____.5.調(diào)用函數(shù)只可得到一個______。6.在定義函數(shù)時,如果冠以關(guān)鍵字void,表示此函數(shù)__________。6.2單項選擇。1.一個函數(shù)返回值的類型是由()決定的。(1)return語句中表達式類型(2)定義函數(shù)時所指定的函數(shù)類型(3)調(diào)用該函數(shù)的主調(diào)函數(shù)的類型(如果被4)在調(diào)用函數(shù)時臨時指定2.如果被調(diào)用函數(shù)(非void類型)中沒有return,則其()。(1)不帶回值(2)帶回一個不確定的值(3)只帶回零值(4)帶回全部數(shù)值3.下面敘述中,不正確的是()(1)函數(shù)可以有參數(shù),也可以沒有參數(shù)(2)調(diào)用函數(shù)時,只能使之出現(xiàn)在表達式中(3)函數(shù)中可以沒有return(4)main()也是一個函數(shù)4.以下正確的函數(shù)聲明形式是()(1)doublefun(intx,inty)(2)doublefun(intx;inty)(3doublefun(intx,inty)(4))doublefun(intx,y)5.以下正確的函數(shù)形式是()(1)doublefun(intx,inty){z=x+y;returnz;}(2)fun(intx,y){intz;returnz;}(3)dun(x,y){intx,y;doublez;z=x+y;returnz;}(4)doublefun(intx,inty){doublez;z=x+y;returnz}6.下面函數(shù)調(diào)用語句含有實參的個數(shù)為()Func((exp1,exp2),(exp3,exp4,exp5));1(2)2(3)4(4)57.求標有/**/語句執(zhí)行后X的值()Main(){staticintx=5;F(x);If(x>0){Intx;x=20;}X++;/**/}F(x);Intx;{x++;}5(2)6(3)25(4)26C語言程序設(shè)計(1-6章)全文共32頁,當前為第19頁。8.求標有/**/語句執(zhí)行后X的值()C語言程序設(shè)計(1-6章)全文共32頁,當前為第19頁。Main(){staticintx=-5;F(x);If(x<0){Intx;x=10;}++x;/**/}F(x);Intx;{x--;}-4(2)-5(3)10(4)119.求標有/**/語句執(zhí)行后X的值()Intx;Main(){intx=20;If(x>0){intx;x=30}F();Printf(“%d\n”,x);/**/}20(2)21(3)30(4)510.求標有/**/語句執(zhí)行后X的值()Intx=5;Main(){intx=20;If(x>0){intx=30;}Fun();}F();{x++;/**/}5(2)6(3)20(4)216.3C函數(shù)可以分為哪幾種?各函數(shù)之間的關(guān)系如何?C語言以函數(shù)為程序的基本單位有什么好處?6.4C函數(shù)有哪兒種調(diào)用方式?6.5
C函數(shù)由哪兒部分構(gòu)成?何為形參?何為實參?
形實結(jié)合有哪兒種方式?6.6
編寫完成如下功能的函數(shù):1.求兩個整數(shù)之和,結(jié)果也為整型。2.求兩個浮點數(shù)之和,結(jié)果也為浮點型。3.求兩個整數(shù)之積,結(jié)果為長整型。4.求兩個浮點數(shù)之積,結(jié)果為雙精度型。5.求三個整數(shù)的最大者。6.求三個整數(shù)的最小者7.已知三邊長,求三角形的面積,8.判斷一個數(shù)是否素數(shù),如果是返回1,否則返回0。6.7編寫一個程序,它從鍵盤上讀人一個整數(shù),然后將該整數(shù)的所有正因子輸出C語言程序設(shè)計(1-6章)全文共32頁,當前為第20頁。6.8編寫一個求n!的遞歸函數(shù)。C語言程序設(shè)計(1-6章)全文共32頁,當前為第20頁。6.9編寫一個求菲波那奇數(shù)列中第n項fn的函數(shù),已知:f1=1,f2=1,fn=fn-1+fn-2(n>=3)6.10編寫一個程序,它從鍵盤分別讀人一個學生的五科考試成績,然后計算、輸出該學生的總成績、平均成績、最高成績和最低成績。要求用函數(shù)調(diào)用來完成所要求的計算。6.11寫出下面程序的運行結(jié)果1.intk=0;Main(){inti=4;Func(i);Printf(“%d,%d\n”I,k);}Func(m)Intm;{M+=k;K+=m;{chark=’B’;Printf(“%d\n”,k-‘A’);}Printf(“%d,%d\n”,m,k);2.main(){intn;For(n=1;n<=5;++n)printf(“\n%d”,ss(n));}ss(n)Intn;{intI;,sum=0;For(i=1;i<=n;sum+=i*i);Return(sum);3.intsum(intn){intI,s=0;I=1;While(i<=n){s+=I;i++;}Return(s);Main(){printf(“%d\n”,sum(5));}4.若輸入的值是-125,寫出下面程序的運行結(jié)果#include”stdio.h”#include”math.h”Voidfun(intn){intk,r;C語言程序設(shè)計(1-6章)全文共32頁,當前為第21頁。For(k=2;k<=sqrt(n);k++)C語言程序設(shè)計(1-6章)全文共32頁,當前為第21頁。{r=n%k;While(r==0){printf(“%d”,k);N=n/k;If(n>1)printf(“*”);R=n%k;}}If(n!=1)printf(“%d\n”,n);}Voidmain(){intn;Scanf(“%d”,&n);Printf(“%d=”,n);If(n<0)printf(“-”);N=fabs(n);fun();}5.寫出下面程序的運行結(jié)果。Inti=0;Fun1(int1){i=(i%i)*(i*i)/(2*i)+4;Printf(“i=%d\n”,i);Return(i);}Fun1(int1){i=i<=2?5:0;Return(i);}Main(){inti=5;Fun2(i/2);printf(“i=%d\n”,i);Fun2(i=i/2);printf(“i=%d\n”,i);Fun2(i/2);printf(“i=%d\n”,i);Fun1(i/2);printf(“i=%d\n”,i);}6.寫出下面程序的功能。Func(intn){inti,j,k;i=n/100;j=n/10-i*10;k=n%10;C語言程序設(shè)計(1-6章)全文共32頁,當前為第22頁。if((i*100+j*10+k)==i*i*i+j*j*j+k*k*k)returnn;C語言程序設(shè)計(1-6章)全文共32頁,當前為第22頁。return0;}Main(){intn,k;For(n=100;n<1000;n++)If(k=func(n))printf(“%d”,k);}6.12寫一個函數(shù),以字符的形式讀入一個十六進制數(shù)(它以字符‘h’或‘H’結(jié)尾,如1ABH),并輸出相應(yīng)的十進制數(shù)。6.13阿克曼函數(shù)A(m,n)的定義如下:n+1若m=0A(m,n)={A(m-1,1)若n=0A(m-1,A(m,n-1))其他試編寫一個求A(m,n)的函數(shù)。6.14編寫一個程序,它從鍵盤讀入4個字符,然后將這4個字符的所有可能排列輸出。6.15改錯。1.下面的程序或者有語法錯誤,或者完不成特定的功能,請改正(只允許改變一個語句)。Autointmax(inta,intb){registerinttemp;If(a>b)temp=a;Elsetemp=b;Return(temp);C語言程序設(shè)計(1-6章)全文共32頁,當前為第23頁。}C語言程序設(shè)計(1-6章)全文共32頁,當前為第23頁。2.下面add函數(shù)的功能是求兩個參數(shù)的和,并將和值返回調(diào)用函數(shù)。函數(shù)中錯誤的部分是________.Voidadd(floata,floatb){floatc;c=a+b;returnc;}3.下面add函數(shù)的功能是求兩個參數(shù)的和。判斷下面程序的正誤,如果錯誤請改正過來。Voidadd(inta,intb){intc;c=a+b;return(c);}4.下面函數(shù)fun的功能是:將長整型數(shù)中偶數(shù)位置上的數(shù)依次取出,構(gòu)成一個新數(shù)返回,如當s中的數(shù)為:87653142時,則返回的數(shù)為:8642;判斷下面程序的正誤,如果錯誤請改正過來。Longfun(longs){longt,sl=1;Intd;t=0;while(s>0){d=s%10;if(d%2=0)}t=d*sl+t;sl*=10;C語言程序設(shè)計(1-6章)全文共32頁,當前為第24頁。}C語言程序設(shè)計(1-6章)全文共32頁,當前為第24頁。s/=10;}Return(t);}6.16填空。1.填上適當?shù)恼Z句或表達式,使其能完成相應(yīng)的功能。判斷year是否為閏年的函數(shù),若是則返回1,否則返回0。Leap(________)Intyear;{______________________;}2.以下程序?qū)⑦x出能被3整除且至少有一位是5的兩位數(shù),打印出所有這樣的數(shù)及其個數(shù)。請選擇填空。Sub(intk,intn){inta1,a2;a2=_____________;a1=k-____________;if((k%3==0&&a2==5)||(k%3==0&&a1==5)){printf(“%d”,k);n++;Returnn;}Elsereturn-1;}Voidmain()C語言程序設(shè)計(1-6章)全文共32頁,當前為第25頁。{intn=0,k,m;C語言程序設(shè)計(1-6章)全文共32頁,當前為第25頁。For(k=10;k<=99;k++){m=sub(k,n);If(m!=-1)n=m;}Printf(“\nn=%d”,n);}6.17有20級樓梯,一次可以邁一級或二級,則爬完次樓梯有幾種方法。6.18編寫程序或函數(shù)。1.用遞歸函數(shù)求1n=0p(n,x)={xn=1((2n-1)*x-p(n-1,x)-(n-1)*p(n-2,x))/nn>12.用遞歸函數(shù)求以下函數(shù)f(n)的前十項和。f(n)=f(n-1)+2*f(n-2)n>2f(1)=f(2)=13.用遞歸函數(shù)求以下函數(shù)f(n)的前十項和。f(n)=n*f(n-1)+3n>1f(1)=24.用遞歸函數(shù)求以下函數(shù)f(n)的前十項和。f(n)=2n-1+f(n-1)n>1f(1)=05.用遞歸函數(shù)求以下函數(shù)f(n)的前十項和。f(n)=2*f(n-1)n>1C語言程序設(shè)計(1-6章)全文共32頁,當前為第26頁。f(1)=1C語言程序設(shè)計(1-6章)全文共32頁,當前為第26頁。6.19將數(shù)軸上的點1,2,3,…,n涂成白色或黑色,但不允許相鄰的兩個點都是黑色,共有多少中著色方法?6.20在開始時電梯里共有n個人,共有k個樓層可停。設(shè)k<=n,且在每層都有人下電梯,問共有多少種可能的下法(只考慮每層所下的人數(shù),而不必關(guān)心具體下的是何人)?試編寫程序求n=8,k=5時的下法總數(shù)。6.21編寫代碼實現(xiàn)把字符串s1插入到字符串s的第i個位置上。6.22編寫代碼在有序數(shù)組a中折半查找數(shù)x(n是數(shù)組a中元素的個數(shù))。答案:6.11.int2.void3.return4.被調(diào)函數(shù)在調(diào)用函數(shù)之前定義5.返回值6.不返回值,只能以過程方式調(diào)用6.21.(2)2.(2)3.(2)4.(1)5.(4)6.(2)7.(2)8.(1)9.(1)10.(2)6.3C函數(shù)可分為庫函數(shù)和用戶自定義函數(shù)兩種。各函數(shù)之間的關(guān)系是平等的,無主次之分。以函數(shù)作為程序的基本單位可以將大的程序分解為一個個小的函數(shù),便于程序的編寫閱讀和維護。6.4C函數(shù)可有“過程調(diào)用”和“函數(shù)調(diào)用”兩種方式.6.5C函數(shù)由”函數(shù)頭”和“函數(shù)體”構(gòu)成。定義函數(shù)時函數(shù)名后圓括號中的參數(shù)為“形參”,調(diào)用函數(shù)時函數(shù)名后圓括號中的參數(shù)為“實參”。形實結(jié)合主要有“值傳遞”和“地址傳遞”兩種方式,但C語言只用到“值傳遞”,而“地址傳遞”在C語言中是利用“指針”來間接實現(xiàn)的。6.61.f(intx,inty){Return(x+y);}2.Floatf(floatx,floaty){
Return(x+y);}3.longf(intx,inty){
Return(x*y);}4.doublef(intx,inty)C語言程序設(shè)計(1-6章)全文共32頁,當前為第27頁。{
Return(x*y);C語言程序設(shè)計(1-6章)全文共32頁,當前為第27頁。}5.Max(intx,inty,intz){If(y>x)x=y;If(z<x)Return(z);Return(x);}6.Min(intx,inty,intz){If(y>x)x=y;If(z<x)Return(z);Return(x);}7.Doubletri_area(floata,floatb,floatc){floats;s=(a+b+c)/2;return(sqrt(s*(s-a)*(s-b)*(s-c)));}8.Is_prime(intn){inti;For(i=2;n%i;)i++;If(i=
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 專業(yè)售后售后服務(wù)
- 社區(qū)黨員先鋒行動計劃保證書
- 企業(yè)間借款合同范本格式設(shè)計
- 專業(yè)代理記賬服務(wù)合同
- 學業(yè)成績承諾函保證承諾
- 致愛人的道歉信請求女友原諒
- 點工協(xié)議書格式
- 專業(yè)企業(yè)保證書范文
- 數(shù)據(jù)備份與恢復合同
- 爆破作業(yè)合同范本模板
- 大眾頂級 輝騰 減振控制的空氣懸架_圖文
- 血液透析??撇僮髁鞒碳霸u分標準
- 電工新技術(shù)介紹(課堂PPT)
- 座板式單人吊具(課堂PPT)
- 托班一日生活情況反饋表
- 機電設(shè)備維護保養(yǎng)技術(shù)
- FLAC3D常用命令
- JGJ_T231-2021建筑施工承插型盤扣式鋼管腳手架安全技術(shù)標準(高清-最新版)
- 畢業(yè)論文(設(shè)計)除雪車工作裝置設(shè)計
- 鏡片加工知識之四研磨
- 核電站1E級電氣設(shè)備鑒定標準技術(shù)經(jīng)驗
評論
0/150
提交評論