c語(yǔ)言程序設(shè)計(jì)教程2014年韓立毛徐秀芳書(shū)后練習(xí)試題參考答案解析_第1頁(yè)
c語(yǔ)言程序設(shè)計(jì)教程2014年韓立毛徐秀芳書(shū)后練習(xí)試題參考答案解析_第2頁(yè)
c語(yǔ)言程序設(shè)計(jì)教程2014年韓立毛徐秀芳書(shū)后練習(xí)試題參考答案解析_第3頁(yè)
c語(yǔ)言程序設(shè)計(jì)教程2014年韓立毛徐秀芳書(shū)后練習(xí)試題參考答案解析_第4頁(yè)
c語(yǔ)言程序設(shè)計(jì)教程2014年韓立毛徐秀芳書(shū)后練習(xí)試題參考答案解析_第5頁(yè)
已閱讀5頁(yè),還剩51頁(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)介

.PAGE56/NUMPAGES56練習(xí)題1參考答案一、選擇題序號(hào)12345678參考答案ACADCCCA二、填空題1.程序設(shè)計(jì)語(yǔ)言主要分為以下三類:機(jī)器語(yǔ)言、匯編語(yǔ)言和高級(jí)語(yǔ)言。2.在C語(yǔ)言中,一個(gè)函數(shù)一般由兩個(gè)部分組成,它們是函數(shù)首部和函數(shù)體。3.C程序開(kāi)發(fā)過(guò)程的一般步驟為:源程序的編輯、編譯、連接和運(yùn)行。4.C程序源文件的擴(kuò)展名為.c,編譯成功后產(chǎn)生的文件擴(kuò)展名為.obj,連接成功后產(chǎn)生文件擴(kuò)展名為.exe。三、應(yīng)用題略練習(xí)題2參考答案一、選擇題序號(hào)12345678910參考答案BACCBABBDC序號(hào)1112131415參考答案ABCAC二、填空題1.通常一個(gè)字節(jié)包含8個(gè)二進(jìn)制位。在一個(gè)字節(jié)中能存放的最大〔十進(jìn)制整數(shù)是255〔無(wú)符號(hào),127〔帶符號(hào),最小〔十進(jìn)制整數(shù)是-128,它的二進(jìn)制數(shù)的形式是10000000。2.在C語(yǔ)言中,十進(jìn)制數(shù)30的八進(jìn)制數(shù)表示形式是036,十六進(jìn)制數(shù)表示形式是0x1e,在內(nèi)存中它的二進(jìn)制數(shù)表示形式是0000000000011110。3.條件"20<x<30或x<-100”的C語(yǔ)言表達(dá)式是x>20&&x<30||x<-1004.若a、b和c均是int型變量,則計(jì)算表達(dá)式a=<b=4>+<c=2>后,a值為6,b值為4,c值為2。5.已知inty;floatx=-3;,執(zhí)行語(yǔ)句y=x%2;后,變量y的值為語(yǔ)句出錯(cuò)。6.字符串"ab\034\\\x79"的長(zhǎng)度為5。7.在C語(yǔ)言中〔以16位PC機(jī)為例,一個(gè)float型數(shù)據(jù)在內(nèi)存中所占用的字節(jié)數(shù)為4;一個(gè)double型數(shù)據(jù)在內(nèi)存中所占的字節(jié)數(shù)為8。8.若s是int型變量,且s=6,則s%2+<s+1>%2表達(dá)式的值為1。9.表達(dá)式pow<2.8,sqrt<double<x>>>值的數(shù)據(jù)類型為double。10.若a是int型變量,則表達(dá)式<a=4*5,a*2>,a+6的值為26。11.若a是int型變量,則執(zhí)行表達(dá)式a=25/3%3后a的值為2。12.若i為int整型變量且賦值為6,則運(yùn)算i++后表達(dá)式的值是6,變量i的值是7。13.若x為int型變量,執(zhí)行語(yǔ)句:x=10;x+=x-=x-x;則x的值為20。14.若x和y為double型變量,則表達(dá)式x=1,y=x+3/2的值是2.000000。15.<-b+sqrt<b*b-4*a*c>>/<2*a>的數(shù)學(xué)式子是[-b+√<b^2-4ac>]/2a16.sqrt<p*<p-a>*<p-b>*<p-c>>的數(shù)學(xué)式子是√[p*<p-a>*<p-b>*<p-c>]。17.判斷某一年份是否為閏年的表達(dá)式是<year%4==0||year%100==0>&&year%400!=0>。18.用隨機(jī)函數(shù)rand<>產(chǎn)生一個(gè)在[-20,20]兩位整數(shù)的表達(dá)式是x=rand<>%41-20。三、閱讀分析下列程序。1.寫(xiě)出下列程序的輸出結(jié)果。182.已知字母B的ASCII碼為66,寫(xiě)出下列程序的輸出結(jié)果。67,E3.寫(xiě)出下列程序的輸出結(jié)果。a=4,b=3練習(xí)題3參考答案一、選擇題序號(hào)12345678910參考答案DBDDCDDBBA二、填空題1.C語(yǔ)句句尾用分號(hào)結(jié)束。2.若有變量定義:inta=1,b=2,c=3,d=4,x=5,y=6;則表達(dá)式<x=a>b>&&<y=c>d>的值為0。3.使用強(qiáng)制轉(zhuǎn)換方法將正整數(shù)轉(zhuǎn)換成字符。本題程序如下:本程序的執(zhí)行結(jié)果為輸入一個(gè)正整數(shù)〔小于255:97a的ASCII碼為97。4.下面程序的輸出是-100,50i=-100,j=50i=-100j=50。5.執(zhí)行以下程序時(shí),若從第一列開(kāi)始輸入數(shù)據(jù),為使變量a=2,b=8,x=6.5,y=56.62,el='C',c2='b',正確的數(shù)據(jù)輸入形式是a=2b=8x=6.5y=56.62c1=Cc2=b。三、程序設(shè)計(jì)題1.編寫(xiě)程序交換兩個(gè)變量a,b的值,并輸出。如輸入時(shí)a=3,b=5,輸出a=5,b=3。#include<stdio.h>voidmain<>{inta,b,c;printf<"輸入兩個(gè)數(shù):a,b">;scanf<"a=%d,b=%d",&a,&b>;c=a;a=b;b=c;printf<"a=%d,b=%d",a,b>;}2.編寫(xiě)程序輸入小寫(xiě)字符boy,輸出大寫(xiě)字符BOY。#include<stdio.h>voidmain<>{charc;printf<"Input:">;scanf<"%c",&c>;c=c-32;printf<"%c",c>;}3.已知華氏溫度與攝氏溫度的轉(zhuǎn)換公式為:C=<F-32>*5/9。編寫(xiě)程序當(dāng)輸入華氏溫度F時(shí),輸出對(duì)應(yīng)的攝氏溫度。#include<stdio.h>voidmain<>{floatF;scanf<"%f",&F>;printf<"%f",<F-32>*5/9>;}4.設(shè)圓的半徑r=1.5,圓柱高h(yuǎn)=3,編寫(xiě)程序求圓周長(zhǎng)、圓面積、圓球表面積、圓球體積及圓柱體積。用scanf函數(shù)輸入數(shù)據(jù),輸出計(jì)算結(jié)果,輸出時(shí)要求有文字說(shuō)明,取小數(shù)點(diǎn)后2位數(shù)字。#include<stdio.h>intmain<>{floath,r,l,s,sq,vq,vz;floatpi=3.141592;printf<"請(qǐng)輸入圓半徑r,圓柱高h(yuǎn):">;scanf<"%f,%f",&r,&h>;l=2*pi*r;s=r*r*pi;sq=4*pi*r*r;vq=3.0/4.0*pi*r*r*r;vz=pi*r*r*h;printf<"圓周長(zhǎng)為:l=%6.2f\n",l>;printf<"圓面積為:s=%6.2f\n",s>;printf<"圓球表面積為:sq=%6.2f\n",sq>;printf<"圓球體積為:vq=%6.2f\n",vq>;printf<"圓柱體積為:vz=%6.2f\n",vz>;ruturn0;}5.編寫(xiě)程序輸入梯形的上底a,下底b和高h(yuǎn),輸出該梯形的面積。#include<stdio.h>voidmain<>{floata,b,h,s;printf<"請(qǐng)輸入梯形上底,下底和高:\n">;scanf<"%f%f%f",&a,&b,&h>;s=<a+b>*h/2;printf<"梯形面積為:%f\n",s>;}6.編寫(xiě)程序?qū)?China"譯成密碼,密碼規(guī)律是:用原來(lái)的字母后面第4個(gè)字母代替原來(lái)的字母。例如,字母"A"后面第4個(gè)字母是"E",用"E"代替"A"。因此,"China"應(yīng)譯為"Glmre"。請(qǐng)編寫(xiě)程序,用賦初值的方法使c1,c2,c3,c4,c5這5個(gè)變量的值分別為'C','h','i','n','a',經(jīng)過(guò)運(yùn)算,使c1,c2,c3,c4,c5分別變?yōu)?G','l','m','r','e'。分別用putchar函數(shù)和printf函數(shù)輸出這5個(gè)字符。#include<stdio.h>intmain<>{charc1=’C’,c2=’h’,c3=’i’,c4=’n’,c5=’a’;c1=c1+4;c2=c2+4;c3=c3+4;c4=c4+4;c5=c5+4;printf<"passwordis%c%c%c%c%c\n",c1,c2,c3,c4,c5>;return0;}#include<stdio.h>intmain<>{charc1=’C’,c2=’h’,c3=’i’,c4=’n’,c5=’a’;c1=c1+4;c2=c2+4;c3=c3+4;c4=c4+4;c5=c5+4;putchar<c1>;putchar<c2>;putchar<c3>;putchar<c4>;putchar<c5>;return0;}練習(xí)題4參考答案一、選擇題序號(hào)12345678910參考答案CBAACCBAAB二、填空題1.表示"整數(shù)x的絕對(duì)值大于5”時(shí)值為"真"的C語(yǔ)言表達(dá)式是abs<x>>5&&floor<x>==x2.以下程序運(yùn)行后的輸出結(jié)果是20,0。3.若從鍵盤(pán)輸入58,則以下程序輸出的結(jié)果是585858。4.以下程序輸出的結(jié)果是0。5.以下程序的輸出結(jié)果是2。6.若inti=10;則行下列程序后,變量i的正確結(jié)果是13。三、程序設(shè)計(jì)題1.編寫(xiě)程序輸入有3個(gè)整數(shù)a、b、c,并按照從小到大的順序輸出。#include<stdio.h>intmain<>{inta,b,c,t;printf<"pleaseinputabc\n">;scanf<"%d%d%d",&a,&b,&c>;if<a>b>{t=a;a=b;b=t;}if<a>c>{t=a;a=c;c=t;}if<b>c>{t=b;b=c;c=t;}printf<"%d,%d,%d\n",a,b,c>;return0;}2.有一個(gè)函數(shù):編寫(xiě)一個(gè)程序,輸入x的值,輸出y的值。#include<stdio.h>intmain<>{intx,y;printf<"輸入x:">;scanf<"%d",&x>;if<x<1>{y=x;printf<"x=%d,y=x=%d\n",x,y>;}elseif<x<10>{y=2*x-1;printf<"x=%d,y=2*x-1=%d\n",x,y>;}else{y=3*x-11;printf<"x=%d,y=3*x-11=%d\n",x,y>;}return0;}3.輸入學(xué)生的百分制成績(jī),要求輸出學(xué)生的成績(jī)、等級(jí)以及相應(yīng)的評(píng)語(yǔ)。設(shè)用‘A’、‘B’、‘C’、‘D’、‘E’五個(gè)等級(jí),且90分以上為等級(jí)‘A’,評(píng)語(yǔ)為"成績(jī)優(yōu)秀",80-89分為等級(jí)‘B’,評(píng)語(yǔ)為"成績(jī)良好",70-79分為等級(jí)‘C’,評(píng)語(yǔ)為"成績(jī)中等",60-69分為等級(jí)‘D’,評(píng)語(yǔ)為"成績(jī)及格",60分以下為等級(jí)‘E’,評(píng)語(yǔ)為"成績(jī)不及格"。分別用if條件語(yǔ)句和switch開(kāi)關(guān)語(yǔ)句編寫(xiě)程序。方法一:if條件語(yǔ)句#include<stdio.h>voidmain<>{ intscore; printf<"輸入成績(jī):">; scanf<"%d",&score>; if<score>100||score<0> printf<"輸入錯(cuò)誤!\n">; elseif<score>=90> printf<"成績(jī)?yōu)?d,等級(jí)為A,成績(jī)優(yōu)秀\n",score>; elseif<score>=80> printf<"成績(jī)?yōu)?d,等級(jí)為B,成績(jī)良好\n",score>; elseif<score>=70> printf<"成績(jī)?yōu)?d,等級(jí)為C,成績(jī)中等\n",score>; elseif<score>=60> printf<"成績(jī)?yōu)?d,等級(jí)為D,成績(jī)及格\n",score>; else printf<"成績(jī)?yōu)?d,等級(jí)為E,成績(jī)不及格\n",score>;}方法二:switch開(kāi)關(guān)語(yǔ)句#include<stdio.h>voidmain<>{ intscore; printf<"輸入成績(jī):">; scanf<"%d",&score>; if<score>100||score<0> printf<"輸入錯(cuò)誤!\n">; else switch<score/10> {case10: case9: printf<"成績(jī)?yōu)?d,等級(jí)為A,成績(jī)優(yōu)秀\n",score>;break; case8: printf<"成績(jī)?yōu)?d,等級(jí)為B,成績(jī)良好\n",score>;break; case7: printf<"成績(jī)?yōu)?d,等級(jí)為C,成績(jī)中等\n",score>;break; case6: printf<"成績(jī)?yōu)?d,等級(jí)為D,成績(jī)及格\n",score>;break; default: printf<"成績(jī)?yōu)?d,等級(jí)為E,成績(jī)不及格\n",score>; }}4.編寫(xiě)程序輸入三個(gè)整數(shù),判斷它們是否能夠構(gòu)成三角形。若能構(gòu)成三角形,則輸出三角形的類型〔等邊三角形、等腰三角形、一般三角形,并計(jì)算三角形的面積;若不能構(gòu)成三角形,則輸出"不能構(gòu)成三角形"的信息。#include<stdio.h>#include<math.h>voidmain<>{floata,b,c,s,t;printf<"inputa,b,c\n">;scanf<"%f%f%f",&a,&b,&c>;if<<a+b>c>&&<a+c>b>&&<b+c>a>>{t=<a+b+c>/2;s=sqrt<t*<t-a>*<t-b>*<t-c>>;if<a==b&&b==c>{printf<"這是等邊三角形,面積為%f\n",s>;}elseif<<a==b>&&<b!=c>||<b==c>&&<a!=c>||<a==c>&&<a!=b>>{printf<"這是等腰三角形,面積為%f\n",s>;}elseprintf<"這是一般三角形,面積為%f\n",s>;}elseprintf<"不能構(gòu)成三角形">;}5.編寫(xiě)程序在屏幕上顯示一張如下所示的時(shí)間表:*****Time*****1morning2afternoon3nightPleaseenteryourchoice<1-3>:操作人員根據(jù)提示進(jìn)行選擇,程序根據(jù)輸入的時(shí)間序號(hào)顯示相應(yīng)的問(wèn)候信息,選擇1時(shí)顯示"Goodmorning",選擇2時(shí)顯示"Goodafternoon",選擇3時(shí)顯示"Goodnight",對(duì)于其他選擇顯示"Selectionerror!"。#include<stdio.h>voidmain<>{intn;printf<"*****Time******\n1morning\n">;printf<"2afternonn\n3night\n">;printf<"Pleaseenteryourchoice<1-3>:\n">;scanf<"%d",&n>;switch<n>{case1:printf<"Goodmorning\n">;break;case2:printf<"Goodafternoon\n">;break;case3:printf<"Goodnight\n">;break;default:printf<"Selectionerror!\n">;}}6.設(shè)銀行整存整取不同期限的月利率分別為:一年定期為0.63%;二年定期為0.66%;三年定期為0.69%;五年定期為0.75%;八年定期為0.84%。要求輸入存款的本金和期限,求到期能從銀行得到的本金和利息的合計(jì)。分別用if語(yǔ)句和switch語(yǔ)句編與程序。#include<stdio.h>voidmain<>{ constdoublerate[]={0.0063,0.0066,0.0069,0.0075,0.0084}; intyears=0; floatinit=0; doublesum=0; printf<"\nInputinitialamountofmoney:">; scanf<"%f",&init>; printf<"\nTypeinsaveperiodinyears:">; scanf<"%d",&years>; if<years==1||years==2||years==3||years==5||years==8> { if<years==1> sum=init*<1+rate[0]*12*years>; else if<years==2> sum=init*<1+rate[1]*12*years>; else if<years==3> sum=init*<1+rate[2]*12*years>; else if<years==5> sum=init*<1+rate[3]*12*years>; else sum=init*<1+rate[4]*12*years>; printf<"\nTotalamountafter%dyears:%.2f\n",years,sum>; } else { printf<"\nWrongnumber,Pleasetypeinyearsagain:">; scanf<"%d",&years>; }}7.編寫(xiě)程序計(jì)算個(gè)人所得稅。個(gè)人所得稅的計(jì)算方法:<實(shí)發(fā)工資-3500>*稅率-扣除數(shù),設(shè)個(gè)人所得稅起征點(diǎn)為3500元。共分為7級(jí),具體如下:級(jí)數(shù)應(yīng)納稅額稅率〔%扣除數(shù)1不超過(guò)1500元的302超過(guò)1500元至4500元的部分101053超過(guò)4500元至9000元的部分205554超過(guò)9000元至35000元的部分2510055超過(guò)35000元至55000元的部分3027556超過(guò)55000元至80000元的部分3555057超過(guò)80000元的部分4513505#include<stdio.h>voidmain<>{ floata;//實(shí)發(fā)工資 floatb;//應(yīng)納稅部分工資 floats;//稅率 floatkouchu;//扣除數(shù) floatptax;//個(gè)人所得稅 printf<"輸入工資:">; scanf<"%f",&a>; b=a-3500; if<b>0&&b<=1500> {s=0.03;kouchu=0;} elseif<b<=4500> {s=0.1;kouchu=105;} elseif<b<=9000> {s=0.2;kouchu=555;} elseif<b<=35000> {s=0.25;kouchu=1005;} elseif<b<=55000> {s=0.3;kouchu=2755;} elseif<b<=80000> {s=0.35;kouchu=5505;} else {s=0.45;kouchu=13505;} ptax=b*s-kouchu; printf<"個(gè)人所得稅為%f\n",ptax>;}8.編寫(xiě)程序計(jì)算貨款。設(shè)按購(gòu)買貨物款的多少分別給予不同的優(yōu)惠折扣,購(gòu)貨不足250元,沒(méi)有折扣;購(gòu)貨250元〔含250元,下同,不足500元,減價(jià)5%;購(gòu)貨500元,不足1000元,減價(jià)7.5%;購(gòu)貨1000元,不足2000元,減價(jià)10%;購(gòu)貨2000元及以上,減價(jià)15%。#include<stdio.h>voidmain<>{floatm,d,t;printf<"請(qǐng)輸入購(gòu)物金額:">;scanf<"%f",&m>;if<m<250>d=0;elseif<m<500>d=0.05;elseif<m<1000>d=0.075;elseif<m<2000>d=0.1;elsed=0.15;t=m*<1-d>;printf<"實(shí)際應(yīng)付金額:%f",t>;}9.給一個(gè)不多于5位的正整數(shù),編寫(xiě)程序?qū)崿F(xiàn):<1>求出它是幾位數(shù);<2>分別輸出每一位數(shù)字;<3>按逆序輸出各位數(shù)字。#include<stdio.h>intmain<>{inti,j,a,b,c,d,k=0,n=0,s=100000,t=10,p;scanf<"%d",&a>;p=a;//保存原始輸入值,后面用到if<p/s!=0>//超過(guò)5位數(shù),直接錯(cuò)誤提示,程序結(jié)束。printf<"輸入錯(cuò)誤!\n">;else{printf<"逆序輸出各位數(shù)字:">; for<i=0;i<6;i++> { b=a; if<b!=0> {k++; b=a%t;//對(duì)10求余可得個(gè)十百千萬(wàn)位 printf<"%d",b>; a=a/t; } } printf<"\n%d是個(gè)%d位數(shù)\n",p,k>; printf<"正序輸出各位數(shù)字:">; for<j=0;j<6;j++> { c=p; d=c/s%10;//除以s后對(duì)10求余可得萬(wàn)千百十個(gè)位 s=s/10;//s要依次/10,求解后面的數(shù)值 if<d!=0> printf<"%d",d>; } printf<"\n">; }return0;}10.編寫(xiě)程序?qū)?shù)據(jù)進(jìn)行加密。設(shè)加密方法為:對(duì)任意給定的4位整數(shù),每一位數(shù)字均加2,若某位數(shù)字加2后大于9,則取其除以10的余數(shù),如數(shù)據(jù)6987加密后的數(shù)據(jù)為8109。#include<stdio.h>voidmain<>{ inta,b,c,d,m; scanf<"%d",&m>; a=m%10+2;if<a>=10>a=a%10; b=m/10%10+2;if<b>=10>b=b%10; c=m/100%10+2;if<c>=10>c=c%10; d=m/1000+2;if<d>=10>d=d%10; m=a+b*10+c*100+d*1000; printf<"%d\n",m>;}練習(xí)題5參考答案一、選擇題序號(hào)12345678910參考答案ABBABDCDBD二、填空題1.以下程序的輸出結(jié)果是52。2.以下程序的輸出結(jié)果是17。3.有以下程序:程序運(yùn)行時(shí),如果從鍵盤(pán)輸入:Y?N?<回車>,則輸出結(jié)果為X。4.下面程序的運(yùn)行結(jié)果s=254。5.下面程序段中循環(huán)體的執(zhí)行次數(shù)是3。6.下面程序段的運(yùn)行結(jié)果是**。7.下面程序的運(yùn)行結(jié)果是1,-2。8.下面程序段的運(yùn)行結(jié)果是8。9.下面程序的功能是:計(jì)算1~10之間的奇數(shù)之和與偶數(shù)之和,試完善程序。10.下面程序的功能是:輸出100以內(nèi)能被3整除且個(gè)位數(shù)為6的所有整數(shù),請(qǐng)?zhí)羁?。三、程序設(shè)計(jì)題1.編寫(xiě)程序計(jì)算1+3+5+7+…+97+99的值。#include<stdio.h>voidmain<>{ inti,sum; sum=0; for<i=1;i<=99;i+=2> { sum=sum+i;} printf<"%d\n",sum>;}2.編寫(xiě)程序從鍵盤(pán)輸入正整數(shù)n,求n!。#include<stdio.h>voidmain<>{ inti,n,fact=1; scanf<"%d",&n>; for<i=1;i<=n;i++> {fact*=i; } printf<"n=%d,n!=%d\n",n,fact>;}3.編寫(xiě)程序求一個(gè)十進(jìn)制整數(shù)的位數(shù)。#include<stdio.h>voidmain<>{ intn,m; scanf<"%d",&n>; if<n<0> printf<"請(qǐng)輸入正整數(shù)!謝謝合作!\n">; if<n<=9&&n>=0> m=1; else { m=0;//t=n/10;while<n>=1>{n=n/10;++m;} } printf<"%d\n",m>;}4.編寫(xiě)程序輸入一行字符,分別統(tǒng)計(jì)出其中英文字母、空格、數(shù)字和其它字符的個(gè)數(shù)。#include<stdio.h>intmain<void>{//輸入一行字符,分別統(tǒng)計(jì)出其中英文字母、空格、數(shù)字和其他字符的個(gè)數(shù)。charch;intchar_num=0,kongge_num=0,int_num=0,other_num=0;while<<ch=getchar<>>!='\n'>//回車鍵結(jié)束輸入,并且回車符不計(jì)入{if<ch>='a'&&ch<='z'||ch<='z'&&ch>='a'>char_num++;elseif<ch==''>kongge_num++;elseif<ch>='0'&&ch<='9'>int_num++;elseother_num++;}printf<"字母=%d,空格=%d,數(shù)字=%d,其它=%d\n",char_num,kongge_num,int_num,other_num>;return0;}5.編寫(xiě)程序求一個(gè)十進(jìn)制整數(shù)是否為回文數(shù)。所謂回文數(shù)是指從左向右讀或從右向左讀都是相同的數(shù),也就左右對(duì)稱的數(shù),如:232、3553、123321等。#include<stdio.h>#include<string.h>intmain<>{ chardigits[100],i,n; scanf<"%s",digits>; n=strlen<digits>; for<i=0;i<n/2;i++> { if<digits[i]!=digits[n-i-1]> { printf<"不是回文數(shù)\n">; return0; } } printf<"是回文數(shù)\n">; return0;}6.編寫(xiě)程序用兩種方法〔一種方法是使用三重循環(huán)形成100~999之間的所有數(shù),另一種方法是使用單重循環(huán)直接形成100~999之間的所有數(shù)求100~999之間的所有"水仙花數(shù)"。所謂"水仙花數(shù)"是指一個(gè)三位數(shù),其各位數(shù)字的立方和等于該數(shù)本身。例如:153是一個(gè)水仙花數(shù),因?yàn)?53=13+53+33。方法一:三重循環(huán)#include<stdio.h>intmain<>{inti,j,k,n;printf<"parcissusnumbersare:">;for<i=1;i<=9;i++>for<j=0;j<=9;j++>for<k=0;k<=9;k++>{ n=i*100+j*10+k; if<n==i*i*i+j*j*j+k*k*k> printf<"%5d",n>;}printf<"\n">;return0;}方法二:?jiǎn)沃匮h(huán)#include<stdio.h>intmain<>{inti,j,k,n;printf<"parcissusnumbersare:">;for<n=100;n<1000;n++>{ i=n/100; j=n/10-i*10; k=n%10; if<n==i*i*i+j*j*j+k*k*k> printf<"%5d",n>;}printf<"\n">;return0;}7.編寫(xiě)程序找出1000之內(nèi)的所有"完美數(shù)<完全數(shù)、完備數(shù)>"。"完美數(shù)"也稱為"完數(shù)",它是指一個(gè)數(shù)恰好等于它的因子之和。例如,6的因子為1、2、3,而6=1+2+3,因此6是"完數(shù)"。#include<stdio.h>intmain<>{ intm,s,i; for<m=2;m<1000;m++> { s=0; for<i=1;i<m;i++> if<<m%i>==0> s=s+i; if<s==m> { printf<"%d,itsfactorsare1",m>; for<i=2;i<m;i++> if<m%i==0> printf<"+%3d",i>; printf<"\n">; } }return0;}8.編寫(xiě)程序用窮舉法求解:雞翁一,值錢五;雞母一,值錢三;雞雛三,值錢一。百錢買百雞,雞翁、雞母、雞雛各幾何?#include<stdio.h>voidmain<>{ intcocks=0,hens,chicks; while<cocks<=20> { hens=0; while<hens<=33> { chicks=100-cocks-hens; if<5.0*cocks+3.0*hens+chicks/3.0==100.0> printf<"公雞%d只,母雞%d只,小雞%d只\n\n",cocks,hens,chicks>; hens++; } cocks++; }}9.已知,編寫(xiě)程序輸入x的值,求的近似值<要求被舍去的項(xiàng)小于10-6>。#include<stdio.h>#include<math.h>voidmain<>{doubletemp=1,sum=1,b=1.0;inti=1; doublex,a=1.0; scanf<"%lf",&x>;while<fabs<temp>>=1e-6>{b=b*i;a=a*x;temp=a/b;//定義每一項(xiàng)的內(nèi)容sum=sum+temp;i++;}printf<"e=%lf\n",sum>;}10.編寫(xiě)程序利用泰勒級(jí)數(shù)計(jì)算sinx的值,要求最后一項(xiàng)的絕對(duì)值小于10-5,并計(jì)算共求了多少項(xiàng)。#include<stdio.h>#include<math.h>voidmain<>{intn=1,count=0;doublex,sum,term;printf<"pleaseinputanumberx:">;scanf<"%lf",&x>;sum=x;term=x;while<fabs<term>>=1e-6>{term=-term*x*x/<<n+1>*<n+2>>;//定義后一項(xiàng)與前一項(xiàng)的關(guān)系sum=sum+term;n=n+2;count++;}printf<"sin<x>=%f,count=%d\n",sum,count>;}11.編寫(xiě)程序用牛頓迭代法求方程在1.5附近的根。#include<stdio.h>#include<math.h>doubleF1<double>;//原函數(shù)doubleF2<double>;//原函數(shù)的一階導(dǎo)數(shù)函數(shù)doubleNewton<double,double>;voidmain<>{doublex0=1.5;doublee=pow<10,-5>;printf<"theresultis%lf\n",Newton<x0,e>>;}doubleF1<doublex>{return2*x*x*x-4*x*x+3*x-5;}doubleF2<doublex>{return6*x*x-8*x+3;}doubleNewton<doublex0,doublee>{doublex1;do{x1=x0;x0=x1-F1<x1>/F2<x1>;}while<fabs<x1-x0>>e>;returnx0;}12.編寫(xiě)程序用二分法求方程在<-10,10>之間的根。#include<stdio.h>#include<math.h>doublefunction<doublex>{doublef;f=2*x*x*x-4*x*x+3*x-5;returnf;}voidmain<>{doublea=-10,b=10,c,fa,fb,fc;fa=function<a>;fb=function<b>;do{c=<a+b>/2.0;fc=function<c>;if<fc*fa<0>{b=c;fb=fc;}else{a=c;fa=fc;}}while<fabs<a-b>>=1e-6>;printf<"Therootis%lf\n",c>;}13.編寫(xiě)程序?qū)⒁粡埫嬷禐?00元的人民幣等值換成100張5元、1元和5角的零鈔,要求每種零鈔不少于1張。#include<stdio.h>intmain<>{intn5,n1,n05;intcount=0;for<n5=1;n5<20;n5++>{for<n1=1;n1<<100-n5>;n1++>{n05=100-n5-n1;if<<n5*10+n1*2+n05>==200>{count++;printf<"第%d種:%d張五元,%d張一元,%d張五角\n",count,n5,n1,n05>;}}}return0;}14.編寫(xiě)程序驗(yàn)證哥德巴赫猜想<任何一個(gè)大于等于6的偶數(shù)都可以分解為兩個(gè)素?cái)?shù)之和>,驗(yàn)證范圍限定為6到2000。#include<stdio.h>intmain<>{inti,j,k,l;intss<intn>;for<i=6;i<=2000;i++>{if<i%2==0>for<j=2;j<=<int><i/2>;j++>{k=ss<j>;l=ss<i-j>;if<k==1&&l==1>printf<"%d+%d=%d\n",j,i-j,i>;}}return0;}intss<intn>{inti;for<i=2;i<=n;i++>{if<n%i==0&&n!=i>return0;if<n==i>return1;}}15.愛(ài)因斯坦數(shù)學(xué)題。有一條長(zhǎng)階梯,若每步跨2階,最后剩下1階;若每步跨3階,最后剩下2階;若每步跨5階,最后剩下4階;若每步跨6階,最后剩下5階;只有每步跨7階,最后才正好1階不剩。編制程序求這條階梯共有多少階?#include<stdio.h>voidmain<>{ intn=1; while<1> { if<<n%2==1>&&<n%3==2>&&<n%5==4>&&<n%6==5>&&<n%7==0>>//判斷 { printf<"%d\n",n>; break; } n++; } printf<"%d%%2=%d…%d\n",n,n/2,n%2>;//驗(yàn)算 printf<"%d%%3=%d…%d\n",n,n/3,n%3>; printf<"%d%%5=%d…%d\n",n,n/5,n%5>; printf<"%d%%6=%d…%d\n",n,n/6,n%6>; printf<"%d%%7=%d…%d\n",n,n/7,n%7>;}16.三色球問(wèn)題。若一個(gè)口袋中放有12個(gè)球,其中有3個(gè)紅色的,3個(gè)白色的,6個(gè)黑色的,從中任取8個(gè)球,編寫(xiě)程序求共有多少種不同的顏色搭配?#include<stdio.h>

voidmain<>

{

intn=0;

inta,b,c;

for<a=0;a<=3;a++>

for<b=0;b<=3;b++>

for<c=0;c<=6;c++>

if<a+b+c==8>n++;

printf<"%d\n",n>;

}練習(xí)題6參考答案一、選擇題序號(hào)12345678910參考答案DDDAADACBC序號(hào)11121314參考答案CDAA二、填空題1.下面程序的運(yùn)行結(jié)果是112358132134552.以下程序的輸出結(jié)果是abc。3.若有定義:inta[3][4]={{1,2},{0},{4,6,8,10}};,則初始化后,a[1][2]得到的初值是0,a[2][1]得到的i初值是6。4.以下程序可求出所有水仙花數(shù)〔水仙花數(shù)是指一個(gè)3位正整數(shù),其各位數(shù)字的立方之和等于該正整數(shù)。如:407=4*4*4+0*0*0+7*7*7,故407是一個(gè)水仙花數(shù)。請(qǐng)?zhí)羁铡?include<stdio.h>voidmain<>{ intx,y,z,a[8],m,i=0;printf<"Thespecialnumbersare:\n">;for<m=100;m<1000;m++>{ x=m/100;y=<m/10>%10;z=m%10;if<x*100+y*10+z==x*x*x+y*y*y+z*z*z>{a[i]=m;i++;}}for<x=0;x<i;x++>printf<"%6d",a[x]>;}5.下面程序的功能是:將字符數(shù)組a中下標(biāo)值為偶數(shù)的元素從小到大排列,其他元素不變,請(qǐng)?zhí)羁铡?include<stdio.h>#include<string.h>voidmain<>{ chara[]="clanguage",t;inti,j,k;k=strlen<a>;for<i=0;i<=k-2;i+=2>for<j=i+2;j<k;j+=2;>if<a[i]>a[j]>{t=a[i];a[i]=a[j];a[j]=t;}puts<a>;printf<"\n">;}6.下面程序的功能是將二維數(shù)組a中每個(gè)元素向右移一列,最右一列換到最左一列,移后的數(shù)組存到另一個(gè)二維數(shù)組b中,并按矩陣形式輸出a和b,請(qǐng)?zhí)羁?。例如:arraya:arrayb:4566451233l2#include<stdio.h>voidmain<>{ inta[2][3]={4,5,6,1,2,3},b[2][3];inti,j;printf<"arraya:\n">;for<i=0;i<=1;i++>{ for<j=0;j<3;j++>{ printf<"%5d",a[i][j]>;b[i][j]=a[i][j];}printf<"\n">;}for<i=0;i<=1;i++>b[i][0]=a[i][2];printf<"arrayb:\n">;for<i=0;i<2;i++>{ for<j=0;j<3;j++>printf<"%5d",b[i][j]>;printf<"\n">;}}7.下面程序中的數(shù)組a包括10個(gè)整數(shù)元素,從a中第二個(gè)元素起,分別將后項(xiàng)減前項(xiàng)之差存入數(shù)組b,并按每行3個(gè)元素輸出數(shù)組b。請(qǐng)?zhí)羁铡?include<stdio.h>voidmain<>{ inta[10],b[10],i;for<i=0;i<10;i++>scanf<"%d",&a[i]>;for<i=1;i<10;i++>b[i]=a[i]-a[i-1];for<i=1;i<10;i++>{ printf<"%3d",b[i]>;if<i%3==0>printf<"\n">;}}8.以下程序是求矩陣a,b的和,結(jié)果存入矩陣C中,并按矩陣形式輸出。請(qǐng)?zhí)羁铡?include<stdio.h>voidmain<>{ inta[3][4]={{3,-2,7,5},{1,0,4,-3},{6,8,0,2}};intb[3][4]={{-2,0,1,4},{5,-1,7,6},{6,8,0,2}};inti,j,c[3][4];for<i=0;i<3;i++>for<j=0;j<4;j++>c[i][j]=a[i][j]+b[i][j];for<i=0;i<3;i++>{ for<j=0;j<4;j++>printf<"%3d",c[i][j]>;printf<"\n">;}}三、程序設(shè)計(jì)題1.從鍵盤(pán)輸入某個(gè)班級(jí)的30名學(xué)生信息<設(shè)只含有學(xué)號(hào)>,編寫(xiě)程序用折半查找法通過(guò)輸入一個(gè)學(xué)生的學(xué)號(hào)查找某一學(xué)生<注意:查找前要先進(jìn)行排序>。#include<stdio.h>#defineN30voidmain<>{ inta[N]; inti,j,t,x,mid,low=0,high=N-1; printf<"請(qǐng)輸入%d名學(xué)生的學(xué)號(hào):\n",N>; for<i=0;i<N;i++> scanf<"%d",&a[i]>; for<j=0;j<N-1;j++> for<i=0;i<N-j-1;i++> if<a[i]>a[i+1]> {t=a[i];a[i]=a[i+1];a[i+1]=t;} printf<"請(qǐng)輸入需要查找的學(xué)生的學(xué)號(hào):\n">; scanf<"%d",&x>; do { mid=<low+high>/2; if<a[mid]==x>break; elseif<a[mid]>x> high=mid-1; else low=mid+1; }while<low<=high>; if<low<=high> printf<"這個(gè)學(xué)生學(xué)號(hào)為%d\n",x>; else printf<"查找不到\n">;}2.設(shè)有某班級(jí)35名學(xué)生的一門(mén)課程考試成績(jī),編寫(xiě)程序求超過(guò)平均的學(xué)生<包括學(xué)號(hào)和成績(jī)>,并將所有學(xué)生按成績(jī)降序排列輸出。#include<stdio.h>#defineNUM35voidmain<>{inta[NUM][2];floatsum=0,ave;inti,j,t;printf<"請(qǐng)輸入%d位同學(xué)的學(xué)號(hào)和成績(jī):\n",NUM>;for<i=0;i<NUM;i++>scanf<"%d%d",&a[i][0],&a[i][1]>;for<i=0;i<NUM;i++>sum=sum+a[i][1];ave=sum/NUM;for<i=0;i<NUM;i++>if<a[i][1]>ave> printf<"超過(guò)平均分的學(xué)生學(xué)號(hào)為:%d,成績(jī)?yōu)椋?d\n",a[i][0],a[i][1]>;for<j=0;j<NUM-1;j++>for<i=0;i<NUM-j-1;i++> if<a[i][1]<a[i+1][1]> {t=a[i][0];a[i][0]=a[i+1][0];a[i+1][0]=t;t=a[i][1];a[i][1]=a[i+1][1];a[i+1][1]=t; } printf<"所有學(xué)生成績(jī)〔降序排列:\n">;for<i=0;i<NUM;i++> printf<"學(xué)號(hào)為:%d,成績(jī)?yōu)?%d\n",a[i][0],a[i][1]>;}3.設(shè)從3個(gè)候選人中選擇1個(gè)人,10個(gè)人參加投票,編寫(xiě)一個(gè)統(tǒng)計(jì)選票的程序。投票人編號(hào)候選人投票人編號(hào)候選人1張華6李好2李好7李好3王娟8王娟4李好9李好5張華10王娟#include<stdio.h>#include<string.h>voidmain<>{inti;charname[8];char*p1="張華";char*p2="李好";char*p3="王娟";intn1=0,n2=0,n3=0;for<i=0;i<10;i++>{ printf<"請(qǐng)輸入第%d個(gè)投票人選擇的候選人:\n",i+1>; scanf<"%s",name>; if<strcmp<name,p1>==0> n1++; elseif<strcmp<name,p2>==0> n2++; elseif<strcmp<name,p3>==0> n3++;}printf<"%s的票數(shù)為%d\n",p1,n1>;printf<"%s的票數(shù)為%d\n",p2,n2>;printf<"%s的票數(shù)為%d\n",p3,n3>;}4.輸入一行字符串,編寫(xiě)程序分別統(tǒng)計(jì)各個(gè)英文字母出現(xiàn)的次數(shù)<不區(qū)分字母大小寫(xiě)>。#include<stdio.h>intmain<>{ intlet[26]={0}; inti; charch; while<<ch=getchar<>>!='\n'> { if<ch>='A'&&ch<='Z'> let[ch-'A']++; elseif<ch>='a'&&ch<='z'> let[ch-'a']++; } for<i=0;i<26;i++> printf<"%c:%d\n",i+'a',let[i]>; return0;}5.編寫(xiě)程序輸出以下楊輝三角形〔要求打印出10行。11112113311464115101051……#include<stdio.h>#defineN10voidmain<>{inti,j,k;inta[N][N];for<i=0;i<N;i++> { a[i][0]=1; a[i][i]=1; } for<i=2;i<N;i++> for<j=1;j<i;j++> a[i][j]=a[i-1][j-1]+a[i-1][j]; for<i=0;i<N;i++> { for<j=0;j<=i;j++> printf<"%4d",a[i][j]>; printf<"\n">; }}6.編寫(xiě)程序輸入并求一個(gè)4×4矩陣的兩條對(duì)角線元素之和、四周靠邊元素之和。#include<stdio.h>#defineN4voidmain<>{inta[N][N];inti,j;intsum1=0;//對(duì)角線元素之和in

溫馨提示

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