大一c语言期末考试编程题
1.判斷素?cái)?shù)
第一題:判斷是否為素?cái)?shù),若是,則返回1,否則返回0,若輸入1或比1小的數(shù)字返回0。
這里有同學(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ù)組排序
期末考試的排序方法常常有兩種:選擇排序、冒泡排序。
這是冒泡排序(從小到大),顧名思義就是每次讓較大的數(shù)想氣泡一樣浮上去,對(duì)于為什么第一個(gè)for語(yǔ)句只需比n-1次,大家想想,現(xiàn)在排5個(gè)數(shù),四個(gè)較大數(shù)浮上去了,最后一個(gè)還用比嗎?同樣第二語(yǔ)句為什么只需比n-1-i次也是同樣的道理。
void sortarry1(int *a,int n)// 選擇排序 {int i, j;for(i=0;i<n-1;i++)for (j = i + 1; j < n; j++){if (a[i] > a[j]){int temp;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ù)組的排序。
我查了一下,網(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ù)。至于為什么,百度吧。
當(dāng)然循環(huán)也可實(shí)現(xiàn),
int gcd(int a, int b) {int temp;while ((a % b) != 0){temp = a % b;a = b;b = temp;}return b; }大多數(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)單了,直接上代碼。
7.猴子吃桃題
猴子吃桃問(wèn)題,猴子第一天摘下若干個(gè)桃子,當(dāng)即吃了一半,還不過(guò)癮,又多吃了一個(gè)。第二天早上又將剩下的桃子吃掉一半,又多吃了一個(gè)。以后每天早上都吃了前一天剩下的一半零一個(gè)。到第 10 天早上想再吃時(shí),見(jiàn)只剩下一個(gè)桃子。求第一天共摘多少桃子?
逆過(guò)程思考問(wèn)題。
8.回文問(wèn)題
回文數(shù)是指正讀和反讀都一樣的正整數(shù)。例如 3773 是回文數(shù)。求出 [1000 , 9999] 之間的回文數(shù)是偶數(shù)的最大回文數(shù)。
當(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)單模擬即可。
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ī)。
對(duì)于結(jié)構(gòu)體來(lái)說(shuō),一定要細(xì)心,要記得定義結(jié)構(gòu)體類型時(shí) 后面的 ;。
大致內(nèi)容就這么多,如有錯(cuò)誤,還望大佬指出。
總結(jié)
以上是生活随笔為你收集整理的大一c语言期末考试编程题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: dubbo源码解析(一)
- 下一篇: C语言中strdup函数使用方法