《C語(yǔ)言程序設(shè)計(jì):從計(jì)算思維到項(xiàng)目驅(qū)動(dòng)(微課視頻版)》習(xí)題及答案匯 溫荷 第1-12章 C語(yǔ)言概述-貪吃蛇_(dá)第1頁(yè)
《C語(yǔ)言程序設(shè)計(jì):從計(jì)算思維到項(xiàng)目驅(qū)動(dòng)(微課視頻版)》習(xí)題及答案匯 溫荷 第1-12章 C語(yǔ)言概述-貪吃蛇_(dá)第2頁(yè)
《C語(yǔ)言程序設(shè)計(jì):從計(jì)算思維到項(xiàng)目驅(qū)動(dòng)(微課視頻版)》習(xí)題及答案匯 溫荷 第1-12章 C語(yǔ)言概述-貪吃蛇_(dá)第3頁(yè)
《C語(yǔ)言程序設(shè)計(jì):從計(jì)算思維到項(xiàng)目驅(qū)動(dòng)(微課視頻版)》習(xí)題及答案匯 溫荷 第1-12章 C語(yǔ)言概述-貪吃蛇_(dá)第4頁(yè)
《C語(yǔ)言程序設(shè)計(jì):從計(jì)算思維到項(xiàng)目驅(qū)動(dòng)(微課視頻版)》習(xí)題及答案匯 溫荷 第1-12章 C語(yǔ)言概述-貪吃蛇_(dá)第5頁(yè)
已閱讀5頁(yè),還剩168頁(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ǔ)言概述課后習(xí)題1.單選題(1)計(jì)算機(jī)能直接執(zhí)行的是()。A.高級(jí)語(yǔ)言編寫(xiě)的源程序B.匯編語(yǔ)言編寫(xiě)的源程序C.CPU機(jī)器指令編寫(xiě)的程序D.C語(yǔ)言編寫(xiě)的源程序(2)C語(yǔ)言被執(zhí)行時(shí)的入口是()。A.程序中的第一條語(yǔ)句B.main函數(shù)C.第一條注釋D.第一個(gè)變量定義語(yǔ)句(3)C語(yǔ)言編寫(xiě)的源程序,需要經(jīng)過(guò)()翻譯成計(jì)算機(jī)可以直接執(zhí)行的機(jī)器碼。A.C語(yǔ)言編譯器B.C語(yǔ)言解釋器C.操作系統(tǒng)D.程序員(4)下列關(guān)于計(jì)算思維的說(shuō)法,正確的是()。A.計(jì)算思維是只有程序員才需要具備的編程思維B.計(jì)算思維是快速口算的一種思維能力C.計(jì)算思維只能應(yīng)用在計(jì)算機(jī)科學(xué)與工程中D.計(jì)算思維是使用分解、迭代、抽象等計(jì)算機(jī)科學(xué)的思維模型來(lái)解決各種問(wèn)題的能力模型填空題高級(jí)語(yǔ)言編寫(xiě)的源程序,經(jīng)過(guò)編譯或者,變成計(jì)算機(jī)硬件可以直接執(zhí)行的機(jī)器碼。計(jì)算機(jī)程序一般包含3部分:輸入數(shù)據(jù)、數(shù)據(jù)計(jì)算與處理、。相比于匯編語(yǔ)言和機(jī)器語(yǔ)言,C語(yǔ)言的可讀性更,可移植性更。一個(gè)完整的C語(yǔ)言程序由若干個(gè)函數(shù)構(gòu)成,但是只有一個(gè),也是C語(yǔ)言執(zhí)行時(shí)唯一的入口。簡(jiǎn)答題C語(yǔ)言70年代就已經(jīng)在貝爾實(shí)驗(yàn)室被發(fā)明了,為什么經(jīng)過(guò)這么多年,C語(yǔ)言依然經(jīng)久不衰?請(qǐng)從可讀性、性能、可移植性這3個(gè)角度,來(lái)比較機(jī)器語(yǔ)言、匯編語(yǔ)言和C語(yǔ)言。嵌入式開(kāi)發(fā)為什么主流采用C語(yǔ)言?使用C語(yǔ)言編寫(xiě)程序時(shí),在代碼書(shū)寫(xiě)上有什么要求?為什么代碼的書(shū)寫(xiě)格式非常重要?論述題小張是一個(gè)C語(yǔ)言的程序員,他平時(shí)書(shū)寫(xiě)代碼比較隨意,不注重格式的美觀與規(guī)范。項(xiàng)目經(jīng)理老王希望他能夠按照公司指定的編程規(guī)范進(jìn)行代碼編寫(xiě),但小張理直氣壯地說(shuō):“長(zhǎng)的好看能當(dāng)飯吃嗎?我只要能實(shí)現(xiàn)客戶要求的功能,就能幫公司賺錢(qián)了。程序員重要的是算法,是創(chuàng)新性,沒(méi)必要搞那么多條條框框吧?”如果你是老王,你將如何說(shuō)服小張呢?C語(yǔ)言是用來(lái)編程程序,讓計(jì)算機(jī)執(zhí)行特定任務(wù)的高級(jí)編程語(yǔ)言。請(qǐng)問(wèn)與人類的自然語(yǔ)言相比,計(jì)算機(jī)的高級(jí)語(yǔ)言有哪些相似點(diǎn)和不同點(diǎn)?有人說(shuō):C語(yǔ)言改變了世界。如何來(lái)理解這句話?第2章程序設(shè)計(jì)基礎(chǔ)知識(shí)課后習(xí)題一、單選題1.對(duì)于變量定義:inta,b=0;下列敘述中正確的是()A.a的初始值是0,b的初始值不確定B.a的初始值不確定,b的初始值是0C.a和b的初始值都是0D.a和b的初始值都不確定2.以下選項(xiàng),()不是合法的常量。A.38B.038C.3E8D."\38"3.以下選項(xiàng),()是合法的標(biāo)識(shí)符。A.TOMB.charC.1stD.You&Me4.以下運(yùn)算符中,優(yōu)先級(jí)最高的是()。A.<=B.!C.%D.&&5.C語(yǔ)言中,要求運(yùn)算對(duì)象只能為整數(shù)的運(yùn)算符是()。A.*B./C.!D.%6.用邏輯表達(dá)式表示“大于10且小于20的數(shù)”,正確的是()。A.10<x<20B.x>10||x<20C.x>10&x<20D.!(x<=10||x>=20)7.閱讀以下程序,當(dāng)輸入數(shù)據(jù)的形式為25,13,10<回車(chē)鍵>時(shí),正確的輸出結(jié)果為()。intmain(){ intx,y,z; scanf("%d%d%d",&x,&y,&z);printf("x+y+z=%d\n",x+y+z);}A.x+y+z=48B.x+y+z=35C.48D.不確定的值8.已知ch是字符型變量,下面不正確的賦值語(yǔ)句是()。A.ch='a+b'B.ch='\0'C.ch='7'+'9'D.ch=7+99.判斷char型變量ch是否為大寫(xiě)字母的正確表達(dá)式是()。A.'A'<=ch<='Z’B.(ch>='A’)&(ch<='Z’)C.(ch>='A’)&&(ch<='Z’)D.(‘A’<=ch)AND(‘Z’>=ch)10.程序運(yùn)行后的輸出結(jié)果是()。#include<stdio.h>

main()

{

inta=3;

printf(“%d\n”,a+=a-=a*a);

}

A.9B.-12C.0D.3二、程序填空題1.求解兩個(gè)整數(shù)的最大值。#include<stdio.h>intmain(){intnum1,num2;//輸入兩個(gè)整數(shù)scanf("%d",&num1);scanf("%d",&num2);intmax=_______________________________;//使用條件表達(dá)式判斷最大值并輸出printf("%d",max);return0;}2.將數(shù)字字符轉(zhuǎn)換成數(shù)字:要求填入一個(gè)表達(dá)式,可將輸入的數(shù)字字符轉(zhuǎn)換成對(duì)應(yīng)的數(shù)字輸出。例如:輸入數(shù)字字符3,輸出數(shù)字3。#include<stdio.h>intmain(){charch; intvalue; scanf("%c",&ch);—————————;printf("%d",value); return0;}3.分離正整數(shù):完善程序,實(shí)現(xiàn)從鍵盤(pán)輸入一個(gè)四位正整數(shù),分離出它的每一位數(shù)字并輸出。#include<stdio.h>intmain(){intn,d4,d3,d2,d1;//變量n用于存儲(chǔ)輸入的正整數(shù) scanf("%d",&n); d1=—————————;//分離出的個(gè)位數(shù)存入變量d1 d2=n/10%10; d3=—————————;//分離出的百位數(shù)存入變量d3 d4=—————————;//分離出的千位數(shù)存入變量d4 printf("%d%d%d%d\n",d4,d3,d2,d1);//按照千位百位十位個(gè)位的順序輸出 return0;}4.將秒數(shù)轉(zhuǎn)換成時(shí)分秒:從鍵盤(pán)輸入一個(gè)以秒為單位的時(shí)間值整數(shù),將其轉(zhuǎn)換成時(shí)、分、秒的形式輸出。#include<stdio.h>intmain(void){intt,h,m,s;//變量t用于存儲(chǔ)輸入的總秒數(shù) scanf("%d",&t); s=—————————;//秒m=—————————;//分h=—————————;//時(shí) printf("%d:%d:%d\n",h,m,s);//時(shí)分秒之間用英文冒號(hào)間隔 return0;}5.今年最后一天是星期幾:用整數(shù)1表示”星期一“……整數(shù)6表示”星期六“,整數(shù)0表示”星期天“,下列程序根據(jù)用戶輸入的年份和該年1月1日所屬的”星期幾“,輸出該年12月31日所屬”星期幾“。請(qǐng)完成補(bǔ)充下列程序。#include<stdio.h>intmain(){intyear,firstWeekday;scanf("%d%d",&year,&firstWeekday);intlastWeekday=—————————?(firstWeekday+365)%7:———————;printf("31,Decemberin%disWeekdayNo.%d\n",year,lastWeekday);return0;}三、編程題1.定期存款:客戶到銀行存1年期的定期存款。請(qǐng)編寫(xiě)程序,輸入存款金額和1年期定期存款利率(百分?jǐn)?shù)),計(jì)算并輸出本金、到期利息和本息合計(jì)金額。注:存款金額小于100萬(wàn)元,利率為百分?jǐn)?shù),低于10%。2.三角形面積:如圖所示,請(qǐng)編寫(xiě)程序,輸入三角形的底b和高h(yuǎn),計(jì)算并輸出三角形的面積a。3.華氏溫度轉(zhuǎn)攝氏溫度:編寫(xiě)一個(gè)程序,提示用戶輸入一個(gè)浮點(diǎn)數(shù)表示華氏溫度值,然后計(jì)算并輸出對(duì)應(yīng)的攝氏溫度值。4.求圓柱體的周長(zhǎng)、面積和體積:輸入一個(gè)圓柱體的半徑和高度,求圓柱體底面的圓周長(zhǎng)、圓面積和圓柱體的體積,請(qǐng)按照周長(zhǎng)、面積和體積的順序輸出,每個(gè)結(jié)果都取小數(shù)點(diǎn)后2位。π=3.14。5.汽車(chē)在有里程標(biāo)志的公路上行駛,從鍵盤(pán)輸入開(kāi)始里程L1和結(jié)束的里程L2,及時(shí)間(以小時(shí)H、分鐘M、秒S輸入),計(jì)算并輸出其平均速度V(公里數(shù)/每小時(shí))。6.今年高考,小明順利地考入了自己心儀的大學(xué)。媽媽給他發(fā)了n個(gè)紅包,每個(gè)紅包的大小是m元。小明為了鼓勵(lì)弟弟和妹妹努力學(xué)習(xí),分別給每人發(fā)了一個(gè)紅包,大小是p元。請(qǐng)問(wèn)小明現(xiàn)在還剩多少錢(qián)。7.在計(jì)算機(jī)內(nèi)部,英文字母依ASCII碼分別由連續(xù)的整數(shù)來(lái)表示。比如,大寫(xiě)的英文字母A的ASCII碼值為65,B的碼值為66,然后依次遞增,Z的碼值為90。請(qǐng)編程計(jì)算:從鍵盤(pán)讀取大寫(xiě)字母Q(代號(hào),其值由具體輸入確定),請(qǐng)問(wèn)Q所代表的大寫(xiě)字母是字母表中的第幾個(gè)字母(從1開(kāi)始計(jì)數(shù),即A為第1個(gè)字母)?第3章控制結(jié)構(gòu)習(xí)題1.單選題(1)結(jié)構(gòu)化程序設(shè)計(jì)的3種結(jié)構(gòu)是()。A.順序結(jié)構(gòu),選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu)B.分支結(jié)構(gòu),數(shù)組結(jié)構(gòu),循環(huán)結(jié)構(gòu)C.順序結(jié)構(gòu),分支結(jié)構(gòu),跳轉(zhuǎn)結(jié)構(gòu)D.分支結(jié)構(gòu),選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu)(2)為了避免嵌套的if-else語(yǔ)句的二義性,C語(yǔ)言規(guī)定else總是與()組成配對(duì)關(guān)系。A.縮排位置相同的ifB.在其之前未配對(duì)的ifC.在其之前未配對(duì)的最近的ifD.同一行上的if(3)若有定義:inta=1,b=2,c=3;則執(zhí)行以下程序段后a,b,c的值分別為()。if(a<b){c=a;a=b;b=c;}A.a=1,b=2,c=3B.a=2,b=3,c=1C.a=2,b=3,c=3D.a=2,b=1,c=1(4)下列選項(xiàng)中,能求出x和y中最小值,并賦值給min的是()。A.if(x>y)min=x;elsemin=y;B.min=x<y?x:y;C.if(x<y)min=x;D.min=x>y?x:y;(5)下列程序段的輸出結(jié)果是()。inta=3,b=5;if(a=b){printf("%d=%d",a,b);}else{printf("%d!=%d",a,b);}A.5=5B.3=3C.3!=5D.5!=3(6)for循環(huán)的三個(gè)表達(dá)式分別是()。A.初始化表達(dá)式、條件表達(dá)式、更新表達(dá)式B.初始化表達(dá)式、循環(huán)體、更新表達(dá)式C.判斷表達(dá)式、循環(huán)體、更新表達(dá)式D.判斷表達(dá)式、更新表達(dá)式、循環(huán)體(7)下面程序的運(yùn)行結(jié)果是()。#include<stdio.h>main(){intnum=0;while(num<=2){num++;printf(“%d”,num);}}A.1B.12C.123D.1234(8)以下程序段的循環(huán)次數(shù)是()。for(i=2;i==0;)printf(“%d”,i--)A.無(wú)限次B.1次C.0次D.2次(9)要求通過(guò)whlie循環(huán)不斷讀入字符,當(dāng)讀入字母N時(shí)結(jié)束循環(huán)。若變量已正確定義,下列正確的程序段是()。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);(10)以下程序段中,說(shuō)法正確的是()。s=0;i=1;while(i<=10){s=s+i;if(s>20){break;}i++;}A.當(dāng)i大于10或者s大于20時(shí),while循環(huán)體執(zhí)行break語(yǔ)句結(jié)束循環(huán)。B.當(dāng)i小于等于10或者s大于20時(shí),while循環(huán)體執(zhí)行break語(yǔ)句結(jié)束循環(huán)。C.當(dāng)i小于等于10并且s大于20時(shí),while循環(huán)體執(zhí)行break語(yǔ)句結(jié)束循環(huán)。D.當(dāng)i大于10并且s大于20時(shí),while循環(huán)體執(zhí)行break語(yǔ)句結(jié)束循環(huán)。(11)語(yǔ)句while(!E);中的表達(dá)式!E等價(jià)于()。A.E==0B.E!=1C.E!=0D.E==1(12)以下程序執(zhí)行結(jié)果是()。a=1;b=2;c=2;while(a<b<c){t=a;a=b;b=t;c--;}printf("%d,%d,%d",a,b,c);A.1,2,0 B.2,1,0 C.1,2,1D.2,1,1(13)運(yùn)行以下程序段,輸入6514<回車(chē)>,則輸出結(jié)果為()。intm,n;scanf("%d%d",&m,&n);while(m!=n){while(m>n){m=m-n;}while(n>m){n=n-m;}}printf("m=%d\n",m);A.m=3B.m=2C.m=1D.m=0(14)下列程序段運(yùn)行后m的值是()。inti,j,m=0;for(i=1;i<=3;i++)for(j=2;j<=4;j++)m=m+i+j;A.33B.30C.45D.27程序填空題(1)輸入3個(gè)整數(shù),輸出其中最大的數(shù)。#include<stdio.h>intmain(){inta,b,c,max;scanf("%d%d%d",&a,&b,&c);max=0;if(a>b){if(a>c){ }else{max=c;}}else{if( ){max=b;}else{ }}printf("%d\n",max);return0;}(2)輸入一個(gè)整數(shù),輸出其逆序數(shù)。要求定義并調(diào)用函數(shù)reverse(intnumber),它的功能是返回number的逆序數(shù)。例如reverse(-12345)的返回值是-54321,reverse(120)的返回值是21。intreverse(intnumber){intdigit,flag,res; flag=number<0?-1:1;if( ){number=-number;}do{digit=number%10;res= number/=10;}while(number!=0);returnflag*res;}(3)輸入一個(gè)非負(fù)整數(shù),求1+1/2!+...+1/n!。假設(shè)變量已正確定義,要求使用嵌套循環(huán)編程。scanf("%d",&n);sum= for(i=1;i<=n;i++){factor= for(j=1;j<=i;j++){factor=factor*j;}sum=sum+ }printf("%.8f\n",sum);(4)輸入一個(gè)正整數(shù)n(1<=n<=9),計(jì)算并輸出s=1+12+123+1234+12...n(n位數(shù))的值。假設(shè)變量已正確定義。scanf("%d",&n);s=0; for(i=1; ;i++){ s=s+t;}printf("%d\n",s);(5)本程序的功能是輸出3位數(shù)中的所有完數(shù)。如果一個(gè)整數(shù)n等于其所有因子(不含n本身)之和,則n為完數(shù)。例如,6和28都是完數(shù),因?yàn)?=1+2+3,28=1+2+4+7+14。#include<stdio.h>intmain(){intn,i,sum;for(n=100;n<1000; ){sum=0;/*用來(lái)保存n的因子(不含n本身)之和*/for(i=1; ;i++)if(n%i==0)sum+=i;if( )printf("%5d",n);}return0;}編程題編寫(xiě)一個(gè)程序,接受用戶輸入的整數(shù),然后判斷這個(gè)整數(shù)是奇數(shù)還是偶數(shù),并輸出相應(yīng)的結(jié)果。珍惜糧食,拒絕浪費(fèi)。本題要求根據(jù)某自助餐廳的收費(fèi)標(biāo)準(zhǔn)計(jì)算餐費(fèi)。具體標(biāo)準(zhǔn)如下:1)6歲(含6歲)以下人群收費(fèi)10元;2)6-12歲(含12歲)半價(jià)收費(fèi);3)超過(guò)12歲收全價(jià)78元;4)為杜絕浪費(fèi),吃剩食材每250克收取10元(不足250克不收費(fèi))。輸入年齡與吃剩食材重量(整數(shù),單位為克),輸出應(yīng)付餐費(fèi)。輸出平年中月份的天數(shù)。編寫(xiě)一個(gè)程序,輸入一個(gè)整數(shù)表示月份(1-12),然后輸出該月份在平年中的天數(shù)。輸入的月份范圍為1到12之間的整數(shù),若輸入無(wú)效,則輸出輸入錯(cuò)誤輸入三個(gè)整數(shù),并以非遞增序輸出結(jié)果。從鍵盤(pán)輸入兩個(gè)正整數(shù)a和b,計(jì)算并輸出a到b之間所有奇數(shù)的和。某次比賽中有7位評(píng)委進(jìn)行評(píng)分,評(píng)分規(guī)則按照百分制整數(shù)進(jìn)行打分。請(qǐng)?jiān)O(shè)計(jì)一個(gè)程序,輸入7位評(píng)委的評(píng)分,計(jì)算其中的最高分并進(jìn)行輸出。已知不等式:1!+2!+3!+...+m!<n,請(qǐng)編程對(duì)用戶指定的正整數(shù)n值計(jì)算并輸出滿足該不等式的m的整數(shù)解。本題目要求讀入2個(gè)正整數(shù)A和B,然后輸出它們的最大公約數(shù)和最小公倍數(shù)。冰雹猜想。冰雹猜想的內(nèi)容是:任何一個(gè)大于1的整數(shù)n,按照n為偶數(shù)則除等2,n為奇數(shù)則乘3后再加1的規(guī)則不斷變化,最終都可以變化為1。例如,n等于20,變化過(guò)程為:20、10、5、16、8、4、2、1。編寫(xiě)程序,用戶輸入n,輸出變化過(guò)程以及變化的次數(shù)。古代《張丘建算經(jīng)》中有一道百雞問(wèn)題:雞翁一,值錢(qián)五;雞母一,值錢(qián)三;雞雛三,值錢(qián)一。百錢(qián)買(mǎi)百雞,問(wèn)雞翁、母、雛各幾何?其意為:公雞每只5元,母雞每只3元,小雞3只1元。請(qǐng)用窮舉法編程計(jì)算,若用100元買(mǎi)100只雞,則公雞、母雞和小雞各能買(mǎi)多少只。哥德巴赫猜想。自然科學(xué)的皇后是數(shù)學(xué),數(shù)學(xué)的皇冠是數(shù)論;哥德巴赫猜想,則是皇冠上的明珠。一七四二年,德國(guó)數(shù)學(xué)家哥德巴赫發(fā)現(xiàn),每一個(gè)大偶數(shù)都可以寫(xiě)成兩個(gè)素?cái)?shù)的和,有些偶數(shù)可以分解成多對(duì)素?cái)?shù)的和。例如:10=3+7,10=5+5,即10可以分解為2對(duì)不同素?cái)?shù)的和,但他和歐拉有生之年都不能夠證明它。從此,這成了一道難題,吸引了成千上萬(wàn)數(shù)學(xué)家的注意。兩百多年來(lái),多少數(shù)學(xué)家企圖給這個(gè)猜想作出證明,都沒(méi)有成功。我國(guó)著名數(shù)學(xué)家陳景潤(rùn)先生畢生投身到數(shù)學(xué)研究中,為中國(guó)乃至世界數(shù)學(xué)的研究做出了杰出的貢獻(xiàn),尤其對(duì)哥德巴赫猜想的證明做了有效的推動(dòng)。下面讓我們編程來(lái)測(cè)試一下哥德巴赫猜想吧。輸入一個(gè)大于6的正整數(shù)n,編程統(tǒng)計(jì)偶數(shù)n可以分解為多少對(duì)不同的素?cái)?shù)之和,并輸出對(duì)應(yīng)的分解式。第4章函數(shù)課后習(xí)題一、單選題1.在C語(yǔ)言中,函數(shù)的返回類型可以是下列哪種?A.intB.voidC.charD.以上都可以2.下面哪個(gè)語(yǔ)句可以用來(lái)調(diào)用一個(gè)函數(shù)?A.return函數(shù)名;B.函數(shù)名;C.int函數(shù)名;D.調(diào)用函數(shù)名;3.下面哪種方式可以傳遞參數(shù)給函數(shù)?A.通過(guò)值傳遞B.通過(guò)引用傳遞C.通過(guò)指針傳遞D.以上都可以4.在C語(yǔ)言中,函數(shù)的定義通常包括以下部分:A.函數(shù)名、返回類型和參數(shù)列表B.函數(shù)名、參數(shù)列表和函數(shù)體C.參數(shù)列表、函數(shù)名和函數(shù)體D.返回類型、參數(shù)列表和函數(shù)體5.在C語(yǔ)言中,下面哪個(gè)關(guān)鍵字用于定義函數(shù)?A.funcB.defC.functionD.以上都不是6.某個(gè)函數(shù)的形參列表為"inta,floatb",下面哪個(gè)選項(xiàng)中的函數(shù)調(diào)用是正確的?A.funcName()B.funcName(10,3.14)C.funcName(10,"string")D.funcName("abc",3.14)7.在C語(yǔ)言中,函數(shù)的聲明通常包括以下哪些部分?A.返回類型、函數(shù)名和參數(shù)列表B.返回類型、參數(shù)列表和函數(shù)體C.參數(shù)列表、函數(shù)名和函數(shù)體D.參數(shù)列表、返回類型和函數(shù)體8.在函數(shù)定義中,下面哪個(gè)關(guān)鍵字用于指定函數(shù)返回的值?A.returnB.breakC.continueD.sizeof9.在C語(yǔ)言中,下列哪個(gè)選項(xiàng)用于在程序中調(diào)用標(biāo)準(zhǔn)庫(kù)函數(shù)時(shí)提供定義?A.#defineB.#pragmaC.#includeD.#ifdef10.在C語(yǔ)言中,下列哪個(gè)選項(xiàng)用于在函數(shù)中提前結(jié)束循環(huán)或返回?A.returnB.breakC.continueD.exit()二、程序填空題(補(bǔ)全程序)1、#include<stdio.h>//填空處(1):聲明函數(shù)原型intmain(){intnum=5;//填空處(2):調(diào)用函數(shù)并打印返回值return0;}//填空處(3):定義函數(shù){//填空處(4):函數(shù)實(shí)現(xiàn)}2、#include<stdio.h>//填空處(1):聲明函數(shù)原型intcube(int);intmain(){intnum=5;//填空處(2):調(diào)用函數(shù)并打印返回值printf("Thecubeof%dis%d\n",num,cube(num));return0;}//填空處(3):定義函數(shù)intcube(intx){//填空處(4):函數(shù)實(shí)現(xiàn)returnx*x*x;}3、#include<stdio.h>//填空處(1):聲明函數(shù)原型intadd(intx,inty);intmain(){intresult;inta=6,b=3;//填空處(2):調(diào)用函數(shù)并保存返回值至resultresult=add(a,b);printf("Theresultis:%d\n",result);return0;}//填空處(3):定義函數(shù)intadd(intx,inty){//填空處(4):函數(shù)實(shí)現(xiàn)returnx+y;}4、#include<stdio.h>//在此處聲明函數(shù)原型,函數(shù)名為addition,參數(shù)為兩個(gè)整數(shù)intmain(){intresult;intx=8,y=5;//調(diào)用函數(shù)并將返回值賦給resultprintf("Thesumis:%d\n",result);return0;}//在此處定義函數(shù)addition,接收兩個(gè)整數(shù)參數(shù),返回它們的和{//在此處補(bǔ)充函數(shù)體}5、#include<stdio.h>//在此處聲明函數(shù)原型,函數(shù)名為absoluteValue,參數(shù)為一個(gè)整數(shù)intmain(){intnum,result;num=-10;//調(diào)用函數(shù)并將返回值賦給resultprintf("Theabsolutevalueis:%d\n",result);return0;}//在此處定義函數(shù)absoluteValue,接收一個(gè)整數(shù)參數(shù),返回其絕對(duì)值{//在此處補(bǔ)充函數(shù)體}

三、編程題1、將26個(gè)英文字母分別正序和逆序打印輸出,正序時(shí)小寫(xiě)輸出,逆序是大寫(xiě)輸出。2、寫(xiě)出一個(gè)函數(shù)返回輸入正整數(shù)對(duì)應(yīng)二進(jìn)制中1的個(gè)數(shù)。3、檢查整數(shù)是否為素?cái)?shù)4、編寫(xiě)一個(gè)遞歸函數(shù),計(jì)算斐波那契數(shù)列的第n個(gè)數(shù)。5、寫(xiě)一個(gè)判斷是否是質(zhì)數(shù)的子函數(shù),在主函數(shù)輸入一個(gè)整數(shù),輸出是否為質(zhì)數(shù)的信息。6、寫(xiě)兩個(gè)子函數(shù),分別求兩個(gè)整數(shù)的最大公約數(shù)和最小公倍數(shù),用主函數(shù)調(diào)用這兩個(gè)函數(shù),并輸出結(jié)果。7、編寫(xiě)一個(gè)函數(shù),計(jì)算一個(gè)整數(shù)n的平方根(保留整數(shù)部分)。8、編寫(xiě)一個(gè)函數(shù)實(shí)現(xiàn)n的k次方,使用遞歸實(shí)現(xiàn)。9、編寫(xiě)一個(gè)函數(shù),計(jì)算n的階乘的尾部零的個(gè)數(shù)。10、編寫(xiě)一個(gè)函數(shù),驗(yàn)證哥德巴赫猜想:任何一個(gè)大于2的偶數(shù)都可以分解為兩個(gè)素?cái)?shù)的和。第4章數(shù)組課后習(xí)題一、單選題1.若有定義:inta[5]={1,2,3,4,5};則語(yǔ)句a[1]=a[3]+a[2+2]-a[3-1];運(yùn)行后a[1]的值為A.6B.5C.1D.22.給出以下定義:charx[]="abcdefg";chary[]={'a','b','c','d','e','f','g'};則正確的敘述為()。A.數(shù)組x和數(shù)組y等價(jià)B.數(shù)組x和數(shù)組y的長(zhǎng)度相同C.數(shù)組x的長(zhǎng)度大于數(shù)組y的長(zhǎng)度D.數(shù)組x的長(zhǎng)度小于數(shù)組y的長(zhǎng)度3.以下對(duì)一維數(shù)組a的正確說(shuō)明是()A.chara(10);B.inta[];C.intk=5,a[k];D.chara[3]={‘a(chǎn)’,’b’,’c’};4.若有定義inta[2][3];則對(duì)數(shù)組元素的非法引用是()。A.a[0][1/2]B.a[1][1]C.a[4-4][0]D.a[0][3]5.以下程序段給數(shù)組所有的元素輸入數(shù)據(jù),請(qǐng)選擇正確答案填入:#include<stdio.h>intmain(){inta[10]={0},i=0;while(i<10)scanf("%d",_?_);return0;}A.a+(i++)B.&a&a[i+1][i+1]C.a+iD.&a[++i]6.以下哪一種對(duì)于str的定義不恰當(dāng),有可能使strlen(str)(strlen是定義在C標(biāo)準(zhǔn)庫(kù)中的函數(shù))獲得非預(yù)期的結(jié)果:A.charstr[]="helloworld!";B.charstr[100]="X";C.charstr[4]="abcd";D.charstr[6]={65,66,67,68,69,0};7.定義如下變量和數(shù)組:inti;inta[3][3]={1,2,3,4,5,6,7,8,9};則下面語(yǔ)句的輸出結(jié)果是()for(i=0;i<3;i++)printf("%d",a[2-i][i]);A.159B.753C.123D.7898.若有說(shuō)明“inta[3][4];”,則對(duì)a數(shù)組元素的正確引用是:A.a[2][4]B.a[1,2]C.a[1+1][0]D.a(2)(1)9.數(shù)組定義為inta[3][2]={1,2,3,4,5,6},數(shù)組元素____的值為6。A.a[3][2]B.a[2][1]C.a[1][2]D.a[2][3]10.以下對(duì)二維數(shù)組a的正確說(shuō)明是()。

A.inta[3][];B.floatfa(3,4);C.doublea[1][4];D.floata(3)(4);二、程序填空題1.本題目實(shí)現(xiàn)了求M×M方陣的對(duì)角線元素之和#include<stdio.h>#defineM5intmain(void){ inta[M][M];inti,j;intsum=0;for(i=0;i<M;i++){ for(j=0;j<M;j++){ scanf("%d",&a[i][j]);if(________________){___________________}}}printf("sum=%d\n",sum);}2.請(qǐng)完善程序,實(shí)現(xiàn)以下功能:將具有n個(gè)元素的一維數(shù)組的內(nèi)容前后倒置。

輸入樣例1:

10

11121314151617181920輸出樣例1:20191817161514131211輸入樣例2:

5

1232344565輸出樣例2:

6545343212#include<stdio.h>intmain(void){intn,i,j,t;scanf("%d",__________);inta[n];for(i=0;i<=_______;i++) scanf("%d",______________);for(i=0,j=_________;____________;i++,j--){t=a[i];a[i]=a[j];a[j]=t;}}for(i=0;i<n;i++)printf("%d",a[i]);return0;}3.輸出字符數(shù)組。#include<stdio.h>intmain(){charc1[]={"Howareyou?"};printf("%s",————);return0;

}4.請(qǐng)完善程序,實(shí)現(xiàn)以下程序功能:從鍵盤(pán)輸入n個(gè)0~9的整數(shù),統(tǒng)計(jì)其中每個(gè)整數(shù)出現(xiàn)的次數(shù)。輸入樣例1:101357912345輸出樣例1:0的出現(xiàn)次數(shù)=01的出現(xiàn)次數(shù)=22的出現(xiàn)次數(shù)=13的出現(xiàn)次數(shù)=24的出現(xiàn)次數(shù)=15的出現(xiàn)次數(shù)=26的出現(xiàn)次數(shù)=07的出現(xiàn)次數(shù)=18的出現(xiàn)次數(shù)=09的出現(xiàn)次數(shù)=1#include<stdio.h>intmain(void){intx,n,i,c[10]={————};scanf("%d",————);for(i=0;——;i++){ scanf("%d",&x);_____++;}for(i=0;i<10;i++)//輸出統(tǒng)計(jì)結(jié)果printf("%d的出現(xiàn)次數(shù)=%d\n",i,_____);return0;}5.編寫(xiě)一個(gè)函數(shù),使給定的一個(gè)二維數(shù)組(3X3)轉(zhuǎn)置,即行列互換#include<stdio.h>#defineN3voidconvert(intarray[3][3]);voidmain(){intarr[N][N]={{1,2,3},{4,5,6},{7,8,9}}; inti,j;convert(arr);for(i=0;i<N;i++){for(j=0;j<N;j++) printf("%3d",arr[i][j]); printf("\n"); }}voidconvert(intarray[3][3]){inti,j,t;for(i=0;i<N;i++)for(j=i+1;j<N;j++){t=array[i][j];array[i][j]=array[j][i]; _____________ }}三、編程題1.設(shè)一個(gè)二維數(shù)組a[3][6]存儲(chǔ)3門(mén)課程6個(gè)人的成績(jī)。然后再設(shè)一個(gè)一維數(shù)組v[3]存儲(chǔ)每門(mén)課的平均分,設(shè)一個(gè)一維數(shù)組w[6]存儲(chǔ)每個(gè)人的平均分。成績(jī)都寫(xiě)在程序里面,數(shù)組也都在程序里靜態(tài)定義。然后打印每門(mén)課的平均分。打印每個(gè)同學(xué)的平均分。2.將一個(gè)字符串通過(guò)換行符,來(lái)將字符串內(nèi)容分成兩行用puts()輸出。3.使用for循環(huán)逆向(從最高的數(shù)組下標(biāo)一直到最低的數(shù)組下標(biāo))輸出一個(gè)一維數(shù)組,初始的數(shù)組成員值寫(xiě)在程序里4.兩個(gè)矩陣相加:使用多維數(shù)組將兩個(gè)矩陣相加。每個(gè)矩陣大小由scanf()輸入決定。程序中先靜態(tài)定義比較大的兩個(gè)矩陣,然后用戶輸入的大小的矩陣使用靜態(tài)定義矩陣的一部分空間。矩陣的全部成員的值由scanf()輸入。相加完成后,要將兩個(gè)矩陣的成員的值用printf()輸出。5.有個(gè)初始的一維數(shù)組,數(shù)組的初始成員值寫(xiě)在代碼里面。另外定義了兩個(gè)一維數(shù)組:奇數(shù)數(shù)組、偶數(shù)數(shù)組。遍歷初始的數(shù)組,遇到成員是奇數(shù)的,就把這個(gè)奇數(shù)寫(xiě)到奇數(shù)數(shù)組里。遇到成員是偶數(shù)的,就把這個(gè)偶數(shù)寫(xiě)到偶數(shù)數(shù)組里。最后把這三個(gè)數(shù)組的內(nèi)容打印出來(lái)。6.矩陣轉(zhuǎn)換。首先在程序里靜態(tài)定義兩個(gè)矩陣。一個(gè)是有原始數(shù)據(jù)的矩陣,數(shù)據(jù)值由scanf()輸入。輸入結(jié)束后,將矩陣打印出來(lái)。然后虛擬從矩陣的左上角劃一根線到矩陣的右下角。以這條線作為一根對(duì)稱線,線兩邊的成員彼此交換位置。最后把位置交換后的矩陣打印出來(lái)。7.靜態(tài)定義一個(gè)較大的一維數(shù)組,其空間供后面使用。用scanf()輸入矩陣的大小,然后輸入該一維數(shù)組的成員值。最后,查找這個(gè)一維數(shù)組中最大的元素,打印出來(lái)。8.數(shù)組拷貝:將一個(gè)數(shù)組復(fù)制給另外一個(gè)數(shù)組。靜態(tài)定義好兩個(gè)相同大小的一維數(shù)組。其中一個(gè)數(shù)組在程序里賦好值。復(fù)制到另一個(gè)數(shù)組的工作做完后,分別把兩個(gè)數(shù)組的成員打印出來(lái)。指針課后習(xí)題單選題設(shè)變量定義為inta[2]={1,3},*p=&a[0]+1;,則*p的值是______。234&a[0]+1若定義pf為指向float類型變量f的指針,下列語(yǔ)句中_______是正確的。floatf,*pf=f;floatf,*pf=&f;float*pf=&f,f;floatf,*pf=0.0;存在定義inta[10],x,*pa;,若pa=&a[0],下列的哪個(gè)選項(xiàng)和其他3個(gè)選項(xiàng)不是等價(jià)的是_________?x=*pa;x=*(a+1);x=*(pa+1);x=a[1];程序運(yùn)行后的輸出結(jié)果是____。#include<stdio.h>intmain(){inta[]={1,2,3,4,5,6,7,8,9,0},*p;for(p=a;p<a+10;p++)printf("%d,",*p);return0;}1,2,3,4,5,6,7,8,9,0,2,3,4,5,6,7,8,9,10,1,0,1,2,3,4,5,6,7,8,9,1,1,1,1,1,1,1,1,1,1,對(duì)于如下說(shuō)明,語(yǔ)法和語(yǔ)義都正確的賦值是_____。intc,*s,a[]={1,3,5};c=*s;s[0]=a[0];s=&a[1];c=a;下列選項(xiàng)正確的語(yǔ)句組是_______。char*s;s="hello!";char*s;s=["hello!"];chars[8];s="hello!";chars[8];s={"hello"};有以下定義,chars[]="012M356",*p=s;不能表示字符M的表達(dá)式是______。*(p+3)s[3]*(s+3)*p+3有定義語(yǔ)句chararray[]="China";則數(shù)組array所占用的空間為_(kāi)______。4個(gè)字節(jié)5個(gè)字節(jié)6個(gè)字節(jié)7個(gè)字節(jié)若有語(yǔ)句“inta[]={1,2,3,4,5};”,則關(guān)于語(yǔ)句“int*p=a;”的說(shuō)法正確的是_______。把a(bǔ)[0]的值賦給*p把a(bǔ)[0]的值賦給變量p初始化變量p,使其指向數(shù)組a的首元素定義不正確若有int*p,a=4;和p=&a;下面_____均代表地址。a,p,*&a&*a,&a,*p*&p,*p,&a&a,&*p,p程序填空題交換實(shí)數(shù)。#include<stdio.h>_____________________________________intmain(){doublea,b;scanf("%lg%lg",&a,&b);printf("%g%g\n",a,b);______________________________printf("%g%g\n",a,b);return0;}voidRealSwap(double*x,double*y){doublet=*x;________________________________________}輸入樣例3.64.9輸出樣例3.64.94.93.6完成將輸入的一個(gè)數(shù)字字符串轉(zhuǎn)變?yōu)檎蛿?shù)值的功能。#include<stdio.h>voidmain(){charcstr[8];intii;longls;__________________ls=0;for(ii=0;cstr[ii]!='\0';ii++)ls=______________________printf("%ld",ls);}在一個(gè)字符數(shù)組中查找一個(gè)指定的字符,若數(shù)組中含有該字符則輸出該字符在數(shù)組中第一次出現(xiàn)的位置(下標(biāo)值)否則輸出-1。#include<stdio.h>voidmain(){charch='a',cstr[50];intinum,ii,iflag=1;gets(cstr);inum=___________________for(ii=0;ii<inum;ii++)if(_________________){iflag=0;break;}if(iflag==1)printf("%d",-1);else____________________}字符串復(fù)制。inti;charstr1[81],str2[81];i=0;while(_____________){_____________________i++;}____________________編程題請(qǐng)使用指針的方法編寫(xiě)程序,程序的功能是從鍵盤(pán)輸入10個(gè)數(shù),求其最大值和最小值的差。輸入格式:輸入10個(gè)整數(shù),每個(gè)整數(shù)之間用空格分隔。輸出格式:同樣例。輸入樣例:12345678910輸出樣例:differencevalue=9輸入一個(gè)以回車(chē)符為結(jié)束標(biāo)志的字符串(少于80個(gè)字符),判斷該字符串是否為回文?;匚木褪亲址行膶?duì)稱,如“abcba”、“abccba”是回文,“abcdba”不是回文。輸入格式:輸入一個(gè)以回車(chē)符為結(jié)束標(biāo)志的字符串(少于80個(gè)字符)輸出格式:為回文,輸出yes;非回文,輸出no,注意輸出的結(jié)果后面有回車(chē)符輸入樣例:abccba輸出樣例:yes本題要求提取一個(gè)字符串中的所有數(shù)字字符('0'……'9'),將其轉(zhuǎn)換為一個(gè)整數(shù)輸出。輸入格式:輸入在一行中給出一個(gè)不超過(guò)80個(gè)字符且以回車(chē)結(jié)束的字符串。輸出格式:在一行中輸出轉(zhuǎn)換后的整數(shù)。題目保證輸出不超過(guò)長(zhǎng)整型范圍。輸入樣例:free82jeep5輸出樣例:825第7章字符串課后習(xí)題一、單選題1.關(guān)于字符串賦值,以下不能正確賦值的語(yǔ)句是()。A.charstr[8]=”good!”;B.charstr[5]=”good!”;C.charstr[]=”good!”;D.charstr[5]={‘g’,’o’,’o’,’d’};2.charstring[20];使得string的內(nèi)容為"Iamstudent".選擇正確的輸入語(yǔ)句()。A.getchar(string);B.scanf("%c",&string);C.scanf("%s",&string);D.gets(string);3.設(shè)有如下定義:charname[3][10]={"Libai","Yangwanli","Wangwei"};則引用字符串“Yangwanli”的正確方式是()。A.nameB.name[1][2]C.name[1]D.name[2]4.判斷字符串s1是否大于字符串s2,應(yīng)當(dāng)使用()。A.if(s1>s2)B.if(strcmp(s1,s2))C.if(strcmp(s2,s1)>0)D.if(strcmp(s1,s2)>0)5.關(guān)于C語(yǔ)言字符串說(shuō)法錯(cuò)誤的是:()。A.C語(yǔ)言沒(méi)有設(shè)置單獨(dú)的字符串型變量,字符串可以利用字符數(shù)組來(lái)處理。B.字符串“Haha”含5個(gè)字符。前4個(gè)是有效字符,后一個(gè)是串結(jié)束符'\0'。C.“C”和'C'都是字符串。D.'\0'字符不是空格字符,'\0'的ASCII碼是0。6.以下程序的輸出結(jié)果是()。intmain(void)

{intk;charw[][10]={"ABCD","EFGH","IJKL","MNOP"};

for(k=1;k<3;k++)

printf("%s\n",w[k]);

return0;}A.ABCDFGHKLB.ABCDEFGHIJKLC.EFGJKLD.EFGHIJKL7.假設(shè)scanf語(yǔ)句執(zhí)行時(shí)輸入ABCDE<回車(chē)>,能使puts(s)語(yǔ)句正確輸出ABCDE字符串的程序段是()。A.chars[5]={"ABCDE"};puts(s);B.chars[5]={'A','B','C','D','E'};puts(s);C.char*s;scanf("%s",s);puts(s);D.char*s;s="ABCDE";puts(s);8.Thefollowingcodefragmentprintsout()。charc[]="I\t\r\\\0will\n";printf("%d",strlen(c));A.4B.15C.16D.119.下面關(guān)于字符串的程序,其輸出結(jié)果是()。#include<stdio.h>voidfun(chars[],chart){inti=0;while(s[i]){if(s[i]==t)s[i]=t-'a'+'A';i++;}}intmain(){charstr[100]="abcdefg",c='d';fun(str,c);printf("%s\n",str);return0;}A.abcdefgB.abcDefgC.ABCdEFGD.ABCDEFG10.以下哪一種對(duì)于str的定義不恰當(dāng),有可能使strlen(str)(strlen是定義在C標(biāo)準(zhǔn)庫(kù)中的函數(shù))獲得非預(yù)期的結(jié)果:()。A.charstr[]="helloworld!";B.charstr[100]="X";C.charstr[4]="abcd";D.charstr[6]={65,66,67,68,69,0};二、程序填空題1.字符串復(fù)制。以下程序段的功能是:將字符串str1的內(nèi)容復(fù)制到字符串i;charstr1[81],str2[81];i=0;while{i++;}2.從鍵盤(pán)上輸入兩個(gè)字符串,連接成一個(gè)并輸出,請(qǐng)?zhí)羁胀瓿上鄳?yīng)功能。#include<stdio.h>#defineN80intmain(void){chars1[2*N],s2[N];inti,j;gets(s1);gets(s2);while()i++;j=0;while(s2[j]!='\0'){;i++;}puts(s1);return0;}3.本題目要求寫(xiě)一個(gè)函數(shù)mystrcmp實(shí)現(xiàn)字符串比較,相等輸出0,不等輸出其差值,在主函數(shù)輸出比較結(jié)果。#include<stdio.h>#defineN20intmystrcmp(char*s1,char*s2);intmain(){charstr1[N],str2[N];gets(str1);gets(str2);printf("compareresult=%d\n",);return0;}intmystrcmp(char*s1,char*s2){while(*s1!='\0'&&*s2!='\0'){if{s1++;s2++;}else}while(*s1!='\0')return*s1;while(*s2!='\0')return-*s2;return0;}4.完成將輸入的一個(gè)數(shù)字字符串轉(zhuǎn)變?yōu)檎蛿?shù)值的功能。#include<stdio.h>voidmain(){charcstr[8];intii;longls;ls=0;for(ii=0;cstr[ii]!='\0';ii++)ls=;printf("%ld",ls);}5.本題要求輸入一個(gè)字符串S和兩個(gè)字符A和B,補(bǔ)足程序中缺失的代碼部分,使運(yùn)行程序時(shí)可以將字符串S中的字符A替換為字符B。#include<stdio.h>intmain(){chars[50],a,b,*p;//程序要實(shí)現(xiàn)用字符變量b替換字符串s中的字符變量agets(s);scanf("%c%c",&a,&b);for()if();puts(s);return0;}三、編程題1.輸入一個(gè)字符串,內(nèi)有數(shù)字和非數(shù)字字符,例如:a123x67222y35i08809x8c,請(qǐng)編寫(xiě)程序,將其中連續(xù)的數(shù)字作為一個(gè)整數(shù),依次存放到一維數(shù)組a中。例如前面的字符串,應(yīng)將123存放到a[0]中,67存放到a[1]中……,最后輸出整數(shù)的個(gè)數(shù)以及各個(gè)整數(shù)的值。2.輸入一行字符(不超過(guò)100個(gè)字符),以#為結(jié)束,輸出其中數(shù)字的和。如果這行字符沒(méi)有數(shù)字,輸出和為0。3.大家都知道一些辦公軟件有自動(dòng)將字母轉(zhuǎn)換為大寫(xiě)的功能。輸入一個(gè)長(zhǎng)度不超過(guò)100且不包括空格的字符串。要求將該字符串中的所有小寫(xiě)字母變成大寫(xiě)字母并輸出。4.從鍵盤(pán)任意輸入一個(gè)字符串,計(jì)算其實(shí)際字符個(gè)數(shù)并打印輸出,要求不能使用字符串處理函數(shù)strlen(),使用自定義子函數(shù)Mystrlen()實(shí)現(xiàn)計(jì)算字符個(gè)數(shù)的功能。5.從鍵盤(pán)上輸入一個(gè)字符串(最多80個(gè)字符),找出其中最大的字符并輸出,最后換行。6.從鍵盤(pán)中輸入一個(gè)字符串,將其逆序輸出。7.一個(gè)IP地址是用四個(gè)字節(jié)(每個(gè)字節(jié)8個(gè)位)的二進(jìn)制碼組成。請(qǐng)將32位二進(jìn)制碼表示的IP地址轉(zhuǎn)換為十進(jìn)制格式表示的IP地址輸出。第8章結(jié)構(gòu)體與共用體課后習(xí)題一、單選題1.如果結(jié)構(gòu)變量s中的生日是“1984年11月11日”,下列對(duì)其生日的正確賦值是()。structstudent{intno;charname[20];charsex;struct{intyear;intmonth;intday;}birth;};structstudents;A.year=1984;month=11;day=11;B.birth.year=1984;birth.month=11;birth.day=11;C.s.year=1984;s.month=11;s.day=11;D.s.birth.year=1984;s.birth.month=11;s.birth.day=11;2.對(duì)于以下結(jié)構(gòu)定義,++p->str中的++加在____。struct{intlen;char*str;}*p;A.指針str上B.指針p上C.str指的內(nèi)容上D.以上均不是3.若有下列定義,則以下不合法的表達(dá)式是()。structstudent{intnum;intage;};structstudentstu[3]={{101,20},{102,19},{103,20}},*p=stu;A.(p++)->numB.p++C.(*p).numD.p=&stu.age4.對(duì)于以下定義,不正確的敘述是()。structex{intx;floaty;charz;}example;A.struct是定義結(jié)構(gòu)類型的關(guān)鍵字B.example是結(jié)構(gòu)類型名C.x,y,z都是結(jié)構(gòu)成員名D.structex是結(jié)構(gòu)類型名5.設(shè)有如下定義,則對(duì)data中的a成員的正確引用是()。structsk{inta;floatb;}data,*p=&data;A.(*p).data.aB.(*p).aC.p->data.aD.p.data.a6.下面定義結(jié)構(gòu)變量的語(yǔ)句中錯(cuò)誤的是()。A.structstudent{intnum;charname[20];}s;B.struct{intnum;charname[20];}s;C.structstudent{intnum;charname[20];};structstudents;D.structstudent{intnum;charname[20];};students;7.根據(jù)下面的定義,能打印出字母M的語(yǔ)句是()。structperson{charname[10];intage;}c[10]={“John”,17,“Paul”,19,“Mary”,18,“Adam”,16};A.printf(“%c”,c[3].name);B.printf(“%c”,c[3].name[1]);C.printf(“%c”,c[2].name[0]);D.printf(“%c”,c[2].name[1]);8.對(duì)于共用體變量成員的引用,錯(cuò)誤的是()。typedefuniondata{inti;charch;floatf;doublex;}e;uniondataa,b,c,*p=&a,d[3];A.a.i=1;B.p->ch='A'C.d[2].f=12.5;D.e.x=33.65;9.設(shè)有如下定義,則sizeof(x)的值為:()。unionS{intg;doubley;charh;}x;A.4B.10C.8D.1310.若有定義:unionun{charc;inti;doubled;}x;inty;則以下語(yǔ)句中正確的是()。A.x=10.5;B.y=x;C.x.c=101;D.printf("%d",x);二、程序填空題1.輸出結(jié)構(gòu)變量所占內(nèi)存字節(jié)數(shù)。#include<stdio.h>structps{doublei;chararr[24];};intmain(){structpsbt;printf("btsize:%d\n",);return0;}2.完成下列程序,該程序計(jì)算10名學(xué)生的平均成績(jī)。#include<stdio.h>structstudent{intnum;charname[20];intscore;};structstudentstud[10];intmain(void){inti,sum=0;for(i=0;i<10;i++){scanf("%d%s%d",&stud[i].num,,&stud[i].score);sum+=stud[i].score;}printf("aver=%d\n",sum/10);return0;}3.使用指針輸出結(jié)構(gòu)體變量的成員。使用指針輸出結(jié)構(gòu)體變量stu的成員name之值#include<stdio.h>intmain(void){structstudent{intnum;charname[10];floatscore[3];}stu={2012,"WuHua",{75.4f,80,92}};structstudent*ptr;printf("%s\n",);/*必須使用指針變量ptr實(shí)現(xiàn)*/return0;}4.輸入輸出三位學(xué)生學(xué)號(hào)、姓名。#include<stdio.h>intmain(void){structstudent{intnum;charname[10];}stu[3],*ptr;inti;for(i=0;i<3;i++){scanf("%d,%s",&stu[i].num,stu[i].name);}for(ptr=stu;;){printf("%d,%s\n",ptr->num,ptr->name);}return0;}5.結(jié)構(gòu)體數(shù)組復(fù)制。本題實(shí)現(xiàn)結(jié)構(gòu)體數(shù)組的復(fù)制功能,將結(jié)構(gòu)體數(shù)組m中的全部?jī)?nèi)容復(fù)制到數(shù)組n中,最后輸出數(shù)組n中的全部?jī)?nèi)容。注意:一行輸出一個(gè)結(jié)構(gòu)體變量,成員之間以逗號(hào)分隔。#include<stdio.h>structss{charno[10];intdata;};intmain(){structssm[2]={{"A01",5},{"A02",8}},n[2];inti;for(i=0;i<2;i++)for(i=0;i<2;i++)printf("",);return0;}三、編程題1.找出總分最高的學(xué)生。給定N個(gè)學(xué)生的基本信息,包括學(xué)號(hào)(由5個(gè)數(shù)字組成的字符串)、姓名(長(zhǎng)度小于10的不包含空白字符的非空字符串)和3門(mén)課程的成績(jī)([0,100]區(qū)間內(nèi)的整數(shù)),要求輸出總分最高學(xué)生的姓名、學(xué)號(hào)和總分。輸入格式:輸入在一行中給出正整數(shù)N(≤10)。隨后N行,每行給出一位學(xué)生的信息,格式為“學(xué)號(hào)姓名成績(jī)1成績(jī)2成績(jī)3”,中間以空格分隔。輸出格式:在一行中輸出總分最高學(xué)生的姓名、學(xué)號(hào)和總分,間隔一個(gè)空格。題目保證這樣的學(xué)生是唯一的。輸入樣例:500001huanglan78837500002wanghai76807700003shenqiang87837610001zhangfeng92887821987zhangmeng808275輸出樣例:zhangfeng100012582.計(jì)算職工工資。給定N個(gè)職員的信息,包括姓名、基本工資、浮動(dòng)工資和支出,要求編寫(xiě)程序順序輸出每位職員的姓名和實(shí)發(fā)工資(實(shí)發(fā)工資=基本工資+浮動(dòng)工資-支出)。輸入格式:輸入在一行中給出正整數(shù)N。隨后N行,每行給出一位職員的信息,格式為“姓名基本工資浮動(dòng)工資支出”,中間以空格分隔。其中“姓名”為長(zhǎng)度小于10的不包含空白字符的非空字符串,其他輸入、輸出保證在單精度范圍內(nèi)。輸出格式:按照輸入順序,每行輸出一位職員的姓名和實(shí)發(fā)工資,間隔一個(gè)空格,工資保留2位小數(shù)。輸入樣例:3zhao24040075qian36012050zhou56015080輸出樣例:zhao565.00qian430.00zhou630.003.通訊錄排序輸入n個(gè)朋友的信息,包括姓名、生日、電話號(hào)碼,本題要求編寫(xiě)程序,按照年齡從大到小的順序依次輸出通訊錄。題目保證所有人的生日均不相同。輸入格式:輸入第一行給出正整數(shù)n(<10)。隨后n行,每行按照“姓名生日電話號(hào)碼”的格式給出一位朋友的信息,其中“姓名”是長(zhǎng)度不超過(guò)10的英文字母組成的字符串,“生日”是yyyymmdd格式的日期,“電話號(hào)碼”是不超過(guò)17位的數(shù)字及+、-組成的字符串。輸出格式:按照年齡從大到小輸出朋友的信息,格式同輸出。3zhang1985040313912345678wang19821020+86ian1984061913609876543輸入樣例:3zhang1985040313912345678wang19821020+86ian1984061913609876543輸出樣例:wang19821020+86ian1984061913609876543zhang19850403139123456784.計(jì)算平均成績(jī)給定N個(gè)學(xué)生的基本信息,包括學(xué)號(hào)(由5個(gè)數(shù)字組成的字符串)、姓名(長(zhǎng)度小于10的不包含空白字符的非空字符串)和成績(jī)([0,100]區(qū)間內(nèi)的整數(shù)),要求計(jì)算他們的平均成績(jī),并順序輸出平均線以下的學(xué)生名單。輸入格式:輸入在一行中給出正整數(shù)N(≤10)。隨后N行,每行給出一位學(xué)生的信息,格式為“學(xué)號(hào)姓名成績(jī)”,中間以空格分隔。輸出格式:首先在一行中輸出平均成績(jī),保留2位小數(shù)。然后按照輸入順序,每行輸出一位平均線以下的學(xué)生的姓名和學(xué)號(hào),間隔一個(gè)空格。輸入樣例:500001zhang7000002wang8000003qian9010001li10021987chen60輸出樣例:80.00zhang00001chen219875.查找書(shū)籍。給定n本書(shū)的名稱和定價(jià),本題要求編寫(xiě)程序,查找并輸出其中定價(jià)最高和最低的書(shū)的名稱和定價(jià)。輸入格式:輸入第一行給出正整數(shù)n(<10),隨后給出n本書(shū)的信息。每本書(shū)在一行中給出書(shū)名,即長(zhǎng)度不超過(guò)30的字符串,隨后一行中給出正實(shí)數(shù)價(jià)格。題目保證沒(méi)有同樣價(jià)格的書(shū)。輸出格式:在一行中按照“價(jià)格,書(shū)名”的格式先后輸出價(jià)格最高和最低的書(shū)。價(jià)格保留2位小數(shù)。輸入樣例:3ProgramminginC21.5ProgramminginVB18.5ProgramminginDelphi25.0輸出樣例:25.00,ProgramminginDelphi18.50,ProgramminginVB6.一幫一。“一幫一學(xué)習(xí)小組”是中小學(xué)中常見(jiàn)的學(xué)習(xí)組織方式,老師把學(xué)習(xí)成績(jī)靠前的學(xué)生跟學(xué)習(xí)成績(jī)靠后的學(xué)生排在一組。本題就請(qǐng)你編寫(xiě)程序幫助老師自動(dòng)完成這個(gè)分配工作,即在得到全班學(xué)生的排名后,在當(dāng)前尚未分組的學(xué)生中,將名次最靠前的學(xué)生與名次最靠后的異性學(xué)生分為一組。輸入格式:輸入第一行給出正偶數(shù)N(≤50),即全班學(xué)生的人數(shù)。此后N行,按照名次從高到低的順序給出每個(gè)學(xué)生的性別(0代表女生,1代表男生)和姓名(不超過(guò)8個(gè)英文字母的非空字符串),其間以1個(gè)空格分隔。這里保證本班男女比例是1:1,并且沒(méi)有并列名次。輸出格式:每行輸出一組兩個(gè)學(xué)生的姓名,其間以1個(gè)空格分隔。名次高的學(xué)生在前,名次低的學(xué)生在后。小組的輸出順序按照前面學(xué)生的名次從高到低排列。輸入樣例:80Amy1Tom1Bill0Cindy0Maya1John1Jack0Linda輸出樣例:AmyJackTomLindaBillMayaCindyJohn7.時(shí)間換算。本題要求編寫(xiě)程序,以hh:mm:ss的格式輸出某給定時(shí)間再過(guò)n秒后的時(shí)間值(超過(guò)23:59:59就從0點(diǎn)開(kāi)始計(jì)時(shí))。輸入格式:輸入在第一行中以hh:mm:ss的格式給出起始時(shí)間,第二行給出整秒數(shù)n(<60)。輸出格式:輸出在一行中給出hh:mm:ss格式的結(jié)果時(shí)間。輸入樣例:11:59:4030輸出樣例:12:00:10第2章程序設(shè)計(jì)基礎(chǔ)知識(shí)課后習(xí)題一、單選題1.假設(shè)已經(jīng)定義了文件指針FILE*fp,并指向了temp.txt文件,即:FILE*fp=fopen("temp.txt","w");下列可以實(shí)現(xiàn)將“China”這一字符串寫(xiě)入到temp.txt文件的語(yǔ)句是()A.fscanf(fp,"%s","China");B.fprintf(fp,"%s","China");C.fscanf("%s","China",fp);D.fprintf("%s","China",fp);2.有以下程序#include<stdio.h>main(){FILE*fp;charstr[10];fp=fopen("myfile.dat","w");fputs("abc",fp);fclose(fp);fp=fopen("myfile.dat","a+");fprintf(fp,"%d",28);rewind(fp);fscanf(fp,"%s",str);puts(str);fclose(fp);}程序運(yùn)行后在文件中的輸出結(jié)果是()A.abcB.28cC.abc28D.因類型不一致而出錯(cuò)3.函數(shù)fgetc的作用是從指定文件讀入一個(gè)字符,該文件的打開(kāi)方式可以是()。A.只寫(xiě)B(tài).追加C.讀或讀寫(xiě)D.答案B和C都正確4.直接使文件指針重新定位到文件讀寫(xiě)的首地址的函數(shù)是()。A.ftell()函數(shù)B.fseek()函數(shù)C.rewind()函數(shù)D.ferror()函數(shù)5.從fp所指向的文件中讀取兩個(gè)整數(shù)并分別賦給兩個(gè)整型變量a和b,正確的形式是()。A.fscanf(“%d%d”,&a,&b,fp);B.fscanf(fp,“%d%d”,&a,&b);C.fscanf(“%d%d”,a,b,fp);D.fscanf(fp,“%d%d”,a,b);6.在C中,系統(tǒng)自動(dòng)定義了3個(gè)文件指針:標(biāo)準(zhǔn)輸入設(shè)備文件指針stdin,默認(rèn)為鍵盤(pán);標(biāo)準(zhǔn)輸出設(shè)備文件指針stdout,默認(rèn)為顯示器;標(biāo)準(zhǔn)錯(cuò)誤輸出設(shè)備文件指針stderr,默認(rèn)為顯示器。則函數(shù)fputc(c

溫馨提示

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