大一c語(yǔ)言期末考試編程題_第1頁(yè)
大一c語(yǔ)言期末考試編程題_第2頁(yè)
大一c語(yǔ)言期末考試編程題_第3頁(yè)
大一c語(yǔ)言期末考試編程題_第4頁(yè)
大一c語(yǔ)言期末考試編程題_第5頁(yè)
已閱讀5頁(yè),還剩1頁(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)介

第第頁(yè)大一c語(yǔ)言期末考試編程題1.判斷素?cái)?shù)第一題:判斷是否為素?cái)?shù),若是,則返回1,否則返回0,若輸入1或比1小的數(shù)字返回0。intis_Prime(inta)//素?cái)?shù)判斷,是則返回1,不是返回0,-1表示輸入的值有問(wèn)題{inti=0;if(a<=1)return-1;for(i=2;i<=sqrt(a);i++){if(a%i==0)return0;}return1;}這里有同學(xué)可能不明白為什么for(i=2;i<=sqrt(a);i++)簡(jiǎn)單解釋一下:因數(shù)都是成對(duì)出現(xiàn)的,比如100,其可以分為1和100,2和50,4和25,由此可見(jiàn)其中一個(gè)必然小于等于100的開(kāi)方,另一個(gè)則大于等于100的開(kāi)方。這種判斷素?cái)?shù)的方法,應(yīng)付考試足以,但想要更上一層樓這卻遠(yuǎn)遠(yuǎn)不夠,大家可以去了解一下篩法。2.數(shù)組排序期末考試的排序方法常常有兩種:選擇排序、冒泡排序。voidsortarry2(int*a,intn)//冒泡排序{ inti,j;for(i=0;i<n-1;i++)//此處只需比n-1次for(j=1;j<n-i;j++)//每次比好后,只需比n-1-i次{if(a[j]<a[j-1]){inttemp;temp=a[j-1];a[j-1]=a[j];a[j]=temp;}}return;}這是冒泡排序(從小到大),顧名思義就是每次讓較大的數(shù)想氣泡一樣浮上去,對(duì)于為什么第一個(gè)for語(yǔ)句只需比n-1次,大家想想,現(xiàn)在排5個(gè)數(shù),四個(gè)較大數(shù)浮上去了,最后一個(gè)還用比嗎?同樣第二語(yǔ)句為什么只需比n-1-i次也是同樣的道理。voidsortarry1(int*a,intn)//選擇排序{inti,j;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++){if(a[i]>a[j]){inttemp;temp=a[i];a[i]=a[j];a[j]=temp;}}return;}了解了冒泡排序后,選擇排序就十分好理解了,這里就不多說(shuō)了。對(duì)于大多數(shù)學(xué)校,會(huì)這兩種算法應(yīng)付期末考試足以,但其實(shí)排序的方法還有很多,基礎(chǔ)的插入排序,高級(jí)一點(diǎn)的快速排序。3.二分查找二分查找,分治法里面的一種,有叫折中查找。但二分查找必須有個(gè)前提,就是對(duì)于查找對(duì)象,必須是已經(jīng)排好序的。一般期末考試常考的是對(duì)數(shù)組的排序。intsearch(int*a,intkey,intn)//二分法查找,返回值為當(dāng)前數(shù)組的下標(biāo){intfirst=0;intlast=n-1;intmid=0;while(first<last){mid=(first+last)/2;if(a[mid]>=key){last=mid;}else{first=mid+1;}}if(a[last]==key)returnmid;return-1;//表示沒(méi)找到}我查了一下,網(wǎng)站上大多數(shù)的二分查找,都是找到了就返回,可我們常常遇到的題目確實(shí),要返回第一數(shù)的位置。所以if(a[mid]>=key)這個(gè)語(yǔ)句起了關(guān)鍵作用。4.最大公約數(shù)對(duì)于最大公約數(shù),大致思路有兩種,直接循環(huán)、采用輾轉(zhuǎn)相除法。這里直接講第二種,這方法好像高中學(xué)過(guò),又名歐幾里得算法。內(nèi)容就是:兩個(gè)整數(shù)的最大公約數(shù)等于,大的除以小的余數(shù),循環(huán)或遞歸,直至整除余0后的整數(shù)。至于為什么,百度吧。intGCD(inta,intb)//最大公約數(shù){if(b==0)return0;elsereturnGCD(b,a%b);}當(dāng)然循環(huán)也可實(shí)現(xiàn),intgcd(inta,intb){inttemp;while((a%b)!=0){temp=a%b;a=b;b=temp;}returnb;}大多數(shù)疑問(wèn)的是為什么不用確保是大數(shù)除小數(shù)當(dāng)a<b時(shí),a%b==a;此時(shí)第一個(gè)循環(huán)就會(huì)把位置換過(guò)來(lái)。5.最小公倍數(shù)如果會(huì)求最大公約數(shù),那么最小公倍數(shù)就太簡(jiǎn)單了。最大公倍數(shù)*最大公倍數(shù)=a*b至于證明,去問(wèn)百度吧。接下來(lái)差不多都是水題。6.下述程序段是要實(shí)現(xiàn)在數(shù)組中查找最大元素和最小元素的下標(biāo),請(qǐng)補(bǔ)充。如果上述題目都會(huì),那么這題目就太簡(jiǎn)單了,直接上代碼。voidfind(int*a,intn,int*max,int*min){inti;*max=*min=0;for(i=1;i<n;i++){if(a[i]>a[*max])*max=i;elseif(a[i]<a[*min])*min=i;}return;}7.猴子吃桃題猴子吃桃問(wèn)題,猴子第一天摘下若干個(gè)桃子,當(dāng)即吃了一半,還不過(guò)癮,又多吃了一個(gè)。第二天早上又將剩下的桃子吃掉一半,又多吃了一個(gè)。以后每天早上都吃了前一天剩下的一半零一個(gè)。到第10天早上想再吃時(shí),見(jiàn)只剩下一個(gè)桃子。求第一天共摘多少桃子?intmain(){inti,count=1;for(i=1;i<10;i++){count=(count+1)*2;}printf("%d\n",count);return0;}逆過(guò)程思考問(wèn)題。8.回文問(wèn)題回文數(shù)是指正讀和反讀都一樣的正整數(shù)。例如3773是回文數(shù)。求出[1000,9999]之間的回文數(shù)是偶數(shù)的最大回文數(shù)。intmain(){inta1,b1,a2,b2,i,hws;for(i=1000;i<=9999;i++){a1=i/1000;//千位b1=i/100-a1*10;//百位b2=i/10-a1*100-b1*10;//十位a2=i%10;//個(gè)位if((a1==a2)&&(b1==b2)&&(i%2==0))hws=i;}printf("所求的最大回文數(shù)為:%d",hws);return0;}當(dāng)然這里是題目簡(jiǎn)單只有四位數(shù),萬(wàn)一位數(shù)不確定呢?大家可以思考思考,在評(píng)論區(qū)中討論。9.二維數(shù)組一個(gè)14*14方陣A(i,j),其每個(gè)元素的值為該元素下標(biāo)的平方和,求出該矩陣所有對(duì)角線元素的累加和(注:i,j從1到14)。簡(jiǎn)單模擬即可。intmain(){longa[15][15];longi,j,sum=0;for(i=1;i<15;i++)for(j=1;j<15;j++)a[i][j]=i*i+j*j;for(i=1;i<15;i++)sum=sum+a[i][i];printf("%ld",sum);return0;}10.結(jié)構(gòu)體問(wèn)題有5個(gè)學(xué)生,每個(gè)學(xué)生的數(shù)據(jù)包括學(xué)號(hào)、姓名、2門(mén)課程的成績(jī),從鍵盤(pán)輸入5個(gè)學(xué)生數(shù)據(jù),要求輸出5個(gè)學(xué)生2門(mén)課程總平均成績(jī)。structstudent{charno[5];charname[8];intscore[2];};intmain(){studentrecord[5];inti,sum=0,j,ave;printf("Pleaseinput5studentsscore:");for(i=0;i<5;i++){printf("Pleaseinput%dnumber:",i+1);printf("enternumber:");scanf("%s",record[i].no);printf("entername:");scanf("%s",record[i].name);

溫馨提示

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