




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
.PAGE56/NUMPAGES56練習題1參考答案一、選擇題序號12345678參考答案ACADCCCA二、填空題1.程序設計語言主要分為以下三類:機器語言、匯編語言和高級語言。2.在C語言中,一個函數一般由兩個部分組成,它們是函數首部和函數體。3.C程序開發過程的一般步驟為:源程序的編輯、編譯、連接和運行。4.C程序源文件的擴展名為.c,編譯成功后產生的文件擴展名為.obj,連接成功后產生文件擴展名為.exe。三、應用題略練習題2參考答案一、選擇題序號12345678910參考答案BACCBABBDC序號1112131415參考答案ABCAC二、填空題1.通常一個字節包含8個二進制位。在一個字節中能存放的最大〔十進制整數是255〔無符號,127〔帶符號,最小〔十進制整數是-128,它的二進制數的形式是10000000。2.在C語言中,十進制數30的八進制數表示形式是036,十六進制數表示形式是0x1e,在內存中它的二進制數表示形式是0000000000011110。3.條件"20<x<30或x<-100”的C語言表達式是x>20&&x<30||x<-1004.若a、b和c均是int型變量,則計算表達式a=<b=4>+<c=2>后,a值為6,b值為4,c值為2。5.已知inty;floatx=-3;,執行語句y=x%2;后,變量y的值為語句出錯。6.字符串"ab\034\\\x79"的長度為5。7.在C語言中〔以16位PC機為例,一個float型數據在內存中所占用的字節數為4;一個double型數據在內存中所占的字節數為8。8.若s是int型變量,且s=6,則s%2+<s+1>%2表達式的值為1。9.表達式pow<2.8,sqrt<double<x>>>值的數據類型為double。10.若a是int型變量,則表達式<a=4*5,a*2>,a+6的值為26。11.若a是int型變量,則執行表達式a=25/3%3后a的值為2。12.若i為int整型變量且賦值為6,則運算i++后表達式的值是6,變量i的值是7。13.若x為int型變量,執行語句:x=10;x+=x-=x-x;則x的值為20。14.若x和y為double型變量,則表達式x=1,y=x+3/2的值是2.000000。15.<-b+sqrt<b*b-4*a*c>>/<2*a>的數學式子是[-b+√<b^2-4ac>]/2a16.sqrt<p*<p-a>*<p-b>*<p-c>>的數學式子是√[p*<p-a>*<p-b>*<p-c>]。17.判斷某一年份是否為閏年的表達式是<year%4==0||year%100==0>&&year%400!=0>。18.用隨機函數rand<>產生一個在[-20,20]兩位整數的表達式是x=rand<>%41-20。三、閱讀分析下列程序。1.寫出下列程序的輸出結果。182.已知字母B的ASCII碼為66,寫出下列程序的輸出結果。67,E3.寫出下列程序的輸出結果。a=4,b=3練習題3參考答案一、選擇題序號12345678910參考答案DBDDCDDBBA二、填空題1.C語句句尾用分號結束。2.若有變量定義:inta=1,b=2,c=3,d=4,x=5,y=6;則表達式<x=a>b>&&<y=c>d>的值為0。3.使用強制轉換方法將正整數轉換成字符。本題程序如下:本程序的執行結果為輸入一個正整數〔小于255:97a的ASCII碼為97。4.下面程序的輸出是-100,50i=-100,j=50i=-100j=50。5.執行以下程序時,若從第一列開始輸入數據,為使變量a=2,b=8,x=6.5,y=56.62,el='C',c2='b',正確的數據輸入形式是a=2b=8x=6.5y=56.62c1=Cc2=b。三、程序設計題1.編寫程序交換兩個變量a,b的值,并輸出。如輸入時a=3,b=5,輸出a=5,b=3。#include<stdio.h>voidmain<>{inta,b,c;printf<"輸入兩個數:a,b">;scanf<"a=%d,b=%d",&a,&b>;c=a;a=b;b=c;printf<"a=%d,b=%d",a,b>;}2.編寫程序輸入小寫字符boy,輸出大寫字符BOY。#include<stdio.h>voidmain<>{charc;printf<"Input:">;scanf<"%c",&c>;c=c-32;printf<"%c",c>;}3.已知華氏溫度與攝氏溫度的轉換公式為:C=<F-32>*5/9。編寫程序當輸入華氏溫度F時,輸出對應的攝氏溫度。#include<stdio.h>voidmain<>{floatF;scanf<"%f",&F>;printf<"%f",<F-32>*5/9>;}4.設圓的半徑r=1.5,圓柱高h=3,編寫程序求圓周長、圓面積、圓球表面積、圓球體積及圓柱體積。用scanf函數輸入數據,輸出計算結果,輸出時要求有文字說明,取小數點后2位數字。#include<stdio.h>intmain<>{floath,r,l,s,sq,vq,vz;floatpi=3.141592;printf<"請輸入圓半徑r,圓柱高h:">;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<"圓周長為: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.編寫程序輸入梯形的上底a,下底b和高h,輸出該梯形的面積。#include<stdio.h>voidmain<>{floata,b,h,s;printf<"請輸入梯形上底,下底和高:\n">;scanf<"%f%f%f",&a,&b,&h>;s=<a+b>*h/2;printf<"梯形面積為:%f\n",s>;}6.編寫程序將"China"譯成密碼,密碼規律是:用原來的字母后面第4個字母代替原來的字母。例如,字母"A"后面第4個字母是"E",用"E"代替"A"。因此,"China"應譯為"Glmre"。請編寫程序,用賦初值的方法使c1,c2,c3,c4,c5這5個變量的值分別為'C','h','i','n','a',經過運算,使c1,c2,c3,c4,c5分別變為'G','l','m','r','e'。分別用putchar函數和printf函數輸出這5個字符。#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;}練習題4參考答案一、選擇題序號12345678910參考答案CBAACCBAAB二、填空題1.表示"整數x的絕對值大于5”時值為"真"的C語言表達式是abs<x>>5&&floor<x>==x2.以下程序運行后的輸出結果是20,0。3.若從鍵盤輸入58,則以下程序輸出的結果是585858。4.以下程序輸出的結果是0。5.以下程序的輸出結果是2。6.若inti=10;則行下列程序后,變量i的正確結果是13。三、程序設計題1.編寫程序輸入有3個整數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.有一個函數:編寫一個程序,輸入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.輸入學生的百分制成績,要求輸出學生的成績、等級以及相應的評語。設用‘A’、‘B’、‘C’、‘D’、‘E’五個等級,且90分以上為等級‘A’,評語為"成績優秀",80-89分為等級‘B’,評語為"成績良好",70-79分為等級‘C’,評語為"成績中等",60-69分為等級‘D’,評語為"成績及格",60分以下為等級‘E’,評語為"成績不及格"。分別用if條件語句和switch開關語句編寫程序。方法一:if條件語句#include<stdio.h>voidmain<>{ intscore; printf<"輸入成績:">; scanf<"%d",&score>; if<score>100||score<0> printf<"輸入錯誤!\n">; elseif<score>=90> printf<"成績為%d,等級為A,成績優秀\n",score>; elseif<score>=80> printf<"成績為%d,等級為B,成績良好\n",score>; elseif<score>=70> printf<"成績為%d,等級為C,成績中等\n",score>; elseif<score>=60> printf<"成績為%d,等級為D,成績及格\n",score>; else printf<"成績為%d,等級為E,成績不及格\n",score>;}方法二:switch開關語句#include<stdio.h>voidmain<>{ intscore; printf<"輸入成績:">; scanf<"%d",&score>; if<score>100||score<0> printf<"輸入錯誤!\n">; else switch<score/10> {case10: case9: printf<"成績為%d,等級為A,成績優秀\n",score>;break; case8: printf<"成績為%d,等級為B,成績良好\n",score>;break; case7: printf<"成績為%d,等級為C,成績中等\n",score>;break; case6: printf<"成績為%d,等級為D,成績及格\n",score>;break; default: printf<"成績為%d,等級為E,成績不及格\n",score>; }}4.編寫程序輸入三個整數,判斷它們是否能夠構成三角形。若能構成三角形,則輸出三角形的類型〔等邊三角形、等腰三角形、一般三角形,并計算三角形的面積;若不能構成三角形,則輸出"不能構成三角形"的信息。#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<"不能構成三角形">;}5.編寫程序在屏幕上顯示一張如下所示的時間表:*****Time*****1morning2afternoon3nightPleaseenteryourchoice<1-3>:操作人員根據提示進行選擇,程序根據輸入的時間序號顯示相應的問候信息,選擇1時顯示"Goodmorning",選擇2時顯示"Goodafternoon",選擇3時顯示"Goodnight",對于其他選擇顯示"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.設銀行整存整取不同期限的月利率分別為:一年定期為0.63%;二年定期為0.66%;三年定期為0.69%;五年定期為0.75%;八年定期為0.84%。要求輸入存款的本金和期限,求到期能從銀行得到的本金和利息的合計。分別用if語句和switch語句編與程序。#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.編寫程序計算個人所得稅。個人所得稅的計算方法:<實發工資-3500>*稅率-扣除數,設個人所得稅起征點為3500元。共分為7級,具體如下:級數應納稅額稅率〔%扣除數1不超過1500元的302超過1500元至4500元的部分101053超過4500元至9000元的部分205554超過9000元至35000元的部分2510055超過35000元至55000元的部分3027556超過55000元至80000元的部分3555057超過80000元的部分4513505#include<stdio.h>voidmain<>{ floata;//實發工資 floatb;//應納稅部分工資 floats;//稅率 floatkouchu;//扣除數 floatptax;//個人所得稅 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<"個人所得稅為%f\n",ptax>;}8.編寫程序計算貨款。設按購買貨物款的多少分別給予不同的優惠折扣,購貨不足250元,沒有折扣;購貨250元〔含250元,下同,不足500元,減價5%;購貨500元,不足1000元,減價7.5%;購貨1000元,不足2000元,減價10%;購貨2000元及以上,減價15%。#include<stdio.h>voidmain<>{floatm,d,t;printf<"請輸入購物金額:">;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<"實際應付金額:%f",t>;}9.給一個不多于5位的正整數,編寫程序實現:<1>求出它是幾位數;<2>分別輸出每一位數字;<3>按逆序輸出各位數字。#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>//超過5位數,直接錯誤提示,程序結束。printf<"輸入錯誤!\n">;else{printf<"逆序輸出各位數字:">; for<i=0;i<6;i++> { b=a; if<b!=0> {k++; b=a%t;//對10求余可得個十百千萬位 printf<"%d",b>; a=a/t; } } printf<"\n%d是個%d位數\n",p,k>; printf<"正序輸出各位數字:">; for<j=0;j<6;j++> { c=p; d=c/s%10;//除以s后對10求余可得萬千百十個位 s=s/10;//s要依次/10,求解后面的數值 if<d!=0> printf<"%d",d>; } printf<"\n">; }return0;}10.編寫程序對數據進行加密。設加密方法為:對任意給定的4位整數,每一位數字均加2,若某位數字加2后大于9,則取其除以10的余數,如數據6987加密后的數據為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>;}練習題5參考答案一、選擇題序號12345678910參考答案ABBABDCDBD二、填空題1.以下程序的輸出結果是52。2.以下程序的輸出結果是17。3.有以下程序:程序運行時,如果從鍵盤輸入:Y?N?<回車>,則輸出結果為X。4.下面程序的運行結果s=254。5.下面程序段中循環體的執行次數是3。6.下面程序段的運行結果是**。7.下面程序的運行結果是1,-2。8.下面程序段的運行結果是8。9.下面程序的功能是:計算1~10之間的奇數之和與偶數之和,試完善程序。10.下面程序的功能是:輸出100以內能被3整除且個位數為6的所有整數,請填空。三、程序設計題1.編寫程序計算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.編寫程序從鍵盤輸入正整數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.編寫程序求一個十進制整數的位數。#include<stdio.h>voidmain<>{ intn,m; scanf<"%d",&n>; if<n<0> printf<"請輸入正整數!謝謝合作!\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.編寫程序輸入一行字符,分別統計出其中英文字母、空格、數字和其它字符的個數。#include<stdio.h>intmain<void>{//輸入一行字符,分別統計出其中英文字母、空格、數字和其他字符的個數。charch;intchar_num=0,kongge_num=0,int_num=0,other_num=0;while<<ch=getchar<>>!='\n'>//回車鍵結束輸入,并且回車符不計入{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,數字=%d,其它=%d\n",char_num,kongge_num,int_num,other_num>;return0;}5.編寫程序求一個十進制整數是否為回文數。所謂回文數是指從左向右讀或從右向左讀都是相同的數,也就左右對稱的數,如: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<"不是回文數\n">; return0; } } printf<"是回文數\n">; return0;}6.編寫程序用兩種方法〔一種方法是使用三重循環形成100~999之間的所有數,另一種方法是使用單重循環直接形成100~999之間的所有數求100~999之間的所有"水仙花數"。所謂"水仙花數"是指一個三位數,其各位數字的立方和等于該數本身。例如:153是一個水仙花數,因為153=13+53+33。方法一:三重循環#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;}方法二:單重循環#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.編寫程序找出1000之內的所有"完美數<完全數、完備數>"。"完美數"也稱為"完數",它是指一個數恰好等于它的因子之和。例如,6的因子為1、2、3,而6=1+2+3,因此6是"完數"。#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.編寫程序用窮舉法求解:雞翁一,值錢五;雞母一,值錢三;雞雛三,值錢一。百錢買百雞,雞翁、雞母、雞雛各幾何?#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.已知,編寫程序輸入x的值,求的近似值<要求被舍去的項小于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;//定義每一項的內容sum=sum+temp;i++;}printf<"e=%lf\n",sum>;}10.編寫程序利用泰勒級數計算sinx的值,要求最后一項的絕對值小于10-5,并計算共求了多少項。#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>>;//定義后一項與前一項的關系sum=sum+term;n=n+2;count++;}printf<"sin<x>=%f,count=%d\n",sum,count>;}11.編寫程序用牛頓迭代法求方程在1.5附近的根。#include<stdio.h>#include<math.h>doubleF1<double>;//原函數doubleF2<double>;//原函數的一階導數函數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.編寫程序用二分法求方程在<-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.編寫程序將一張面值為100元的人民幣等值換成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.編寫程序驗證哥德巴赫猜想<任何一個大于等于6的偶數都可以分解為兩個素數之和>,驗證范圍限定為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.愛因斯坦數學題。有一條長階梯,若每步跨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>;//驗算 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.三色球問題。若一個口袋中放有12個球,其中有3個紅色的,3個白色的,6個黑色的,從中任取8個球,編寫程序求共有多少種不同的顏色搭配?#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>;
}練習題6參考答案一、選擇題序號12345678910參考答案DDDAADACBC序號11121314參考答案CDAA二、填空題1.下面程序的運行結果是112358132134552.以下程序的輸出結果是abc。3.若有定義:inta[3][4]={{1,2},{0},{4,6,8,10}};,則初始化后,a[1][2]得到的初值是0,a[2][1]得到的i初值是6。4.以下程序可求出所有水仙花數〔水仙花數是指一個3位正整數,其各位數字的立方之和等于該正整數。如:407=4*4*4+0*0*0+7*7*7,故407是一個水仙花數。請填空。#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.下面程序的功能是:將字符數組a中下標值為偶數的元素從小到大排列,其他元素不變,請填空。#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.下面程序的功能是將二維數組a中每個元素向右移一列,最右一列換到最左一列,移后的數組存到另一個二維數組b中,并按矩陣形式輸出a和b,請填空。例如: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.下面程序中的數組a包括10個整數元素,從a中第二個元素起,分別將后項減前項之差存入數組b,并按每行3個元素輸出數組b。請填空。#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的和,結果存入矩陣C中,并按矩陣形式輸出。請填空。#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">;}}三、程序設計題1.從鍵盤輸入某個班級的30名學生信息<設只含有學號>,編寫程序用折半查找法通過輸入一個學生的學號查找某一學生<注意:查找前要先進行排序>。#include<stdio.h>#defineN30voidmain<>{ inta[N]; inti,j,t,x,mid,low=0,high=N-1; printf<"請輸入%d名學生的學號:\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<"請輸入需要查找的學生的學號:\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<"這個學生學號為%d\n",x>; else printf<"查找不到\n">;}2.設有某班級35名學生的一門課程考試成績,編寫程序求超過平均的學生<包括學號和成績>,并將所有學生按成績降序排列輸出。#include<stdio.h>#defineNUM35voidmain<>{inta[NUM][2];floatsum=0,ave;inti,j,t;printf<"請輸入%d位同學的學號和成績:\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<"超過平均分的學生學號為:%d,成績為:%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<"所有學生成績〔降序排列:\n">;for<i=0;i<NUM;i++> printf<"學號為:%d,成績為:%d\n",a[i][0],a[i][1]>;}3.設從3個候選人中選擇1個人,10個人參加投票,編寫一個統計選票的程序。投票人編號候選人投票人編號候選人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<"請輸入第%d個投票人選擇的候選人:\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的票數為%d\n",p1,n1>;printf<"%s的票數為%d\n",p2,n2>;printf<"%s的票數為%d\n",p3,n3>;}4.輸入一行字符串,編寫程序分別統計各個英文字母出現的次數<不區分字母大小寫>。#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.編寫程序輸出以下楊輝三角形〔要求打印出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.編寫程序輸入并求一個4×4矩陣的兩條對角線元素之和、四周靠邊元素之和。#include<stdio.h>#defineN4voidmain<>{inta[N][N];inti,j;intsum1=0;//對角線元素之和in
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國智能跟蹤高速球攝像機數據監測研究報告
- 2025至2030年中國德意女毛軍警靴數據監測研究報告
- 2025至2030年中國客流量計數器數據監測研究報告
- 2025至2030年中國增氧機浮體數據監測研究報告
- 模具設計常見問題解決方案試題與答案
- 2025至2030年中國制氮裝置數據監測研究報告
- 公共衛生領域的醫療大數據分析技術進展
- 戰略思考的體育經紀人考試試題及答案
- 2024籃球裁判員考試知識點歸納與試題及答案
- 制定2024年農作物種子繁育員考試復習總結試題及答案
- 充電樁的施工方案
- Oracle ERP系統建設實施方案
- TSG-R0005-2022《移動式壓力容器安全技術監察規程》(2022版)
- 廣東省教育廳關于規范化城市幼兒園的辦園標準
- 【推薦】大華“智慧消防”物聯網綜合管理解決方案
- 分層總和法計算地基沉降excel
- 2020 ACLS-PC-SA課前自我測試試題及答案
- 2022年CASEAR2簡易操作手冊
- 中國墓葬文化(專業應用)
- 中醫方劑學歌訣大全(最全收藏版)
- GB5749-2022生活飲用水衛生標準.
評論
0/150
提交評論