《C語言程序設計:從計算思維到項目驅(qū)動(微課視頻版)》習題及答案匯 第1-12章 C語言概述-貪吃蛇_第1頁
《C語言程序設計:從計算思維到項目驅(qū)動(微課視頻版)》習題及答案匯 第1-12章 C語言概述-貪吃蛇_第2頁
《C語言程序設計:從計算思維到項目驅(qū)動(微課視頻版)》習題及答案匯 第1-12章 C語言概述-貪吃蛇_第3頁
《C語言程序設計:從計算思維到項目驅(qū)動(微課視頻版)》習題及答案匯 第1-12章 C語言概述-貪吃蛇_第4頁
《C語言程序設計:從計算思維到項目驅(qū)動(微課視頻版)》習題及答案匯 第1-12章 C語言概述-貪吃蛇_第5頁
已閱讀5頁,還剩82頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第1章C語言概述課后習題1.單選題(1)計算機能直接執(zhí)行的是(C)。A.高級語言編寫的源程序B.匯編語言編寫的源程序C.CPU機器指令編寫的程序D.C語言編寫的源程序(2)C語言被執(zhí)行時的入口是(B)。A.程序中的第一條語句B.main函數(shù)C.第一條注釋D.第一個變量定義語句(3)C語言編寫的源程序,需要經(jīng)過(A)翻譯成計算機可以直接執(zhí)行的機器碼。A.C語言編譯器B.C語言解釋器C.操作系統(tǒng)D.程序員(4)下列關于計算思維的說法,正確的是(D)。A.計算思維是只有程序員才需要具備的編程思維B.計算思維是快速口算的一種思維能力C.計算思維只能應用在計算機科學與工程中D.計算思維是使用分解、迭代、抽象等計算機科學的思維模型來解決各種問題的能力模型填空題高級語言編寫的源程序,經(jīng)過編譯或者解釋,變成計算機硬件可以直接執(zhí)行的機器碼。計算機程序一般包含3部分:輸入數(shù)據(jù)、數(shù)據(jù)計算與處理、輸出數(shù)據(jù)。相比于匯編語言和機器語言,C語言的可讀性更好,可移植性更差。一個完整的C語言程序由若干個函數(shù)構成,但是只有一個主函數(shù),主函數(shù)也是C語言執(zhí)行時唯一的入口。簡答題C語言70年代就已經(jīng)在貝爾實驗室被發(fā)明了,為什么經(jīng)過這么多年,C語言依然經(jīng)久不衰?答:因為C語言的高性能和高效率,現(xiàn)在還主流應用在嵌入式軟件開發(fā)和系統(tǒng)軟件開發(fā)中。相比于機器語言和匯編語言,C語言是高級語言,可讀性和可維護性好,方便程序員使用。但是相對于其它高級語言,如:JAVA、Python、PHP等,C語言又能直接面向硬件,編程效率和性能更好。正是由于C語言的這種兩面性,它具有中間語言的特點(被稱為高級語言中的低級語言),導致C語言的地位特殊、不能取代。請從可讀性、性能、可移植性這3個角度,來比較機器語言、匯編語言和C語言。答:可讀性:機器語言的最差(都是0,1構成的機器碼),匯編語言的稍好(采用助記符),C語言的最好(高級語言面向用戶)性能:機器語言的最好(計算機硬件直接執(zhí)行機器碼),匯編語言其次(需要匯編器將匯編代碼變成機器碼,但是匯編指令與機器指令一一對應),C語言性能最差(作為高級語言性能比不上機器語言和匯編語言)。但是相對于其它高級語言,C語言是最接近硬件的,性能是最好的。有數(shù)據(jù)顯示,C語言的性能只比機器語言和匯編語言低20%左右??梢浦残?作為高級語言,C語言的移植性最好。機器語言和匯編語言都與特定的硬件(CPU型號)相關的,移植性都不好。用C語言編寫的代碼,從一個硬件平臺換到另一個硬件平臺,往往只需要進行少量的適配修改。而用匯編和機器語言編寫的程序,都是與特定的CPU指令系統(tǒng)強綁定的,移植后就不能在新的硬件平臺使用了。嵌入式開發(fā)為什么主流采用C語言?答:因為C語言可以直接操作硬件,如位運算、指針等操作可以直接操作硬件,生成的目標代碼性能更好。而對于嵌入式開發(fā),其硬件平臺如CPU主頻、內(nèi)存等指標往往比不上PC機平臺,如智能穿戴設備不可能具有像PC機那樣的內(nèi)存,所以在嵌入式開發(fā)中必須精打細算,通過效率更高的代碼來提高硬件使用率。而在所有高級語言中,C語言的效率和性能是最高的。雖然機器語言和匯編語言的效率更高,但是可讀性太差,很難進行商業(yè)級的開發(fā),所以在現(xiàn)在的嵌入式開發(fā)中,主流還是C語言。對于一些對性能要求更高的場景,也會采用C語言+匯編語言的混合開發(fā)模式。使用C語言編寫程序時,在代碼書寫上有什么要求?為什么代碼的書寫格式非常重要?答:使用C語言編程程序時,代碼書寫上要求規(guī)范化和標準化,具有好的可讀性。具體來說,如:清晰的標識符命名讓程序閱讀見名知意,一條語句占用一行更加清晰,好的縮進對齊讓代碼可讀性好,函數(shù)的使用增強代碼的可維護性等。代碼的書寫格式可以增強代碼的可讀性和可維護性,因為在實際的企業(yè)開發(fā)中,用戶需求和代碼是經(jīng)常需要修改維護的,如果代碼書寫格式不遵循規(guī)范,就會使得代碼的維護變得非常困難。論述題小張是一個C語言的程序員,他平時書寫代碼比較隨意,不注重格式的美觀與規(guī)范。項目經(jīng)理老王希望他能夠按照公司指定的編程規(guī)范進行代碼編寫,但小張理直氣壯地說:“長的好看能當飯吃嗎?我只要能實現(xiàn)客戶要求的功能,就能幫公司賺錢了。程序員重要的是算法,是創(chuàng)新性,沒必要搞那么多條條框框吧?”如果你是老王,你將如何說服小張呢?答:老王可以這樣來說服小張:程序不僅僅是實現(xiàn)功能,良好的可讀性和可維護性也是軟件開發(fā)成敗的關鍵。如果代碼書寫不遵循規(guī)范,可能自己編寫的程序,1個月后程序員自己都看不懂了,更不提別的程序員來維護了。而在企業(yè)的商業(yè)級開發(fā)中,用戶的需求經(jīng)常發(fā)生變化,而代碼也會進行新增、修改和維護。如果書寫隨意,沒有良好的標識符命名規(guī)則、好的縮進對齊、良好的函數(shù)封裝等等,就會導致代碼很難維護。而隨著軟件規(guī)模變得越來越龐大,這種不規(guī)范的代碼越來越多,最后代碼的維護變得異常困難。所以,很多大公司都有自己的編程規(guī)范,如騰訊、阿里、華為、微軟等,都會出臺公司的C語言、Java語言編程規(guī)范??梢姶a的規(guī)范化書寫不僅僅是一個美觀的問題,對于代碼的可讀性、可維護性是非常重要的。甚至對于像Python這樣的編程語言,縮進不對齊甚至會影響功能。所以對于一個專業(yè)化的程序員,必須培養(yǎng)自己良好的編程風格和規(guī)范性。C語言是用來編程程序,讓計算機執(zhí)行特定任務的高級編程語言。請問與人類的自然語言相比,計算機的高級語言有哪些相似點和不同點?答:相同點:不管是人類的自然語言還是作為計算機高級語言的C語言,都是用來交流的,都有一定的語法規(guī)則。都有詞法、語法、語義等要素。不同點:人類的語言可以比較模糊,但是計算機的高級語言必須遵循嚴格的語法。人類的自然語言只要方便交流就可以,經(jīng)??梢杂镁?、省略的語法。但是C語言編程,必須嚴格遵循語法標準。如:C語言每條語句必須以分號結束,否則就會編譯不通過。而人類語言在使用中,特別是口語中,往往并沒有嚴格遵循語法約束。另外,C語言中的一些語義與人類語言是有區(qū)別的,例如=在人類語言中是等號,而在C語言中是賦值運算符,C語言中的等號是==。有人說:C語言改變了世界。如何來理解這句話?答:C語言出自貝爾實驗室,最開始就是為了開發(fā)UNIX操作系統(tǒng)而發(fā)明的,后來的編譯器、TCP/IP協(xié)議、智能手機操作系統(tǒng)等都是用C語言編寫的。沒有C語言,就沒有后面這些技術的實現(xiàn)。所以說:C語言改變了世界。C語言作為較早出現(xiàn)的商業(yè)級成功的編程語言,用來編寫了很多基礎軟件和其它語言的編譯器,奠定了計算機技術的基礎。在計算機技術發(fā)展的每一個重要環(huán)節(jié),如:網(wǎng)絡協(xié)議、數(shù)據(jù)庫、瀏覽器、智能手機操作系統(tǒng)、人工智能算法,都會用到C語言。特別是基礎軟件的開發(fā),如:驅(qū)動程序、高性能智能算法、編譯器都會用C語言開發(fā)。當今非常熱門的人工智能算法,也會用到C語言。第2章程序設計基礎知識課后習題答案一、單選題1.B2.B3.A4.B5.D6.D7.D8.A9.C10.B二、程序填空題1.(num1>num2)?num1:num22.value=ch-'0'3.n%10n/100%10n/1000%104.t%60t/60%60t/60/605.(year%4==0&&year%100!=0)||year%400==0(firstWeekday+365-1)%7三、編程題1.#include<stdio.h>#include<stdlib.h>intmain(){doublea,b,c;scanf("%lf\n%lf",&a,&b);c=a*b*0.01;printf("本金:%11.2f元\n",a);printf("利息:%11.2f元\n",c);printf("合計:%11.2f元",a+c);return0;}2.#include<stdio.h>#include<stdlib.h>intmain(){doubleb,h,a;scanf("%lf%lf",&b,&h);a=(b*h)/2;printf("%.2lf",a);return0;}3.#include<stdio.h>intmain(){floatfahrenheit,celsius;printf("請輸入華氏溫度值:");scanf("%f",&fahrenheit);//華氏溫度轉(zhuǎn)攝氏溫度的公式:celsius=(fahrenheit-32)*5/9celsius=(fahrenheit-32)*5/9;printf("%.2f華氏溫度等于%.2f攝氏溫度\n",fahrenheit,celsius);return0;}4.#include<stdio.h>intmain(){floatradius,height,circumference,area,volume;constdoublepi=3.14;printf("請輸入圓柱體的半徑和高度:\n");scanf("%f%f",&radius,&height);circumference=2*pi*radius;printf("圓柱體底面的圓周長為:%.2f\n",circumference);area=pi*radius*radius;printf("圓柱體底面的圓面積為:%.2f\n",area);volume=area*height;printf("圓柱體的體積為:%.2f\n",volume);return0;}5.#include<stdio.h>intmain(){doubleL1,L2,time_in_seconds,average_speed;intH,M,S;printf("輸入開始里程L1:");scanf("%lf",&L1);printf("輸入結束里程L2:");scanf("%lf",&L2);printf("輸入時間(小時H、分鐘M、秒S):");scanf("%d%d%d",&H,&M,&S);//計算總時間(小時)time_in_seconds=H+M/60+S/3600;//計算平均速度average_speed=(L2-L1)/(double)time_in_seconds;printf("平均速度為:%.2fkm/h\n",average_speed);return0;}6.#include<stdio.h>intmain(){intn,m,p;doubletotal_money=0.0;//剩余錢數(shù)//輸入紅包數(shù)量、每個紅包的大小、弟弟妹妹的紅包大小printf("請輸入紅包數(shù)量:");scanf("%d",&n);printf("請輸入每個紅包的大小:");scanf("%d",&m);printf("請輸入弟弟和妹妹的紅包大?。?);scanf("%d",&p);//計算剩余錢數(shù)total_money=n*m-2*p;//輸出剩余錢數(shù)printf("小明現(xiàn)在還剩下%.2f元。\n",total_money);return0;}7.#include<stdio.h>intmain(){charQ;printf("請輸入一個大寫字母:\n");scanf("%c",&Q);intQ_ascii=Q;intn=Q_ascii-64;//64是A的ASCII碼值printf("它是字母表中的第%d個字母。\n",n);return0;}8.#include<stdio.h>#include<stdlib.h>intg(intn,inta,intb);intmain(){charnum1,num2,num3;printf("請輸入三個數(shù)字字符(字符'1'~字符'9'):\n");scanf("%c%c%c",&num1,&num2,&num3);intresult=(num1-'0')*100+(num2-'0')*10+(num3-'0');printf("組成的整數(shù)是:%d\n",result);return0;}第3章控制結構習題參考答案單選題ACDBAACCACADCC程序填空題max=a;b>cmax=c;res=0;number<0res*10+digit;0;1;1.0/factort=0;i<=nt=t*10+i;n++i<nn==sum編程題(1)#include<stdio.h>intmain(){intx;scanf("%d",&x);if(x%2==0)printf("%disanevennumber.",x);else printf("%disanoddnumber.",x); return0;}(2)#include<stdio.h>intmain(){intage; floatweight,pay;scanf("%d%f",&age,&weight);if(age<=6) pay=10;elseif(age<=12) pay=78*0.5;else pay=78;pay+=((int)weight)/250*10;printf("Mealspayable:%.2f\n",pay); return0;}(3)#include<stdio.h>intmain(){intmonth,days; scanf("%d",&month);switch(month) { case1:days=31;break; case2:days=28;break; case3:days=31;break; case4:days=30;break; case5:days=31;break; case6:days=30;break; case7:days=31;break; case8:days=31;break; case9:days=30;break; case10:days=31;break; case11:days=30;break; case12:days=31;break; } if(month>=1&&month<=12) printf("days:%d\n",days); else printf("InputError!\n"); return0;}(4)#include<stdio.h>intmain(){inta,b,c,temp;scanf("%d%d%d",&a,&b,&c);if(a<b){temp=a;a=b;b=temp;}if(b<c){temp=b;b=c;c=temp;}if(a<b){temp=a;a=b;b=temp;}printf("%d%d%d",a,b,c); return0;}(5)#include<stdio.h>intmain(){inta,b,sum=0,i;scanf("%d%d",&a,&b);for(i=a;i<b;i++){ if(i%2) sum+=i; }printf("sum=%d\n",sum); return0;}(6)#include<stdio.h>intmain(){intscore,maxscore,i=1;scanf("%d",&score);maxscore=score;while(i<7){ scanf("%d",&score); if(score>maxscore) maxscore=score; i++; }printf("maxscore=%d\n",maxscore); return0;}(7)#include<stdio.h>intmain(){doublen;scanf("%lf",&n);inti,j; doublesum=0.0;for(i=1;i<=n;i++){doublenum1=1.0;for(j=1;j<=i;j++){num1*=j;}sum+=num1;if(sum>=n){break;}}printf("m<=%d",i-1);return0;}(8)#include<stdio.h>intmain(){intx,y,a,b;scanf("%d%d",&x,&y);a=x,b=y; while(b){inttemp=b;b=a%b;a=temp;}printf("%d,%d",a,x*y/a);return0;}(9)#include<stdio.h>intmain(){ intn; intcount=1; printf("請輸入一個數(shù)字:\n"); scanf("%d",&n); do{ if(n%2) { n=n*3+1; printf("(%d):%d\n",count++,n); } else { n/=2; printf("(%d):%d\n",count++,n); } }while(n!=1); return0;}(10)#include<stdio.h>intmain(){ inti,j,k; for(i=1;i<=19;i++){ for(j=1;j<=31;j++){ k=100-i-j; if(k/3+j*3+5*i==100&&k%3==0){ printf("公雞、母雞、小雞有:%d%d%d\n",i,j,k); } } } return0;}(11)#include<stdio.h>#include<math.h>intisprime(intx){ inti; for(i=2;i<=sqrt(x);i++) { if(x%i==0)return0; } return1;}voidgoldbach(intx){ inti,count=0; for(i=2;i<=x/2;i++) { if(isprime(i)==0) continue; if(isprime(x-i)==1) { printf("%d=%d+%d\n",x,i,x-i); count++; } } printf("count=%d\n",count);}intmain(){ intx; scanf("%d",&x); goldbach(x); return0;}第4章函數(shù)課后習題答案一、單選題答案:1.D2.B3.D4.D5.D6.B7.A8.A9.C10.B二、程序填空題1、#include<stdio.h>//填空處(1):聲明函數(shù)原型intmultiplyByTwo(int);intmain(){intnum=5;//填空處(2):調(diào)用函數(shù)并打印返回值printf("%d",multiplyByTwo(num));return0;}//填空處(3):定義函數(shù)intmultiplyByTwo(intn){//填空處(4):函數(shù)實現(xiàn)returnn*2;}2、#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ù)實現(xiàn)returnx+y;}3、#include<stdio.h>//在這里聲明函數(shù)原型intmax(int,int);intmain(){intresult;inta=6,b=3;//調(diào)用函數(shù)max,并將返回值保存在result中result=max(a,b);printf("結果為:%d\n",result);return0;}//定義函數(shù)maxintmax(intx,inty){//返回較大的數(shù)return(x>y)?x:y;}4、#include<stdio.h>//在此處聲明函數(shù)原型,函數(shù)名為addition,參數(shù)為兩個整數(shù)intaddition(inta,intb);intmain(){intresult;intx=8,y=5;//調(diào)用函數(shù)并將返回值賦給resultresult=addition(x,y);printf("Thesumis:%d\n",result);return0;}//在此處定義函數(shù)addition,接收兩個整數(shù)參數(shù),返回它們的和intaddition(inta,intb){returna+b;}5、#include<stdio.h>//在此處聲明函數(shù)原型,函數(shù)名為absoluteValue,參數(shù)為一個整數(shù)intabsoluteValue(int);intmain(){intnum,result;num=-10;//調(diào)用函數(shù)并將返回值賦給resultresult=absoluteValue(num);printf("Theabsolutevalueis:%d\n",result);return0;}//在此處定義函數(shù)absoluteValue,接收一個整數(shù)參數(shù),返回其絕對值intabsoluteValue(intx){//在此處補充函數(shù)體if(x<0){return-x;}else{returnx;}}三、編程題1、將26個英文字母分別正序和逆序打印輸出,正序時小寫輸出,逆序是大寫輸出。#include<stdio.h>voidprint_lowercase(){charc;for(c='a';c<='z';++c){printf("%c",c);}printf("\n");}voidprint_uppercase_reverse(){charc;for(c='Z';c>='A';--c){printf("%c",c);}printf("\n");}intmain(){print_lowercase();print_uppercase_reverse();return0;}2、寫出一個函數(shù)返回輸入正整數(shù)對應二進制中1的個數(shù)。#include<stdio.h>intcount_ones(intn){intcount=0;while(n){count+=n&1;n>>=1;}returncount;}intmain(){intn=9;printf("%d",count_ones(n));return0;}3、檢查整數(shù)是否為素數(shù)#include<stdio.h>#include<stdbool.h>//函數(shù)聲明boolisPrime(intnum);intmain(){inttestNumber=29;if(isPrime(testNumber)){printf("%disaprimenumber.\n",testNumber);}else{printf("%disnotaprimenumber.\n",testNumber);}return0;}//函數(shù)定義boolisPrime(intnum){if(num<=1)returnfalse;for(inti=2;i*i<=num;i++){if(num%i==0)returnfalse;}returntrue;}注釋:函數(shù)isPrime首先檢查num是否小于等于1,因為小于等于1的數(shù)不是素數(shù)。然后使用一個循環(huán)從2到sqrt(num)來檢查num是否可以被任何數(shù)整除。如果num可以被任何數(shù)整除,函數(shù)返回false,表示num不是素數(shù)。如果num無法被任何數(shù)整除,函數(shù)返回true,表示num是素數(shù)。4、編寫一個遞歸函數(shù),計算斐波那契數(shù)列的第n個數(shù)。#include<stdio.h>intfibonacci(intn){if(n<=1){returnn;}else{returnfibonacci(n-1)+fibonacci(n-2);}}intmain(){intn=10;//需要計算的斐波那契數(shù)列的第n個數(shù)printf("斐波那契數(shù)列的第%d個數(shù)為:%d\n",n,fibonacci(n));return0;}5、寫一個判斷是否是質(zhì)數(shù)的子函數(shù),在主函數(shù)輸入一個整數(shù),輸出是否為質(zhì)數(shù)的信息。#include<stdio.h>#include<stdbool.h>boolisPrime(intn){if(n<=1){returnfalse;}for(inti=2;i*i<=n;i++){if(n%i==0){returnfalse;}}returntrue;}intmain(){intn=17;//需要判斷的整數(shù)if(isPrime(n)){printf("%d是素數(shù)\n",n);}else{printf("%d不是素數(shù)\n",n);}return0;}6、寫兩個子函數(shù),分別求兩個整數(shù)的最大公約數(shù)和最小公倍數(shù),用主函數(shù)調(diào)用這兩個函數(shù),并輸出結果。#include<stdio.h>intgcd(inta,intb){if(b==0)returna;returngcd(b,a%b);}intlcm(inta,intb){returna*b/gcd(a,b);}intmain(){inta=12,b=18;printf("GCD:%d\n",gcd(a,b));printf("LCM:%d\n",lcm(a,b));return0;}7、編寫一個函數(shù),計算一個整數(shù)n的平方根(保留整數(shù)部分)。#include<stdio.h>intsqrtInt(intn){if(n<=1){returnn;}intstart=0,end=n,ans;while(start<=end){intmid=start+(end-start)/2;if(mid<=n/mid){start=mid+1;ans=mid;}else{end=mid-1;}}returnans;}intmain(){intn=16;//需要計算平方根的整數(shù)printf("%d的平方根為:%d\n",n,sqrtInt(n));return0;}8、編寫一個函數(shù)實現(xiàn)n的k次方,使用遞歸實現(xiàn)。#include<stdio.h>intpower(intn,intk){if(k==0){return1;}else{returnn*power(n,k-1);}}intmain(){intn=2;intk=10;printf("%dtothepowerof%dis%d\n",n,k,power(n,k));return0;}9、編寫一個函數(shù),計算n的階乘的尾部零的個數(shù)。#include<stdio.h>inttrailingZeroes(intn){intcount=0;while(n>0){n/=5;count+=n;}returncount;}intmain(){intn=25;//需要計算的數(shù)printf("%d的階乘末尾有%d個零\n",n,trailingZeroes(n));return0;}10、編寫一個函數(shù),驗證哥德巴赫猜想:任何一個大于2的偶數(shù)都可以分解為兩個素數(shù)的和。#include<stdio.h>#include<stdbool.h>boolisPrime(intn){if(n<=1){returnfalse;}for(inti=2;i*i<=n;i++){if(n%i==0){returnfalse;}}returntrue;}voidgoldbachConjecture(intnum){if(num<=2||num%2!=0){printf("輸入有誤!請輸入大于2的偶數(shù)。\n");return;}for(inti=2;i<=num/2;i++){if(isPrime(i)&&isPrime(num-i)){printf("%d=%d+%d\n",num,i,num-i);return;}}}intmain(){intnum=28;//需要驗證的偶數(shù)goldbachConjecture(num);return0;}第4章數(shù)組課后習題答案一、單選題1.A2.C3.D4.D5.A6.C7.B8.C9.B10.C二、程序填空題1. i==j||i+j==M-1 sum=sum+a[i][j];2. &n n-1 &a[i] n-1 i<j3.c14.0&ni<nc[x]c[i]5.array[j][i]=t;三、編程題1.#include<stdio.h>intmain(){ floatv[3]={},w[6]={};//因為一般的平均數(shù)都不是整數(shù),所以我們用float類型 inti,j; inta[3][6]={{85,93,84,85,95,86},{79,95,95,80,100,98},{80,91,93,75,97,90}}; for(i=0;i<3;i++)//行 { for(j=0;j<6;j++)//列 { v[i]+=a[i][j]; } v[i]/=6; printf("v[%d]=%.3lf\n",i,v[i]); //%.3lf意思就是取小數(shù)點后三位 } for(j=0;j<6;j++)//列 { for(i=0;i<3;i++)//行 { w[j]+=a[i][j]; } w[j]/=3; printf("w[%d]=%.3lf\n",j,w[j]); } return0;}2.#include''stdio.h"main(){charc[]="BASIC\ndBASE";puts(c);}3.#include<stdio.h>#include<windows.h>intmain(){ intarray[10]={1,2,3,4,5,6,7,8,9,0}; intloop; for(loop=9;loop>=0;loop--) printf("%d",array[loop]); printf("\n"); system("pause"); return0;}4.#include<stdio.h>#include<windows.h>intmain(){ intr,c,a[100][100],b[100][100],sum[100][100],i,j; printf("輸入行數(shù)(1~100):"); scanf("%d",&r); printf("輸入列數(shù)(1~100):"); scanf("%d",&c); //獲取第一個數(shù)組元素 printf("\n輸入第一維數(shù)組的元素:\n"); for(i=0;i<r;++i) { for(j=0;j<c;++j) { printf("輸入元素a%d%d:",i+1,j+1); scanf("%d",&a[i][j]); } } //獲取第二個數(shù)組元素 printf("輸入第二維數(shù)組的元素:\n"); for(i=0;i<r;++i) { for(j=0;j<c;++j) { printf("輸入元素a%d%d:",i+1,j+1); scanf("%d",&b[i][j]); } } //將兩個數(shù)組相加 for(i=0;i<r;++i) { for(j=0;j<c;++j) { sum[i][j]=a[i][j]+b[i][j]; } } //顯示結果 printf("\n二維數(shù)組相加結果:\n\n"); for(i=0;i<r;++i) { for(j=0;j<c;++j) { printf("%d",sum[i][j]); if(j==c-1) { printf("\n\n"); } } } system("pause"); return0;}5.#include<stdio.h>#include<windows.h>intmain(){ intarray[10]={0,1,2,3,4,5,6,7,8,9}; inteven[10],odd[10]; intloop,e,d; e=d=0; for(loop=0;loop<10;loop++) { if(array[loop]%2==0) { //偶數(shù) even[e]=array[loop]; e++; } else { //奇數(shù) odd[d]=array[loop]; d++; } } printf("原始數(shù)組->"); for(loop=0;loop<10;loop++) printf("%d",array[loop]); printf("\n偶數(shù)->"); for(loop=0;loop<e;loop++) printf("%d",even[loop]); printf("\n奇數(shù)->"); for(loop=0;loop<d;loop++) printf("%d",odd[loop]); printf("\n"); system("pause"); return0;}6.#include<stdio.h>#include<windows.h>intmain(){ inta[10][10],transpose[10][10],r,c,i,j; printf("輸入矩陣的行與列:"); scanf("%d%d",&r,&c); //從鍵盤獲取矩陣元素 printf("\n輸入矩陣元素:\n"); for(i=0;i<r;++i) { for(j=0;j<c;++j) { printf("輸入元素a%d%d:",i+1,j+1); scanf("%d",&a[i][j]); } } //顯示輸入的矩陣a[][]*/ printf("\n輸入矩陣:\n"); for(i=0;i<r;++i) { for(j=0;j<c;++j) { printf("%d",a[i][j]); //每行輸入完成后換行 if(j==c-1) printf("\n\n"); } } //轉(zhuǎn)換數(shù)組元素 for(i=0;i<r;++i) { for(j=0;j<c;++j) { //i和j交換位置 transpose[j][i]=a[i][j]; } } //顯示轉(zhuǎn)換后的矩陣a printf("\n轉(zhuǎn)換后矩陣:\n"); for(i=0;i<c;++i){ for(j=0;j<r;++j) { printf("%d",transpose[i][j]); if(j==r-1) printf("\n\n"); } } system("pause"); return0;}7.#include<stdio.h>#include<windows.h>intmain(){ inti,n; floatarr[100]; printf("輸入元素個數(shù)(0~100):"); scanf("%d",&n); printf("\n"); //接收用戶輸入 for(i=0;i<n;++i) { printf("輸入數(shù)字%d:",i+1); scanf("%f",&arr[i]); } //循環(huán),并將最大元素存儲到arr[0] for(i=1;i<n;++i) { //如果要查找最小值可以將<換成> if(arr[0]<arr[i]) arr[0]=arr[i]; } printf("最大元素為=%.2f\n",arr[0]); system("pause"); return0;}8.#include<stdio.h>#include<windows.h>intmain(){ intoriginal[10]={1,2,3,4,5,6,7,8,9,0}; intcopied[10]; intloop; //拷貝數(shù)組 for(loop=0;loop<10;loop++) { copied[loop]=original[loop]; } //輸出格式設置 printf("元素數(shù)組->拷貝后的數(shù)組\n"); //按格式打印在控制臺 for(loop=0;loop<10;loop++){ printf("%2d%2d\n",original[loop],copied[loop]); } system("pause"); return0;}第6章

指針

課后習題答案單選題B2.B3.A4.A5.C6.A7.D8.C9.C10.D程序填空題voidRealSwap(double*x,double*y); RealSwap(&a,&b); *x=*y; *y=t;gets(cstr); ls*10+cstr[ii]-'0';strlen(cstr) ch==cstr[ii]; printf("%d",ii)(str1[i]!='\0'); str2[i]=str1[i]; str2[i]='\0';編程題intmain(){intarr[10];inti,max,min,difference;//輸入10個整數(shù)for(i=0;i<10;i++){scanf("%d",&arr[i]);}//初始化最大值和最小值為第一個輸入的整數(shù)max=arr[0];min=arr[0];//遍歷數(shù)組,找到最大值和最小值for(i=1;i<10;i++){if(arr[i]>max){max=arr[i];}if(arr[i]<min){min=arr[i];}}//計算差值difference=max-min;//輸出結果printf("differencevalue=%d\n",difference);return0;}#include<stdio.h>#include<string.h>intisPalindrome(charstr[]){intlen=strlen(str);for(inti=0;i<len/2;i++){if(str[i]!=str[len-1-i]){return0;//Notapalindrome}}return1;//Palindrome}intmain(){charstr[80];fgets(str,sizeof(str),stdin);//Removenewlinecharacterfromtheinputstr[strcspn(str,"\n")]='\0';if(isPalindrome(str)){printf("yes\n");}else{printf("no\n");}return0;}#include<stdio.h>intmain(){charstr[81];gets(str);//Findthepositionofthenewlinecharacterintlen=0;while(str[len]!='\n'&&str[len]!='\0'){len++;}str[len]='\0';//Replacenewlinecharacterwithnullterminatorintresult=0;for(inti=0;str[i]!='\0';i++){if(isdigit(str[i])){result=result*10+(str[i]-'0');}}printf("%d\n",result);return0;}第7章字符串課后習題答案一、單選題1.B2.D3.C4.D5.C6.D7.D8.A9.B10.C二、程序填空題1.(str1[i]!='\0')str2[i]=str1[i];str2[i]='\0';2.i=0s1[i]!='\0's1[i]=s2[j]j++s1[i]='\0'3.mystrcmp(str1,str2)(*s1==*s2)return*s1-*s2;4.gets(cstr)ls*10+cstr[ii]-'0'5.p=s;*p!=0;p++*p==a*p=b三、編程題1.#include<stdio.h>voidfind(char*p);intmain(){//數(shù)字一個字符串charstr[80];gets_s(str);//調(diào)用函數(shù)find(str);}voidfind(char*p){inti,num[10]={0},j=0,m=0;intflag=0;for(i=0;*(p+i)!='\0';i++){if(*(p+i)>='0'&&*(p+i)<='9'){m=m*10+(*(p+i)-'0');flag=1;}else{if(flag==1){num[j++]=m;m=0;}flag=0;}}if(flag==1){num[j++]=m;}num[j]='\0';for(i=0;num[i]!='\0';i++){printf("%d\t",num[i]);}}2.#include<stdio.h>intmain(){//1.輸入一串字符串charstr[100];inti,count=0,sum=0;gets(str);for(i=0;str[i]!='\0';i++){//2.提取其中數(shù)字//2.1組合數(shù)字[無法完成]-換個思路,去掉所有的非數(shù)字元素//2.1.1一個組合前后都是字母,遇見字母組合停止記錄if(str[i]>='0'&&str[i]<='9'){count=count*10+(str[i]-'0');//3.1數(shù)字的和是后面數(shù)字和10倍相加,相當與記錄}else{sum=sum+count;//3.2如果遇見字母就停止記錄,做相加count=0;}//3.數(shù)字相加}printf("%d\n",sum);return0;}3.#include<stdio.h>chara[101];inti=0;intmain(){gets(a);while(a[i]!=NULL){if((a[i]>=97)&&(a[i]<=122))a[i]=a[i]-32;i++;}puts(a);return0;}4.#include<stdio.h>intMyStrlen(charstr[]);intMyStrlen(charstr[]){ inti;intlen=0;for(i=0;str[i]!='\0';i++){ len++;}return(len);} intmain(){ chara[80];intlen;printf("Pleaseenterastring:");gets(a);len=MyStrlen(a);printf("Thelengthofthestringis:%d\n",len);return0;}5.#include<stdio.h>#include<string.h>intmain(){chara[81];gets(a);intl=strlen(a);charm=a[0];for(inti=0;i<l;i++){if(m<a[i])m=a[i];}printf("%c",m);return0;}6.#include<stdio.h>#include<string.h>#defineN100intmain(){chara[N];intlen,i;printf("請輸入一個字符串:");gets(a);len=strlen(a);printf("逆序輸出結果為:");for(i=len-1;i>=0;i--)printf("%c",a[i]);printf("\n");return0;}7.#include<stdio.h>#include<math.h>intmain(){charstr[33];inti,t=7,sum=0;intcnt=32;gets(str);//回車鍵占據(jù)一個空格,數(shù)組長度應為33,小了會導致數(shù)組越界訪問for(i=0;i<32;i++){str[i]=str[i]-48;//將字符轉(zhuǎn)為數(shù)字sum=sum+str[i]*pow(2,t);if(t==0){printf("%d",sum);t=7;//計算完一組數(shù),將sum清零sum=0;if(i!=31){printf(".");}}elset--;}return0;}第8章結構體與共用體課后習題答案一、單選題1.D2.A3.D4.B5.B6.D7.C8.D9.C10.C二、程序填空題1.sizeof(bt)2.stud[i].name3.ptr=&stu;ptr->name4.ptr<stu+3ptr++5.n[i]=m[i];%s,%d\nn[i].no,n[i].data三、編程題1.#include<stdio.h>#include<stdlib.h>typedefstructstu{charnum[9];charname[15];ints1;ints2;ints3;structstu*next;}stu;stu*Buynode(){stu*node=(stu*)malloc(sizeof(stu));node->next=NULL;returnnode;}intmain(){intn=0;scanf("%d",&n);getchar();stu*cur,*head;cur=head=Buynode();scanf("%s",head->num);scanf("%s",head->name);scanf("%d%d%d",&head->s1,&head->s2,&head->s3);while(--n){getchar();stu*node=Buynode();scanf("%s",node->num);scanf("%s",node->name);scanf("%d%d%d",&node->s1,&node->s2,&node->s3);cur->next=node;cur=cur->next;}cur=head;intmax=cur->s1+cur->s2+cur->s3;while(cur){if((cur->s1+cur->s2+cur->s3)>max)max=cur->s1+cur->s2+cur->s3;cur=cur->next;}cur=head;while((cur->s1+cur->s2+cur->s3)!=max){cur=cur->next;}printf("%s%s%d",cur->name,cur->num,cur->s1+cur->s2+cur->s3);return0;}2.#include<stdio.h>intmain(){typedefstructo{charname[100];floatsalary1;floatsalary2;floatpay;}t;intn;scanf("%d",&n);tpeople[n];doublefee[n];for(inti=0;i<n;i++){scanf("%s%f%f%f",&people[i].name,&people[i].salary1,&people[i].salary2,&people[i].pay);fee[i]=people[i].salary1+people[i].salary2-people[i].pay;}for(inti=0;i<n;i++){printf("%s%.2lf\n",people[i].name,fee[i]);}return0;}3.#include<stdio.h>intcmp(chara[],charb[]){inti;for(i=0;i<8;i++){if(a[i]>b[i])return1;elseif(a[i]<b[i])return0;}}intmain(){intcmp(chara[],charb[]);intn,i,j;scanf("%d",&n);struct{charname[20];charold[9];chartel[50];}s[n],t;for(i=0;i<n;i++){scanf("%s%s%s",s[i].name,s[i].old,s[i].tel);}for(i=0;i<n-1;i++){for(j=0;j<n-1-i;j++){if(cmp(s[j].old,s[j+1].old)){t=s[j];s[j]=s[j+1];s[j+1]=t;}}}for(i=0;i<n;i++){printf("%s%s%s\n",s[i].name,s[i].old,s[i].tel);}}4.#include<stdio.h>typedefstructStudent{//結構體charnumber[6];//記住要設大一點,設5就不能通過charname[11];intgrade;}Student;intmain(){intn,i,j,sum=0;scanf("%d\n",&n);Studentstudent[n];for(i=0;i<n;i++){//輸入scanf("%s%s%d",student[i].number,student[i].name,&student[i].grade);sum+=student[i].grade;}doubleaverage=1.0*sum/n;printf("%.2f\n",average);for(i=0;i<n;i++){if(student[i].grade<average){printf("%s%s\n",student[i].name,student[i].number);}}return0;}5.#include<stdio.h>structbook{charname[32];doubleprice;}s[10],high,low;intmain(){intn;scanf("%d",&n);for(inti=0;i<n;i++){scanf("\n");gets(s[i].name);scanf("%lf",&s[i].price);}high=low=s[0];for(inti=1;i<n;i++){if(s[i].price>high.price)high=s[i];if(s[i].price<low.price)low=s[i];}printf("%.2lf,%s\n",high.price,);printf("%.2lf,%s\n",low.price,);return0;}6.#include<stdio.h>#include<string.h>intmain(){intn;scanf("%d",&n);intsex[n];chararr[n][15];inthx[51]={0};//標志匹配時是否已經(jīng)匹配過的條件,0表非匹配,1表已被匹配,跳過for(inti=0;i<n;i++){scanf("%d%s",&sex[i],arr[i]);}for(inti=0;i<n/2;i++){for(intj=n-1;j>(n-1)/2;j--){if(sex[i]!=sex[j]&&hx[i]==0&&hx[j]==0){printf("%s%s\n",arr[i],arr[j]);hx[i]=hx[j]=1;}}}return0;}7.#include<stdio.h>intmain(){inth,m,s;scanf("%d:%d:%d:",&h,&m,&s);intn;scanf("%d",&n);//輸入的秒數(shù)inttime;//定義變量表示時間,以秒的形式存儲time=3600*h+60*m+s+n;//將相加后的時間表示成秒if(time>=86400)//一天

溫馨提示

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

評論

0/150

提交評論