C語(yǔ)言試習(xí)題 四_第1頁(yè)
C語(yǔ)言試習(xí)題 四_第2頁(yè)
C語(yǔ)言試習(xí)題 四_第3頁(yè)
C語(yǔ)言試習(xí)題 四_第4頁(yè)
C語(yǔ)言試習(xí)題 四_第5頁(yè)
已閱讀5頁(yè),還剩15頁(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)介

1、C語(yǔ)言試題 四 6.9 巧分橘子一家農(nóng)戶以果園為生,一天,父親拿出一堆橘子,共2520個(gè),準(zhǔn)備分給他的6個(gè)兒子。父親按事先寫在一張紙上的數(shù)字把這堆橘子分完,每個(gè)人分到的橘子的個(gè)數(shù)都不相同。然后他說(shuō):“老大,把你分到的橘子分1/8給老二,老二拿到后,連同原來(lái)的橘子分1/7給老三,老三拿到后,連同原來(lái)的橘子分1/6給老四,以此類推,最后老六拿到后,連同原來(lái)的橘子分1/3給老大,這樣,你們每個(gè)人分到的橘子就一樣多了。”問(wèn)兄弟6人原先各分到多少只橘子。 請(qǐng)將兄弟6人的橘子數(shù)存儲(chǔ)到一維數(shù)組中,并按照下列各式輸出(下面只提供格式,數(shù)據(jù)不準(zhǔn)確):x1=111x2=222x3=333x4=444x5=555x

2、6=666#include<stdio.h>void main()int a6,b6,i;for(i=0;i<6;i+)ai=2520/6;bi=8-i;a0=a0-(a5/(b5-1);for(i=5;i>=1;i-)ai=ai+(ai/(bi-1)-(ai-1/(bi-1-1);a0=a0*b0/(b0-1);for(i=0;i<6;i+)printf("x%d=%dn",i+1,ai);選做題 6.1 大家一起做游戲幼兒園的小朋友們剛學(xué)習(xí)了如何數(shù)數(shù),阿姨在下課時(shí)組織大家一起玩游戲。規(guī)則如下:所有的小朋友繞成一圈,順序排號(hào),從第一個(gè)小朋友開

3、始報(bào)數(shù),凡是報(bào)到固定數(shù)字(例如5)的,都退出該游戲,直到只剩下一位小朋友游戲才中止。 每個(gè)小朋友都希望自己能有更多的練習(xí)數(shù)數(shù)的機(jī)會(huì),所以都希望成為最終被留下的那位。現(xiàn)在,請(qǐng)大家?guī)托∨笥褌冇?jì)算一下,在第一次排號(hào)的時(shí)候排到第幾位才能成為最終被留下的小朋友。輸入:小朋友的個(gè)數(shù)(<=50),要被練習(xí)的數(shù)字輸出:最終被留下的小朋友的序號(hào)說(shuō)明:如“要被練習(xí)的數(shù)字”是5,則每次數(shù)到5的同學(xué)要退出該游戲#include<stdio.h>void main()int N,n,i,s=0,a;scanf("%d%d",&N,&n);for(i=2;i<=

4、N;i+)s=(s+n)%i;a=s+1;printf("The left child is NO %d.n",a);選做題6.2 猜數(shù)字有如下一組數(shù)字,其中每個(gè)數(shù)字都在 1 63 之間, 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 632 3 6 7 10 11 14 15 18 19 22 23 26 27 30 31 34 35 38 39 42 43 46 47 50 51 54 55 58 59 62 634 5 6 7 12 13

5、14 15 20 21 22 23 28 29 30 31 36 37 38 39 44 45 46 47 52 53 54 55 60 61 62 638 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31 40 41 42 43 44 45 46 47 56 57 58 59 60 61 62 6316 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 6332 33 34 35 36 37 38 39 40 41 42 43

6、 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 現(xiàn)在需要編寫一個(gè)程序,當(dāng)從鍵盤輸入某數(shù)字在且僅在哪幾行出現(xiàn)了,該程序可以“猜”出這個(gè)數(shù)字是幾。輸入:程序的輸入是一串以空白 符分開的數(shù)字,當(dāng)輸入 0 時(shí)表示輸入結(jié)束。輸出:輸出猜到的數(shù)字。#include<stdio.h>#include<math.h>void main()int i,sum=0;doscanf("%d",&i);sum=sum+pow(2,i-1);while(i!=0);printf("%d

7、n",sum);選做題 6.3 小蜜蜂一只小蜜蜂在如下圖所示的蜂窩上爬行。它爬行時(shí),只能從一個(gè)格爬到相鄰的大號(hào)格子中。例如,從 1 號(hào)格子可以爬到 2 號(hào)或者 3 號(hào)格子,從 2 號(hào)則可以爬到 3 號(hào)或者 4 號(hào)格子。請(qǐng)問(wèn)從一個(gè)格子 a 爬到一個(gè)格子 b 一共有多少種可行的路線。 輸入:分別是起始點(diǎn) a 和終止點(diǎn) b 的編號(hào)。( a 和 b 在 1100 之間,且 a<b 。) 輸出:可行的路線數(shù)目#include<stdio.h>void main()int a,b,x,i;int f100;f1=1;f2=2;scanf("%d%d",&am

8、p;a,&b);x=b-a;if(x=1)printf("%dn",f1);if(x=2)printf("%dn",f2);if(x>=3)for(i=3;i<=x;i+)fi=fi-1+fi-2;printf("%dn",fx);選做題 6.4 數(shù)制轉(zhuǎn)換我們通常使用的都是十進(jìn)制的數(shù)字,但其實(shí)在生活中也經(jīng)常會(huì)使用其它進(jìn)制。 這個(gè)題目會(huì)給你兩個(gè)不同的數(shù)字,它們不屬于同一進(jìn)制,要求你計(jì)算出當(dāng)它們分別處于何種進(jìn)制之中時(shí),兩個(gè)數(shù)字相等。譬如 12 和 5 ,在十進(jìn)制下它們是不等的,但若 12 使用 3 進(jìn)制而 5 使用六進(jìn)

9、制或十進(jìn)制時(shí),它們的值就是相等的。因此只要選擇合適的進(jìn)制, 12 和 5 就可以是相等的。 程序的輸入是兩個(gè)數(shù)字 M 和 N( 其十進(jìn)制的值不超過(guò) 00) ,它們的進(jìn)制在 236 之間。對(duì)于十以下的數(shù)字,用 09 表示,而十以上的數(shù)字,則使用大寫的 AZ 表示。 求出分別在 236 哪種進(jìn)制下 M 和 N 相等。若相等則輸出相應(yīng)的進(jìn)制,若不等則輸出錯(cuò)誤信息。信息的格式見測(cè)試用例。#define N 50 #include"string.h" #include"stdio.h" int main()char aN,bN,dN,eN,d0N; int i,j

10、,o,r,g,h,w,t,l,k,max1,max2; double pN,qN=0,uN,vN=0,cN,fN,m,n;for(i=0;i<N;i+)scanf("%c",&ai); if(ai='x20') l=i; break; gets(d); if(d0!='x20')k=strlen(d);goto C;if(d0='x20')strcpy(d0,d);g=strlen(d0);for(i=0;d0i='x20'i+);j=i;for(i=0;i<g-j;i+)di=d0i+j;

11、k=g-j; C:for(i=0;i<l;i+) bi=al-i-1; if(bi<='x39'&&bi>='x30') ci=bi-'0' if(bi<='x5A'&&bi>='x41') ci=bi-'7' for(i=0;i<k;i+) ei=dk-i-1; if(ei<='x39'&&ei>='x30') fi=ei-'0' if(ei<=&#

12、39;x5A'&&ei>='x41') fi=ei-'7' max1=c0; for(i=1;i<l;i+) if(max1<ci) max1=ci; if(max1=0) max1=1;max2=f0; for(i=1;i<k;i+) if(max2<fi) max2=fi; if(max2=0) max2=1; for(i=max1+1;i<=36;i+)for(j=0;j<l;j+)m=cj;for(g=0;g<j;g+)m=m*i;qi=qi+m;for(i=max2+1;i<

13、=36;i+)for(j=0;j<k;j+)n=fj;for(g=0;g<j;g+)n=n*i;vi=vi+n; for(g=max1+1;g<=36;g+) for(h=max2+1;h<=36;h+) if(qg=vh)w=g,t=h;goto out;for(i=0;i<l;i+)printf("%c",ai);printf(" is not equal to ");for(i=0;i<k;i+)printf("%c",di);printf(" in any base 2.36n&q

14、uot;);goto outs;out:for(i=0;i<l;i+)printf("%c",ai);printf(" (base %d) = ",w);for(i=0;i<k;i+)printf("%c",di);printf(" (base %d)n",t);outs:;選做題 6.5 等值數(shù)列段如果一個(gè)數(shù)列中的某一段(至少有兩個(gè)元素)的各元素值均相同,則稱之為等值數(shù)列段。等值數(shù)列段中元素的個(gè)數(shù)叫做等值數(shù)列段的長(zhǎng)度。 輸入:由N個(gè)元素組成的整數(shù)數(shù)列A(其中N<=50)輸出:A中長(zhǎng)度最大的等值數(shù)

15、列段的始末位置,如果沒(méi)有等值數(shù)列段,則輸出No equal number list.說(shuō)明:始末位置是指數(shù)組下標(biāo),即0表示第一個(gè)元素。如果有多個(gè)同等長(zhǎng)度的等值數(shù)列,只輸出第一個(gè)等值數(shù)列的起始位置。當(dāng)在一個(gè)LIST中出現(xiàn)兩個(gè)等長(zhǎng)的連續(xù)串的時(shí)候,我們的答案應(yīng)該是第一個(gè)等長(zhǎng)串。#include<stdio.h>void main()int a50;int f10=0;int n,i,j,k=-1,t,q,s,o,o1,count=1,max=-1;scanf("%d",&n);for(i=0;i<=n-1;i+)scanf("%d",&

16、amp;ai);dofor(j=0;j<=n-1;j+)if(aj=aj+1)count=count+1;k=count;fj+1=fj+1+k;if(aj!=aj+1)count=1;continue;max=k;while(max<k);if(max=-1)printf("No equal number list.n");/for(q=0;q<=n-1;q+)/printf("%d ",fq);/printf("n");elseo=f0;for(s=1;s<=n-1;s+)if(fs>o)o=fs;o

17、1=s;/printf("%d %d",o1,o);/printf("n");printf("The longest equal number list is from %d to %d.n",o1-o+1,o1);選做6.6 郵票組合背景:我們寄信都要貼郵票,在郵局有一些小面值的郵票,通過(guò)這些小面值郵票中的一張或幾張的組合,可以滿足不同郵件的不同的郵資。現(xiàn)在,郵局有4種不同面值的郵票。在每個(gè)信封上最多能貼5張郵票,面值可相同,可不同。輸入:四種郵票的面值。輸出:用這四種面值組成的郵資最大的從1開始的一個(gè)連續(xù)的區(qū)間。說(shuō)明:如結(jié)果為10

18、,則表明使用4張郵票可組合出1、2、3、4、5、6、7、8、9、10這些郵資。名詞解釋:郵 資:就是你寄東西需要花多少錢。郵票面額:是由國(guó)家發(fā)行的具有固定價(jià)格的花紙片,被稱為郵票。如果你寄東西,郵局稱了重量,告訴你要240分。這樣你就要貼郵票了。如果現(xiàn)在郵局的郵票有面值為80分、50分、20分和10分的四種,你就可以采用不同的組合得到240的郵資,例如:采用3張80分的可以湊出240分;或者24張10分的湊起來(lái)240分也可以。顯然不同郵票的組合都可以得到同樣一種郵資。#include<stdio.h> int neng(int a,int max) int i,j,k,m,n;in

19、t sum;for(i=0;i<5;i+)for(j=0;j<5;j+)for(k=0;k<5;k+)for(m=0;m<5;m+)for(n=0;n<5;n+)sum=ai+aj+ak+am+an;if (sum=max)return 1;return 0;void main()int a5,i;int max=0;a4=0;scanf("%d%d%d%d",&a0,&a1,&a2,&a3);while(1)if(neng(a,max)max+;else break;printf("The max i

20、s %d.n",max-1);選做6.7 十進(jìn)制數(shù)轉(zhuǎn)換為16位二進(jìn)制數(shù)將任一正整數(shù)(<65536)轉(zhuǎn)換為 16 位二進(jìn)制形式。輸入: 正整數(shù) 輸出: 正整數(shù)的 16 位二進(jìn)制數(shù) 友情提示:定義一個(gè)整型數(shù)組,數(shù)組有16個(gè)元素,保存變換后的二進(jìn)制數(shù)。#include<stdio.h>void main()int n,i;int a16;scanf("%d",&n);if(n>0&&n<65536)for(i=0;i<=15;i+)ai=n%2;n=n/2;for(i=15;i>=0;i-)printf(

21、"%d",ai);printf("n");elseprintf("Invalid input!n");選做題6.9 折半插入排序排序是程序設(shè)計(jì)中的重要內(nèi)容之一,據(jù)不完全統(tǒng)計(jì),在一般的數(shù)據(jù)處理程序中,排序占去了處理機(jī)時(shí)間的四分之一,而在典型的安裝程序中,一半以上的時(shí)間用在對(duì)表的排序上。常用的排序算法有:直接插入排序,折半插入排序,希爾排序,起泡排序,快速排序,選擇排序,堆排序等。其中直接插入排序的基本操作是將一個(gè)記錄插入到已排好序的有序表中,從而得到一個(gè)新的、記錄數(shù)增1的有序表。在直接插入排序中,為了找到插入位置,采用了順序查找的方法。

22、為了提高查找速度,可以采用折半查找,這種排序稱折半插入排序。折半查找法先取有序數(shù)組的中間元素與查找值相比較。如相等則查找成功;如查找值大于中間元素,則再取高半部的中間元素與查找值相比較。如查找值小于中間元素,則再取低半部的中間元素與查找值相比較。如此重復(fù)直到查找成功或最終未找到該數(shù)為止。在折半插入排序算法中,由于進(jìn)行關(guān)鍵字比較的次數(shù)比較少,所以算法的效率就比較高。例如:有序列10,90,80,30,20,15。我們進(jìn)行折半插入排序的過(guò)程如下:初始(第1趟):有序子序列為空。待排序數(shù) 據(jù)為10,則不需要進(jìn)行關(guān)鍵字比較,直接插入。第2趟:有序子序列為“10”,待排序數(shù)據(jù)為90,進(jìn)行1次比較就可以確

23、定插入位置,得到長(zhǎng)度+1的有序子序列“10,90”。此時(shí)比較次數(shù)為 1 。第2趟:有序子序列為“10,90”。待排序數(shù)據(jù)為80,取有序序列中間(取整)的元素10進(jìn)行第 1 次比較,80大;則應(yīng)該從“90”這個(gè)子序列中進(jìn)行折半插入80,進(jìn)行第 2 次比較,定位應(yīng)該的插入位置,得到有序序列“10,80,90”。此趟比較次數(shù)為 2。第3趟:有序子序列為“10,80,90”。待排序數(shù)據(jù)為30,取有序序列中間的元素80進(jìn)行第 1 次比較,30??;則應(yīng)該從“10”這個(gè)子序列中進(jìn)行折半插入30,進(jìn)行第 2 次比較,可以定位應(yīng)該插入的位置,得到新的長(zhǎng)度+1的有序子序列。此趟比較次數(shù)為 2。第4趟:有序子序列為

24、“10,30,80,90”。待排序數(shù)據(jù)為20,取有序序列中間的元素30進(jìn)行第 1 次比較,20小;則應(yīng)該從“10”這個(gè)子序列中進(jìn)行折半插入20,進(jìn)行第 2 次比較,可以確定應(yīng)該插入的位置。此趟比較次數(shù)為 2。第5趟:有序子序列為“10,20,30,80,90”。待排序數(shù)據(jù)為15,取有序序列中間的元素30進(jìn)行第 1 次比較,15??;則應(yīng)該從“10,20”這個(gè)子序列中進(jìn)行折半插入15,取子序列中間的元素10,進(jìn)行第 2 次比較,15大,則應(yīng)該從“20”這個(gè)子序列中進(jìn)行折半插入排序,再進(jìn)行 1 次比較就可以確定應(yīng)該插入的位置。此趟比較次數(shù)為 3。此時(shí),完成排序,得到升序序列“10,15,20,30,

25、80,90”。在整個(gè)排序過(guò)程中進(jìn)行關(guān)鍵字比較的總次數(shù) = 0+1+2+2+2+3 = 10。輸入:數(shù)列中元素個(gè)數(shù)(元素?cái)?shù)量<=100)數(shù)列輸出:使用折半插入排序后的有序升序數(shù)列在折半插入排序過(guò)程中進(jìn)行關(guān)鍵字比較的次數(shù)說(shuō)明:輸出個(gè)數(shù)列之間用空格分隔#include <stdio.h> int main() int n,a100,b100,i,j,count=0,lengthb=1; scanf("%dn",&n); for(i=0;i<n;i+) scanf("%d",&ai); b0=a0; for(i=1;i&l

26、t;n;i+) int c=0,d=lengthb-1,flag=0; do if(ai>b(c+d)/2) /待插入數(shù)字大于中間值 c=(c+d)/2+1; count+; else if(ai<b(c+d)/2) /待插入數(shù)字小于中間值d=(c+d)/2-1; count+; else count+; flag=1; break; while(c<=d); /處理最后一個(gè)數(shù)字 if(flag=0) for(j=i-1;j>=c;j-) bj+1=bj; bc=ai; lengthb+; for(i=0;i<lengthb;i+) printf("%d

27、",bi); if(i!=lengthb-1)printf(" "); printf("n%dn",count); return 0; 8.1 合并字符串輸入兩個(gè)已經(jīng)按從小到大順序排列好的字符串,編寫一個(gè)合并兩個(gè)字符串的函數(shù),使合并后的字符串,仍然是從小到 大排列。輸入:兩個(gè)已經(jīng)排好順序(升序)的兩個(gè)字符串輸出:一個(gè)合并在一起的有序(升序)的字符串要求:設(shè)計(jì)一個(gè)效率盡量高的算法,對(duì)每個(gè)字符串只掃描一遍就可以了。如果采用先進(jìn)行串連接,然后再進(jìn)行排序的算法,則效率太低了。#include <stdio.h>#include <st

28、dlib.h>#include <string.h>int main()char a100,b100,t;int k,i,j;gets(a);gets(b);strcat(a,b);k=strlen(a);for(j=1;j<=k;j+)for(i=0;i<k-j;i+)if(ai>=ai+1)t=ai;ai=ai+1;ai+1=t;puts(a);return 0;8.3 刪除重復(fù)字符背景: 輸入一個(gè)長(zhǎng)度不超過(guò) 100 的字符串,刪除串中的重復(fù)字符。輸入:輸入要檢查的字符串,長(zhǎng)度不超過(guò)100個(gè)字符。例如:abacaeedabcdcd。輸出:刪除重復(fù)字符后的

29、字符串。例如:abced。#include <stdio.h>#include <stdlib.h>#include <string.h>int main()char a100,b100;int n,i,j,cnt=1;gets(a);n=strlen(a);b0=a0;for(i=1;i<n;i+)for(j=0;j<i;j+)if(ai=aj)break;if(ai=aj&&i=j)bcnt=ai;cnt+;for(i=0;i<cnt;i+)printf("%c",bi);printf("n

30、");return 0;8.4 刪除字符串中指定字符輸入兩個(gè)字符串 s1 和 s2 ,在 s1 中刪除任何 s2 中有的字符。例如, s1 :“ abc123ad ”, s2 :“ a1 ” ,則輸出“bc23d ”。輸入: 兩個(gè)字符串 s1 和 s2 輸出: 刪除后的字符串 s1 #include <stdio.h>#include <stdlib.h>#include <string.h>int main()char a100,b100,c100;int x,y,i,j,cnt;scanf("%s",a);scanf(&qu

31、ot;%s",b);x=strlen(b);y=strlen(a);for(j=0;j<x;j+)cnt=0;for(i=0;i<y;i+)if(ai!=bj)ccnt=ai;cnt+;strcpy(a,c);y=cnt;for(i=0;i<cnt;i+)printf("%c",ci);printf("n");return 0;8.5 單詞有多少用空格或換行分開的字符串稱為單詞。輸入多行字符串,直到遇到了單詞 "stop" 時(shí)才停止。最后輸出單詞的數(shù)量。用于分割單詞的空格或換行可能多于1個(gè)。輸入: 多個(gè)字符

32、串 輸出: 單 詞的數(shù)量#include <stdio.h> #include <malloc.h> #include <string.h> void main() int count=0; char *word ; while(1) word=(char *) malloc (sizeof(char)*20); scanf("%s",word); +count; if(0=strcmp(word,"stop") break; free(word); printf("%dn",count-1); 8

33、.6 在指定位置插入字符串輸入兩個(gè)字符串 s1 、 s2 和 s1 中任意字符 k ,在 s1 中的指定字符 k 第一次出現(xiàn)的位置處插入字符串 s2 并輸出。輸入: 兩個(gè)字符串 s1 、 s2 和 s1 中任意字符 k 輸出: 插入后的字符串 s1 #include<stdio.h>#include<string.h>void main()char s1100,s2100,s3100;char c;int i,j,n,t,count=-1;gets(s1);gets(s2);n=strlen(s1);t=strlen(s2);scanf("%c",&

34、amp;c);for(i=0;i<=n-1;i+)count=count+1;if(c=s1i)break;for(i=0;i<count;i+)s3i=s1i;for(i=count;i<count+t;i+)s3i=s2i-count;for(i=count+t;i<=n+t;i+)s3i=s1i-t;puts(s3);/*for(i=0;i<q;i+)printf("%c",s3i);printf("n");*/選做T 8.1 拱豬計(jì)分背景:拱豬是一種很有趣的撲克牌游戲。即使你不知道它的玩法,你也可以由它的計(jì)分方式來(lái)了

35、解它的趣味性。 假設(shè)在此我們僅考慮四個(gè)人的拱豬牌局,本題要求你根據(jù)下面的計(jì)分規(guī)則,在牌局結(jié)束時(shí)計(jì)算四位玩家所得分?jǐn)?shù)。 我們分別以S、H、D及C來(lái)代表黑桃,紅心,方塊及梅花,并以數(shù)字1至 13來(lái)代表A、2、Q、K等牌點(diǎn),例如:H1為紅心A,S13為黑桃K。 牌局結(jié)束時(shí),由各玩家持有的有關(guān)計(jì)分的牌(計(jì)分牌)僅有S12(豬),所有紅心牌,D11(羊)及C10(加倍)等16張牌。其它牌均棄置不計(jì)。若未持有這16張牌之任一張則以得零分計(jì)算。 若持有C10的玩家只有該張牌而沒(méi)有任何其它牌則得+50分,若除了C10 還有其它計(jì)分牌,則將其它計(jì)分牌所得分?jǐn)?shù)加倍計(jì)算。 若紅心牌不在同一家,則H1至H13等13張

36、牌均以負(fù)分計(jì),其數(shù)值為-50, -2,-3,-4,-5,-6,-7,-8,-9,-10,-20,-30,-40。而且S12與D11分別以-100及+100分計(jì)算。 若紅心牌H1至H13均在同一家,有下列情形: 所有紅心牌以+200分計(jì)算。 若S12、D11皆在吃下所有紅心牌之一家,則此玩家得+500分。 而C10還是以前面所述原則計(jì)算之。 例一:若各玩家持有計(jì)分牌如下: ( 每行代表一玩家所持有之牌 ) S12 H3 H5 H13D11 H8 H9C10 H1 H2 H4 H6 H7H10 H11 H12 則各家之得分依序?yàn)椋?-148 、 +83 、 -138 及 -60 。 例二:若各玩家

37、持有計(jì)分牌如下:(第四家未持有任何計(jì)分牌)H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13S12 C10D11 則各家之得分依序?yàn)椋?+200 、 -200 、 +100 及 0 。 例三:若有一玩家持有所有 16 張計(jì)分牌,則得 +1000 分。其余三家均得零分。 輸入:每個(gè)輸入文件由多組測(cè)試數(shù)據(jù)構(gòu)成,每組測(cè)試數(shù)據(jù)有四行,每一行第一個(gè)數(shù)為該玩家所持有計(jì)分牌總數(shù),而后列出其所持有之所有計(jì)分牌,牌數(shù)與各計(jì)分牌均以一個(gè)以上的空格分開。相鄰兩組測(cè)試數(shù)據(jù)之間不會(huì)有空白行,讀到四家持牌數(shù)都為 0 表示文件結(jié)束。 輸出:每一行輸出一組測(cè)試數(shù)據(jù)對(duì)應(yīng)的結(jié)果,依次輸出各家所得

38、分?jǐn)?shù),共四個(gè)整數(shù) ( 含正負(fù)號(hào),0 除外),相鄰兩個(gè)整數(shù)之間以一個(gè)空格分開,符號(hào)和數(shù)字間不可以有空格。每組輸出間不需要有空白行。 #include "stdio.h" int myinput(int card,int number) int i,n; char s5; for(i=0;i<4;i+) scanf("%d",&n); numberi=n; while(n-) scanf("%s",s); switch(s0) case 'S':card13=i;break; case 'D'

39、:card14=i;break; case 'C':card15=i;break; case 'H':s2='0'(cards1-'1'=i):(cards2-'1'+10=i); return number0+number1+number2+number3; int main() int value15=-50,-2,-3,-4,-5,-6,-7,-8,-9,-10,-20,-30,-40,-100,100, card16, score4=0,0,0,0, number4, i,s, input(); while

40、(myinput(card,number) for(i=0,s=0;i<13;i+) s+=cardi; if(s%13) for(i=0;i<15;i+) scorecardi+=valuei; else if(card0=card13&&card13=card14) scorecard0+=500; else scorecard0+=200; scorecard14+=value14; scorecard13+=value13; scorecard15+=numbercard15=1?50:scorecard15; for(i=0;i<4;i+) prin

41、tf("%s%d%s",scorei>0"+":"",scorei,i=3"n":" "); for(i=0;i<4;i+) scorei=0; return 0; 選作T 8.2 合并果子在一個(gè)果園里,多多已經(jīng)將所有的果子打了下來(lái),而且按果子的不同種類分成了不同的堆。多多決定把所有的果子合成一堆。每一次合并,多多可以把兩堆果子合并到一起,消耗的體力等于兩堆果子的重量之和??梢钥闯?,所有的果子經(jīng)過(guò)n-1次合并之后,就只剩下一堆了。多多在合并果子時(shí)總共消耗的體力等于每次合并所耗體力之和

42、。因?yàn)檫€要花大力氣把這些果子搬回家,所以多多在合并果子時(shí)要盡可能地節(jié)省體力。假定每個(gè)果子重量都為1,并且已知果子的種類 數(shù)和每種果子的數(shù)目,你的任務(wù)是設(shè)計(jì)出合并的次序方案,使多多耗費(fèi)的體力最少,并輸出這個(gè)最小的體力耗費(fèi)值。例如有3種果子,數(shù)目依次為1,2,9??梢韵葘?、2堆合并,新堆數(shù)目為3,耗費(fèi)體力為3。接著,將新堆與原先的第三堆合并,又得到新的堆,數(shù)目為12,耗費(fèi)體力為12。所以多多總共耗費(fèi)體力=3+12=15??梢宰C明15為最小的體力耗費(fèi)值。輸入:輸入包括兩行,第一行是一個(gè)整數(shù)n(1<n<=10000),表示果子的種類數(shù)。第二行包含n個(gè)整數(shù),用空格分隔,第i個(gè)整數(shù)ai(1<ai<=10000)是第i種果子的數(shù)目。輸出: 輸出包括一行,這一行只包含一個(gè)整數(shù),也就是最小的體力耗費(fèi)值。輸入數(shù)據(jù)保證這個(gè)值小于231。#include<stdio.h>#incl

溫馨提示

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