版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
習(xí)題與參考答案項目1【思考與練習(xí)】一、填空題1、C程序是由構(gòu)成的,一個C程序中至少包含。2、C程序的注釋是由和所界定的文字信息組成的。3、開發(fā)一個C程序要經(jīng)過編輯、、和運(yùn)行4個環(huán)節(jié)。4、C語言中,頭文件的擴(kuò)展名是。5、C語言源程序的擴(kuò)展名;經(jīng)過編譯后,生成文件的后綴是;經(jīng)過連接后,生成文件的擴(kuò)展名是。二、簡答題1、簡述C語言程序的運(yùn)行步驟。2、軟件編程中的可讀性原則一般包括那些內(nèi)容?3、什么是算法?算法的特點(diǎn)有哪些?4、參照本章例題,編寫一個C程序,輸出以下內(nèi)容。**************************************************Hello,world!**************************************************5、寫出算法。已知圓的半徑,求周長和面積。項目1思考與練習(xí)參考答案一、填空題1、函數(shù)、一個主函數(shù)main()2、/*、*/3、編譯、連接4、.h5、.c、.obj、.exe二、簡答題1、簡述C語言程序的運(yùn)行步驟。答:(1)編輯C程序源文件;(2)編譯,將編輯好的源程序文件“*.c”,翻譯成二進(jìn)制目標(biāo)代碼文件“*.obj”;(3)連接,將編譯生成的各個目標(biāo)程序模塊和系統(tǒng)或第三方提供的庫函數(shù)“*.lib”連接在一起,生成可以脫離開發(fā)環(huán)境、直接在操作系統(tǒng)下運(yùn)行的可執(zhí)行文件“*.exe”;(4)運(yùn)行程序。如果運(yùn)行出錯,這說明程序處理的邏輯存在問題,需要再次回到編輯環(huán)境針對程序出現(xiàn)的邏輯錯誤進(jìn)一步檢查、修改源程序,重復(fù)編輯→編譯→連接→運(yùn)行的過程,直到取得預(yù)期結(jié)果為止。2、軟件編程中的可讀性原則一般包括那些內(nèi)容?答:1.編程規(guī)范概要(1)程序結(jié)構(gòu)清晰,簡單易懂,單個函數(shù)的程序行數(shù)不得超過100行。(2)打算干什么,要簡單,直截了當(dāng),代碼精簡,避免垃圾程序。(3)盡量使用標(biāo)準(zhǔn)庫函數(shù)和公共函數(shù)。(4)不要隨意定義全局變量,盡量使用局部變量。(5)使用括號以避免二義性。2.可讀性要求(1)可讀性第一,效率第二。(2)主要變量(結(jié)構(gòu)、聯(lián)合、類或?qū)ο螅┒x或引用時,注釋能反映其含義。(3)常量定義(define)有相應(yīng)說明。(4)處理過程的每個階段都有相關(guān)注釋說明。(5)利用縮進(jìn)來顯示程序的邏輯結(jié)構(gòu),縮進(jìn)量一致,可以以Tab鍵為單位。(6)循環(huán)、分支層次不要超過五層。(7)適當(dāng)?shù)氖褂米⑨?,注釋可以與語句在同一行,也可以在上行。(8)保持各種運(yùn)算的標(biāo)準(zhǔn)形式,通過括號避免運(yùn)算符的二義性。3、什么是算法?算法的特點(diǎn)有哪些?答:算法(Algorithm)是對特定問題求解方法與步驟的描述,是程序求解問題的核心內(nèi)容。算法的特點(diǎn):有窮性、確定性、可行性、有零個或多個輸入、有一個或多個輸出。4、參照本章例題,編寫一個C程序,輸出以下內(nèi)容。#include"stdio.h"voidmain(){printf("**************************************************\n");printf("Hello,world!\n");printf("**************************************************\n");}5、寫出算法。已知圓的半徑,求周長和面積。算法:(1)定義3個變量fR、fL、fS分別存儲圓的半徑、周長和面積。(2)輸入圓的半徑fR的值。(3)分別計算圓的周長和面積,fL=2*3.14*fR,fS=3.14*fR*fR。(4)輸出fL和fS。項目2【思考與練習(xí)】一、選擇題1、下面敘述錯誤的是_。A.C程序中,各種括號應(yīng)成對出現(xiàn)B.C程序中,賦值號的左邊不可以是表達(dá)式C.C程序中,變量名的大小寫是有區(qū)別的D.C程序中,若未給變量賦初值,則變量的初值自動為02、以下合法的用戶標(biāo)識符是____。A.long B.\t C.5a D.user3、C程序中,合法的關(guān)鍵字是____。A.int B.integer C.Int D.Intger4、下列選項中,優(yōu)先級最高的運(yùn)算符是____。A.&& B./= C.! D.<=5、C語言程序中,運(yùn)算對象必須為整數(shù)的運(yùn)算符是__。A.++ B.% C./ D.*6、下列字符串中為合法的字符常量的是____。A.n B.'\n' C.110 D."n"二、填空題1、下面程序的運(yùn)行結(jié)果是。voidmain(){charch1='a',ch2='b',ch3='c',ch4='\101',ch5='\116';printf("a%cb%c\tab%c\n",ch1,ch2,ch3);printf("\t\b%c%c",ch4,ch5);}2、運(yùn)行下面程序,其輸出結(jié)果為。voidmain(){intiA1,iA2,iA3=258;iA1=97;iA2=98;printf("iA1=%c,iA2=%c,iA3=%c",iA1,iA2,iA3);}(3)下面程序的運(yùn)行結(jié)果是。voidmain(){intiX,iY,iM,iN;iX=10;iY=20;iM=iX++;iN=++iY;printf("iX=%d,iY=%d,iM=%d,iN=%d",iX,iY,iM,iN);iM=iX––;iN=––iY;printf("iX=%d,iY=%d,iM=%d,iN=%d",iX,iY,iM,iN);}(4)下面程序的運(yùn)行結(jié)果是。voidmain(){intiX,iY;iX=80;iY=25;printf("iX=%d,iY=%d\n",iX,iY);printf("iX/iY=%d,iX%iY=%d\n",iX/iY,iX%iY);}三、編程題1、編程計算C語言表達(dá)式20a2-5b3的值,a=5,b=2。2、編程實現(xiàn)。從鍵盤輸入一個四位整數(shù),計算其個位、十位、百位、千位的和。3、交換兩個字符變量的值。項目2思考與練習(xí)參考答案一、選擇題1、D2、D3、A4、C5、B6、B二、填空題1、aabb abcAN2、iA1=a,iA2=b,iA3=?3、iX=11,iY=21,iM=10,iN=21,iX=10,iY=20,iM=11,iN=204、iX=80,iY=25iX/iY=3,iX%iY=5三、編程題1、編程計算C語言表達(dá)式20a2-5b3的值,a=5,b=2。#include"stdio.h"voidmain(){inta,b;a=5;b=2;printf("%d\n",20*a*a-5*b*b*b);}2、編程實現(xiàn)。從鍵盤輸入一個四位整數(shù),計算其個位、十位、百位、千位的和。#include"stdio.h"voidmain(){intiNum;inti1,i2,i3,i4,iSum;printf("pleaseinputainteger(1000-9999):");scanf("%d",&iNum);i1=iNum%10;/*求個位數(shù)*/i2=iNum/10%10;/*求十位數(shù)*/i3=iNum/100/10;/*求百位數(shù)*/i4=iNum/1000;/*求千位數(shù)*/iSum=i1+i2+i3+i4;printf("thesumis:%d",iSum);}3、交換兩個字符變量的值。voidmain(){charch1='A',ch2='B',chTemp;printf("ch1=%c,ch2=%c\n",ch1,ch2);chTemp=ch1;ch1=ch2;ch2=chTemp;;printf("ch1=%c,ch2=%c\n",ch1,ch2);getch();}項目3【思考與練習(xí)】一、選擇題1、設(shè)i是int型變量,f是float型變量,用下面的語句給這兩個變量輸入值:scanf("i=%d,f=%f",&i,&f);為了把100和765.12分別賦給i和f,則正確的輸入為。A.100<空格>765.12<回車>B.i=100,f=765.12<回車>C.100<回車>765.12<回車>D.x=100<回車>,y=765.12<回車>2、以下程序的輸出結(jié)果是。main(){inta=12,b=12;printf("%d%d\n",--a,++b);}A.1010B.1212C.1110D.11133、以下程序輸出結(jié)果是。main(){intm=5;if(m++>5)printf("%d\n",m);elseprintf("%d\n",m--);}A.7B.6C.5D.44、當(dāng)a=1,b=3,c=5,d=4時,執(zhí)行下面一段程序后,x的值為。if(a<b)if(c<d)x=1;elseif(a<c)if(b<d)x=2;elsex=3;elsex=6;elsex=7;A.1B.2C.3D.65、設(shè)有語句inta=3;則執(zhí)行了語句a+=a-=a*a;后,變量a的值是。A.3B.0C.9D.-126、以下程序的輸出結(jié)果是。#include<stdio.h>main(){inta=2,c=5;printf("a=%%d,b=%%d\n",a,c);}A.a=%2,b=%5B.a=2,b=5C.a=%%d,b=%%dD.a=%d,b=%d7、若x和y都是int型變量,x=100,y=200,且有下面的程序片段:printf("%d",(x,y));上面程序片段的輸出結(jié)果是。A.200B.100C.100200D.輸出格式符不夠,輸出不確定的值8、已知字母A的ASCII碼為十進(jìn)制的65,下面程序的輸出是。main(){charch1,ch2;ch1='A'+'5'-'3';ch2='A'+'6'-'3';printf("%d,%c\n",ch1,ch2);}A.67,DB.B,CC.C,DD.不確定的值9.以下程序的輸出結(jié)果是Voidmain(){Charc=’z’;Printf(“%c”,c-25);}A.aB.zC.z-25D.y二、編程題1.輸入一個華氏溫度,要求輸出攝氏溫度。公式為:C=5/9(F-32),輸出要有文字說明,取2位小數(shù)。式中:C表示攝氏溫度,F(xiàn)表示華氏溫度。編寫C語言程序?qū)崿F(xiàn)。2.有2個懷子,分別裝著紅酒和啤酒,現(xiàn)在想交換這2個杯子中的酒,應(yīng)該如何交換?編寫C語言程序?qū)崿F(xiàn)。3.輸入一個數(shù),求該數(shù)個位、十位、百位上的數(shù)之和。編寫C語言程序?qū)崿F(xiàn)。4.用編程的形式打印學(xué)生入學(xué)的姓名、性別、年齡、學(xué)號和入學(xué)成績。5.已知圓的半徑,求該圓的周長和面積。項目3思考與練習(xí)參考答案一、選擇題1.B.2.D3.c4.B5.D6.A7.D8.A9.A二、編程題略
項目4【思考與練習(xí)】一、選擇題1、關(guān)于if語句后面一對括號中的表達(dá)式,敘述正確的是。 A.只能用關(guān)系表達(dá)式 B.只能用邏輯表達(dá)式 C.只能用關(guān)系表達(dá)式或邏輯表達(dá)式 D.可以使用任意合法的表達(dá)式2、對switch后括號內(nèi)的表達(dá)式,敘述正確的是。 A.只能是數(shù)字 B.可以是浮點(diǎn)數(shù) C.只能是整型數(shù)據(jù)或字符型數(shù)據(jù) D.以上敘述都不對3、iX=2,iY=3,ch='a',表達(dá)式iZ=(iX||iY)&&(ch>'A')的值是。 A.true B.false C.0 D.14、表達(dá)式(6!=8)&&('A'<'a')的值是。A.true B.1 C.0 D.非0值5、intk=x>y?(x>z?x:z):(y>z?y:z)語句的目的是:。A.求x,y,z最大值 B.求x,y,z最小值C.求x,y,z中間值D.求x,y,z平均值6、有如下程序段inta=14,b=15,x;charc=’A’;x=(a&&b)&&(c<’B’);執(zhí)行該程序段后,x的值為。A.ture B.false C.0 D.17、以下程序的輸出結(jié)果是。main(){ inta=0,i=1; switch(i){ case0:case3:a+=2;case1:case2:a+=3;default:a+=5;}printf("%d\n",a);}A.3B.8C.10D.2二、寫出下列程序的運(yùn)行結(jié)果1、下面程序的輸出結(jié)果是。#include"stdio.h"main(){inti,j;i=j=2;if(i==1)if(i==2)printf("%d",i=i+j);elseprintf("%d",i=i–j);printf("%d",i);2、下面程序的輸出結(jié)果是。#include"stdio.h"main(){intiX=3; switch(iX) { case1: case2:printf("iX<3\n"); case3:printf("iX=3\n"); case4: case5:printf("iX>3\n"); default:printf("iXunknow\n"); }}3、下面程序的輸出結(jié)果是。#include"stdio.h"main(){charchT='w',chA='m',chB='d',chC='x',chM;chM=(chT>chA)?chT:chA;chM=(chM>chB)?chM:chBchM=(chM>chC)?chM:chC;printf("c%",chM);}三、編程1.輸入一個整數(shù),判斷該數(shù)的奇偶性。2.編寫程序,實現(xiàn)判斷用戶輸入的是整數(shù)還是負(fù)數(shù)的功能。3.輸入一個字符,請判斷是字母、數(shù)字還是特殊字符。4.根據(jù)指定月份,打印該月份所屬的季節(jié)。3,4,5春季;6,7,8夏季;9,10,11秋季;12,1,2冬季。5.小明去參加一個同學(xué)的生日聚會,同學(xué)的家長規(guī)定18歲以上的才可以飲酒,所以需要編一程序根據(jù)輸入的年齡打印一張飲酒卷,使的能飲酒的同學(xué)可以獲取飲酒卷。6.根據(jù)用戶輸入對應(yīng)的星期(char[])顯示相應(yīng)的菜名。如果“星期一”則顯示“干煸豆角”;如果”星期二“則顯示“醋溜土豆絲”;如果“星期三”則顯示“紅燒獅子頭”如果“星期四”顯示“油炸花生米”;如果“星期五,顯示"蒜蓉扇貝";如果“星期六”顯示"東北亂燉”;如果“星期日”,顯示“大盤雞”。請編寫該程序。7.企業(yè)發(fā)放的獎金根據(jù)利潤提成。利潤低于或等于10萬元時,獎金可提成10%;利潤高于10萬元,低于20萬元時,低于10萬元的部分按10%提成,高于10萬元的部分,可提成7.5%;20萬元到40萬元之間時,高于20萬元的部分,可提5%;40萬元到60萬元之間時,高于40萬元的部分,可提成3%;60萬元到100萬元之間時,高于60萬元的部分,可提成1.5%;高于100萬元時,超過100萬元的部分按1%提成,從鍵盤輸入當(dāng)月利潤i,求發(fā)放獎金總數(shù)。項目4思考與練習(xí)參考答案一、1、D2、C3、C4、B5、A6、D7、B二、1、22、Ix=3Ix>3Ixunknow3、x三、編程題1、略2、略3、略4、#include<stdio.h>
intmain()
{intmonth;
scanf("%d",&month);
if(month<=5&&month>=3)printf("春\n");
elseif(month<=8&&month>=6)printf("夏\n");
elseif(month<=11&&month>=9)printf("秋\n");
elseprintf("冬\n");
return0;
}方法二:#include<stdio.h>Intmain(){Intmonth=0;printf(“請輸入月份:\n”);scanf_s("%d",&month);switch(month){case1:case2:case3:printf(“春”);break;case4:case5:case6:printf(“夏”);break;case7:case8:case9:printf(“秋”);break;case10:case11:case12:printf(“冬”);break;default:{printf(“輸入錯誤”);}}return0;}5、#include"stdio.h"
voidmain(
/*main函數(shù)*/
{
inti1;
/*定義整型變量*/
printf("請輸入你的年齡:);
scanf("%d",&i1);
if(i1>=18)
/*判斷函數(shù)*/
printf("恭喜你獲得飲酒券!");
}
6、#include<stdio.h>voidmain(){stringweek;printf("請輸入星期幾:");scanf("%c",&week);switch(week){case"星期一":printf("干煸豆角");break;case"星期二":
printf(""醋溜土豆");break;case"星期三":
printf("紅燒獅子頭");break;case"星期四":
printf("油炸花生米");break;case"星期五":
printf("蒜蓉扇貝");break;case"星期六":
printf("東北亂燉");break;case"星期日":
printf("大盤雞");break;default:
printf("您輸入錯誤")
}
}7、略
項目5【思考與練習(xí)】一、選擇題1、下面程序段的運(yùn)行結(jié)果是_______。intiNum=0;while(iNum<=2)printf("%d",iNum); A.2 B.3 C.死循環(huán),無限個0 D.有語法錯2、下面程序的運(yùn)行結(jié)果是_______。#include"stdio.h"voidmain(){intiNum=0;while(iNum<=2){iNum++;printf("%d\n",iNum);}} A.1 B.1 C.1 D.1 2 2 2 3 3 43、以下程序段________。iNum=–1;do{iNum=iNum*iNum;}while(!iNum); A.是死循環(huán) B.循環(huán)執(zhí)行2次 C.循環(huán)執(zhí)行一次 D.有語法錯誤4、若i為整型變量,則以下循環(huán)執(zhí)行次數(shù)是________。for(i=2;i==0;)printf("%d",i); A.無限次 B.0次 C.1次 D.2次5、以下正確的描述是_______。 A.continue語句的作用是結(jié)束整個循環(huán)的執(zhí)行 B.只能在循環(huán)體內(nèi)和switch語句體內(nèi)使用break語句 C.在循環(huán)體內(nèi)使用break語句或continue語句的作用相同 D.從多層循環(huán)嵌套中退出時,只能使用goto語句二、填空題1、下面程序段是從鍵盤輸入的字符中統(tǒng)計數(shù)字字符的個數(shù),用換行符結(jié)束循環(huán)。填空使程序完整。intiNum=0,chLetter;chLetter=getchar();while(____){if(_____)iNum++;chLetter=getchar();}2、下面程序段的運(yùn)行結(jié)果是_______。i=1;iSum=3;do{iSum+=i++;if(iSum%7==0)continue;else++i;}while(iSum<15);printf("%d",i);三、編程題1、計算n!。2、編寫程序打印出數(shù)字1-10,但其中不包括4和7,在4或7時跳過不輸出(用break還是continue?分別嘗試一下,寫出兩者的區(qū)別)。3、猴子吃桃問題:猴子第一天摘下若干個桃子,當(dāng)即吃了一半,還不癮,又多吃了一個第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以后每天早上都吃了前一天剩下的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。4、百錢百雞問題。公雞:5元;母雞:3元;小雞:3只1元,100元錢剛好買100只雞,假設(shè)每種雞都必須買,求公雞、母雞、小雞各有幾只?輸出所有的購買方案。5、把厚度為0.006cm的紙不斷地裁剪、摞折,經(jīng)過43次操作后,求解紙的厚度。項目5思考與練習(xí)參考答案一、選擇題1、D2、C3、C4、C5、B二、填空題1、chLetter!=’\0’chLetter>=’1’&&chLetter<=’9’2、8三、編程題1、計算n!。#include"stdio.h"voidmain(){intk,iSum,n; k=1;iSum=1;scanf(“%d”,&n);while(k<=n) {iSum=iSum*k; k++;}printf("\nthesumis%d",iSum);}2、編寫程序打印出數(shù)字1-10,但其中不包括4和7,在4或7時跳過不輸出(用break還是continue?分別嘗試一下,寫出兩者的區(qū)別)。#include"stdio.h"intisDaff(intiNum);voidmain(){inti;for(i=1;i<=10;i++){ If(i!=4||i!=7) printf("%d",i);}}3、猴子吃桃問題:猴子第一天摘下若干個桃子,當(dāng)即吃了一半,還不癮,又多吃了一個第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以后每天早上都吃了前一天剩下的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。#include"stdio.h"voidmain(){intk,iSum; k=1;iSum=1;while(k<10) {iSum=(iSum+1)*2; k++;}printf("%d",iSum);}4、百錢百雞問題。公雞:5元;母雞:3元;小雞:3只1元,100元錢剛好買100只雞,假設(shè)每種雞都必須買,求公雞、母雞、小雞各有幾只?輸出所有的購買方案。#include"stdio.h"voidmain(){inti,j; for(i=1;i<20;i++)for(j=1;j<33;j++){if((i*5+j*3+(100-i-j)/3)==100)Printf(“公雞:%d母雞:%d小雞:%d”,i,j,100-i-j)}}5、略第6章數(shù)組思考與練習(xí)1.讀10個整數(shù)存入數(shù)組,找出其中最大值和最小值。2.將一個數(shù)組逆序輸出。3.設(shè)計一個程序,輸出下列矩陣1234567894.求一個三行三列矩陣對角線和。5.求100到999之間的所有水仙花數(shù)。(水仙花數(shù):一個n位數(shù),它的每個位上的n次冪的和,等于這個數(shù)本身,如:153、370)。6.用篩選法求100以內(nèi)的素數(shù)(素數(shù)是除了1和自己以外,不能被其他整數(shù)整除的整數(shù)。)。7.一個打印楊輝三角的案例來加深對數(shù)組的理解。楊輝三角的前10行樣式如下所示。 1 11 121 1331 14641 15101051 1615201561 172135352171 18285670562881 193684126126843691第6章思考與練習(xí)參考答案1.#include<stdio.h>#defineSIZE10voidmain(){intx[SIZE],i,max,min;printf("Enter10integers:\n");for(i=0;i<SIZE;i++){printf("%d:",i+1);scanf("%d",&x[i]);}max=min=x[0];for(i=1;i<SIZE;i++){if(max<x[i])max=x[i];if(min>x[i])min=x[i];}printf("Maximumvalueis%d\n",max);printf("Minimumvalueis%d\n",min);}2./*將一個數(shù)組逆序輸出。*/#include"stdio.h"#include"conio.h"#defineN5main(){inta[N]={9,6,5,4,1},i,temp;printf("\noriginalarray:\n");for(i=0;i<N;i++)printf("%4d",a);for(i=0;i<N/2;i++){temp=a;a=a[N-i-1];a[N-i-1]=temp;}printf("\nsortedarray:\n");for(i=0;i<N;i++)printf("%4d",a);getch();}3.#include<stdio.h>main(){staticinta[3][3]={{1,2,3},{4,5,6},{7,8,9}};inti,j;printf("outputa:\n");for(i=0;i<3;i++){for(j=0;j<3;j++)printf("%3d",a[i][j]);printf("\n");}}4.main(){floata[3][3],sum=0;inti,j;printf("pleaseinputrectangleelement:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%f",&a[i][j]);for(i=0;i<3;i++)sum=sum+a[i][i];printf("duijiaoxianheis%6.2f",sum);}5.#include<stdio.h>#include<math.h>intmain(void){inti,g,s,b;intsum=0;for(i=100;i<1000;i++){g=i%10;//個位s=i/10%10;//十位b=i/100;//百位//sum=g*g*g+s*s*s+b*b*b;sum=pow(g,3)+pow(s,3)+pow(b,3);//pow(a,b)a為底數(shù),b為指數(shù)if(sum==i){printf("水仙花數(shù):%d\n",i);}}return0;}6.#include<stdio.h>#defineSIZE100main(){inta[SIZE+1],i,j;for(i=2;i<100;i++)a[i]=i;for(i=2;i<100;i++)for(j=i+1;j<=100;j++)if(a[i]!=0&&a[j]%a[i]==0)a[j]=0;printf("\n");j=0;for(i=2;i<=100;i++){if(a[i]!=0){printf("%4d",a[i]);j++;}if(j==10){j=0;printf("\n");}}}7.#include<stdio.h>#include<stdlib.h>voidmain(){ inti,j,n=0; intarr[10][10]={1};//定義一個10行10列的二維數(shù)組,初始化為1 while(n<1||n>10)//此while循環(huán)控制用戶只能輸入n=10 { printf("請輸入n的值:\n"); scanf("%d",&n); } for(i=1;i<n;i++)//外層循環(huán)控制楊輝三角的行數(shù) { arr[i][0]=1;//每一行第1個元素都賦值為1,即第1列都為1 for(j=1;j<=i;j++)//內(nèi)層控制楊輝三角的列數(shù)//每個元素等于其上一行左邊和上邊兩個元素之和 arr[i][j]=arr[i-1][j-1]+arr[i-1][j]; } for(i=0;i<n;i++)//雙重for循環(huán)打印這個二維數(shù)組中的元素 { for(j=0;j<=i;j++) printf("%-5d",arr[i][j]); printf("\n"); } system("pause");}第7章函數(shù)思考與練習(xí)一、選擇題1、在C語言的函數(shù)中,下列說法正確是_________。A.必須有形參 B.形參必須是變量名C.可以有也可以沒形參 D.?dāng)?shù)組名不能作形參2、數(shù)組名作為實參傳遞給函數(shù)時,傳遞的是________。A.該數(shù)組長度 B.該數(shù)組的元素個數(shù)C.該數(shù)組首地址 D.該數(shù)組中各個元素的值3、以下函數(shù)定義正確的是________。A.intfnSum(intiNum1,intiNum2) B.intfnsum(intiNum1,iNum2)C.intfnsum(iNum1,iNum2) D.intfnsum(intiNum1;intiNum2)4、簡單變量做實參時,它和對應(yīng)形參之間的數(shù)據(jù)傳遞方式為______。A.地址傳遞 B.單向值傳遞C.由實參傳給形參,再由形參傳回給實參D.由用戶指定傳遞方式5、C語言允許函數(shù)值類型默認(rèn)定義,此時該函數(shù)值隱含的類型是______。A.float B.int C.long D.double6、以下說法正確的是_________。A.定義函數(shù)時,形參類型說明可以放在函數(shù)體內(nèi)B.函數(shù)能嵌套定義C.return后邊的值不能為表達(dá)式D.如果函數(shù)值的類型與返回值的類型不一致,以函數(shù)類型為準(zhǔn)。7、如果未指定局部變量類型,其隱含的存儲類別為_________。A.自動(auto) B.靜態(tài)(static)C.外部(extern) D.寄存器(register)8、以下敘述中不正確的是_________。A.在不同的函數(shù)中可以使用相同名字的變量B.函數(shù)中的形式參數(shù)是局部變量C.在一個函數(shù)內(nèi)定義的變量只在本函數(shù)范圍內(nèi)有效D.在一個函數(shù)內(nèi)的復(fù)合語句中定義的變量在本函數(shù)范圍內(nèi)有效二、填空題1、以下函數(shù)是求最大值的函數(shù),請補(bǔ)充完整以下程序。#include"stdio.h"_________;main(){intiNum1,iNum2,iMax;scanf("%d,%d",&iNum1,&iNum2);iMax=_________;printf("%d",iMax);}fnMax(intiNum1,intiNum2){if(iNum1>iNum2)returniNum1;else_________;}2、以下程序的運(yùn)行結(jié)果是________。intiNum1=5;intiNum2=7;main(){intiNum1=4,iNum2=5,iSum;iSum=fnPlus(iNum1,iNum2);printf("A+B=%d\n",iSum);}fnPlus(intiNum1,intiNum2){intiSum;iSum=iNum1+iNum2;return(iSum);}3、以下程序的運(yùn)行結(jié)果_________。#include"stdio.h"intfnFun(){staticintiNum=1;iNum=iNum+2;returniNum;}main(){printf("%d\n",fnFun()+fnFun());}三、編程題1、編寫函數(shù)求1+1/2+1/3+1/4+……+1/n的值。2、使用函數(shù),利用遍歷數(shù)組找出全班同學(xué)成績的最高分。3、使用遞歸方法,求Fibonacci數(shù)列的第N項。第7章思考與練習(xí)參考答案一、選擇題1、C2、C3、A4、B5、B6、D7、A8、D二、填空題1、intfnMax(intiNum1,intiNum2);fnMax(iNum1,iNum2)returniNum1;2、A+B=43、8三、編程題1、編寫函數(shù)求1+1/2+1/3+1/4+……+1/n的值。#include"stdio.h"doubledSum(intn);voidmain(){intn; scanf("%d",&n); printf("theresultis%.2f\n",dSum(n));}doubledSum(intn){inti; doubledResult=0; for(i=1;i<=n;i++) { dResult+=1.0/i; }returndResult;}2、使用函數(shù),利用遍歷數(shù)組找出全班同學(xué)成績的最高分。#include<stdio.h>#defineSIZE5floatfMax(floatfScore[],intiSize);voidmain(){floatfScore[SIZE]={0};inti=0;floatfResult=0;for(i=0;i<SIZE;i++){scanf("%f",&fScore[i]);}printf("themaxscoreis%.2f\n",fMax(fScore,SIZE));getch();}floatfMax(floatfScore[],intiSize){inti=0;intfValue=fScore[0];for(i=1;i<iSize;i++){if(fScore[i]>fValue){fValue=fScore[i];}}returnfValue;}3、使用遞歸方法,求Fibonacci數(shù)列的第N項。#include<stdio.h>intf(inta)
//函數(shù)f的定義{
inti;
if(a==1){
return0;
}
if(a==2){
return1;
}
elseif(a>=3){
for(i=1;i<a;i++){
return(f(a-1)+f(a-2));//函數(shù)f的遞歸調(diào)用
}
}}voidmain(){
intn;
printf("inputanumber:\n");
scanf("%d",&n);
printf("%d\n",f(n));
//函數(shù)f的調(diào)用}第8章結(jié)構(gòu)體、共用體和枚舉類型思考與練習(xí)一、選擇題1、設(shè)有以下結(jié)構(gòu)體定義:structstudent{charchName[8];intiAge;charchSex;}stStaff;則下面的敘述不正確的是_________。A.struct是定義結(jié)構(gòu)體類型的關(guān)鍵字B.structstudent是用戶定義的結(jié)構(gòu)體類型C.stStaff是用戶定義的結(jié)構(gòu)體類型名D.chName、iAge和chSex都是結(jié)構(gòu)體成員名2、在第(1)小題中定義的結(jié)構(gòu)體變量stStaff,則系統(tǒng)分配的內(nèi)存空間字節(jié)數(shù)是_________。A.8B.10C.11D.33、設(shè)有以下結(jié)構(gòu)體定義:structstudent{charchName[8];intiAge;charchSex;}stStaff[3];對結(jié)構(gòu)體變量成員的正確引用是_________。A、scanf(“%d”,&stStaff.iAge)B.scanf(“%s”,stStaff[0].iAge)C.scanf(“%s”,stStaff)D.scanf(“%d”,&iAge)二、填空題1、引用結(jié)構(gòu)體變量中成員的一般形式是_________。:2、若有以下結(jié)構(gòu)體類型說明和數(shù)組的初始化:structstTest{ intiNum; charchLetter[6];}stAlpha[2]={2,“abcde”,4,“EDCB”};則執(zhí)行語句printf(“%s,%c\n”,&stAlpha[0].chLetter[2],stAlpha[1].ch[2]);后的輸出結(jié)果是:_________。3、以下程序的執(zhí)行結(jié)果是:_________。fnChange(structteststHuman);structtest{intiAge;charchSex;}stStaff={18,‘M’};fnChange(structteststHuman){stHuman.iAge=20;stHuman.chSex=‘F’;}voidmain(){fnChange(stStaff);printf(“%d,%c\n”,stStaff.iAge,stStaff.chSex);第8章結(jié)構(gòu)體、共用體和枚舉類型思考與練習(xí)答案一、1、C2、A3、B二、1、結(jié)構(gòu)體變量名.成員名2、cde,C3、18,M第9章指針?biāo)伎寂c練習(xí)1.編寫一個函數(shù),將一個3*4的二維數(shù)組矩陣轉(zhuǎn)置。用指向數(shù)組的指針實現(xiàn)。2.編寫一個程序統(tǒng)計候選人得票數(shù)。設(shè)有4名候選人,以輸入候選人人名方式模擬唱票,最后輸出每個候選人的得票數(shù)。計算得票數(shù)的過程用函數(shù)實現(xiàn)。3.指針作為函數(shù)參數(shù),實現(xiàn)兩個數(shù)值交換。4.利用指針查找數(shù)列中的最大值和最小值在窗體上輸入10個整數(shù),自動查找這些數(shù)中的最大值和最小值,并顯示在窗體上。5.用函數(shù)指針來實現(xiàn)對函數(shù)的調(diào)用,返回兩個整數(shù)中的最大值。6.編寫一個函數(shù),其功能是從一個字符指針數(shù)組中尋找指定的一個字符串,若找到返回1,否則就返回0。7.編寫函數(shù),將一個字符串的指定字符全部刪除。要求函數(shù)的原型可聲明為:voidfnDelChar(char*str,charch);其中,參數(shù)str為要刪除字符的字符串,ch為要刪除的字符。第9章思考與練習(xí)參考答案:1.#include<stdio.h>voidfunc(int(*pa)[4],int(*pb)[3],intx,inty){ inti,j; //輸出pa指向的二維數(shù)組的元素 for(i=0;i<x;i++) { for(j=0;j<y;j++) { printf("%d\t",pa[i][j]); pb[j][i]=pa[i][j];//矩陣轉(zhuǎn)置 } printf("\n"); } printf("\n\n"); for(i=0;i<y;i++) { for(j=0;j<x;j++) { printf("%d\t",pb[i][j]); } printf("\n"); }}intmain(){inti,j; intarr[3][4],brr[4][3]; for(i=0;i<3;i++) { for(j=0;j<4;j++) { scanf("%d",&arr[i][j]); } }return0;}2.#include"string.h"structperson /*定義結(jié)構(gòu)體類型*/{charchName[15]; intiCount;};voidfnCount(structperson*pStr) /*計算每個人的票數(shù)*/{inti,j;charchName[15];printf("\nInputname\n");for(i=1;i<=10;i++){scanf("%s",chName);for(j=0;j<4;j++)if(strcmp(chName,(pStr+j)->chName)==0)(pStr+j)->iCount++;}}voidfnData_put(structperson*pStr)/*輸出每個候選人及票數(shù)*/{intj;printf("\nresult:");for(j=0;j<4;j++,)printf("\n%s=%d",(pStr+j)->chName,(pStr+j)->iCount);}voidmain(){structpersonstLeader[4]={{"Li",0},{"Wang",0},{"Zhang",0},{"Shen",0}};fnCount(stLeader);fnData_put(stLeader);}3.#include<stdio.h>voidswap(int*a,int*b)//函數(shù)參數(shù)為指針類型{ inttemp; temp=*a; *a=*b; *b=temp;}voidmain(){ inta=10,b=20; printf("調(diào)用函數(shù)前變量a和b的值為:%d%d\n",a,b); swap(&a,&b); printf("調(diào)用函數(shù)后變量a和b的值為:%d%d\n",a,b);}4.#include<stdio.h>voidfnMax_min(inta[],intn,int*max,int*min){int*p;*max=*min=*a; /*初始化最大值、最小值*/for(p=a+1;p<a+n;p++) if(*p>*max)*max=*p; /*最大值*/ elseif(*p<*min) *min=*p; /*最小值*/ return;}voidmain(){inti,a[10],max,min; printf("請輸入10個整數(shù):"); for(i=0;i<10;i++) scanf("%d",&a[i]); /*輸入數(shù)組元素*/ fnMax_min(a,10,&max,&min); /*返回最大值和最小值*/ printf("最大數(shù)是%d\n",max); /*輸出最大值*/ printf("最小數(shù)是%d\n",min); /*輸出最小值*/}5.intmax(inta,intb);intmain(){intx,y,maxVal;int(*pmax)(int,int)=max;printf("Inputtwonumbers:");scanf("%d%d",&x,&y);maxVal=(*pmax)(x,y);printf("Maxvalue:%d\n",maxVal);getchar();getchar();return0;}intmax(inta,intb){returna>b?a:b;}6.#include<stdio.h>#include<string.h>intfnFindStr(char*source,char*object){ char*p=source; chart[80]; intmaxlen=strlen(object); while(*p) { if(strncmp(object,p,maxlen)==0)return1; p++; }return0;}voidmain(){ chart[]="qwe3rtyuioswerp",g[]="swer"; printf("%d",fnFindStr(t,g));}#include<stdio.h>#include<string.h>#include<malloc.h>voidfnDelChar(char*str,charch);/*函數(shù)聲明*/voidmain(){ charstr[100]; puts("請輸入一個字符串:"); gets(str);fnDelChar(str,'a'); printf("結(jié)果字符串為:%s\n",str);}voidfnDelChar(char*str,charch)/*函數(shù)定義*/{ char*p,*q,*t; intlength; length=strlen(str); q=t=(char*)malloc(length+1); p=str; while(*p) { if(*p!=ch) { *t=*p; t++; } p++; }*t='\0'; strcpy(str,q); }第10章文件思考與練習(xí)一、選擇題選擇題1、當(dāng)已存在一個abc.txt文件時,執(zhí)行函數(shù)fopen("abc.txt","r+")的功能是。A.打開abc.txt文件,清除原有的內(nèi)容B.打開abc.txt文件,只能寫入新的內(nèi)容C.打開abc.txt文件,只能讀取原有內(nèi)容D.打開abc.txt文件,可以讀取和寫入新的內(nèi)容2、若用fopen()函數(shù)打開一個已存在的文本文件,保留該文件原有內(nèi)容,且可以讀,可以寫。則文件打開模式是。A."ab+" B."w+" C."a+" D."a"3、以下不能將文件指針重新移到文件開頭位置的函數(shù)是。A.rewind(fp); B.fseek(fp,0,SEEK_SET);C.fseek(fp,-(long)ftell(fp),SEEK_CUR); D.fseek(fp,0,SEEK_END);4、若用fopen()函數(shù)打開一個新二進(jìn)制文件,該文件可以讀也可以寫,則文件的打開模式為。A."ab+" B."wb+" C."rb+" D."a+"5、fread(buffer,64,2,fp)的功能是。A.從fp所指的文件中讀取64并存入buffer中B.從fp所指的文件中讀取64和2并存入buffer中C.從fp所指的文件中讀取64個字節(jié)的數(shù)據(jù)并存入buffer中D.從fp所指的文件中讀取2個64字節(jié)的數(shù)據(jù)并存入buffer中6、以下程序的功能是。提示:PRN是打印設(shè)備。#include<stdio.h>voidmain(){FILE*fp;charchStr[]="HELLO";fp=fopen("PRN","w");fputs(chStr,fp);fclose(fp)
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年黑龍江道路貨運(yùn)駕駛員從業(yè)資格證考試題庫
- 服裝公司總經(jīng)理聘用合同模板
- 工程監(jiān)理承包合同
- 農(nóng)村考古遺址考古旅游開發(fā)合同
- 社區(qū)服務(wù)管理分層管理辦法
- 2025勞動合同不續(xù)簽處理
- 2024年度高品質(zhì)鈦礦出口貿(mào)易合同3篇
- 2024年物業(yè)管理招標(biāo)申請文件3篇
- 陶藝館租賃合同
- 食品文件生產(chǎn)流程
- 成人急性呼吸窘迫綜合征患者清醒俯臥位護(hù)理專家共識
- 5G網(wǎng)絡(luò)覆蓋方案
- 小學(xué)生主題班會 憶偉人故事展少年風(fēng)采-紀(jì)念偉大領(lǐng)袖毛主席誕辰130周年 課件(共33張PPT內(nèi)嵌視頻)
- (完整版)污水處理廠的水質(zhì)檢測PPT文檔
- 教科版科學(xué)四年級上冊第一單元《聲音》單元作業(yè)設(shè)計
- 植物對水分的吸收和運(yùn)輸
- 工程量清單及招標(biāo)控制價編制服務(wù)采購實施方案(技術(shù)標(biāo))
- 【日本碳市場發(fā)展綜述2800字】
- 加拿大旅游簽證材料清單(含申請表格)
- 2023年江蘇省五年制專轉(zhuǎn)本英語統(tǒng)考真題(試卷+答案)
- 公立醫(yī)院發(fā)展三產(chǎn)法律規(guī)范
評論
0/150
提交評論