北理工C語(yǔ)言編程網(wǎng)上作業(yè)答案_第1頁(yè)
北理工C語(yǔ)言編程網(wǎng)上作業(yè)答案_第2頁(yè)
北理工C語(yǔ)言編程網(wǎng)上作業(yè)答案_第3頁(yè)
北理工C語(yǔ)言編程網(wǎng)上作業(yè)答案_第4頁(yè)
北理工C語(yǔ)言編程網(wǎng)上作業(yè)答案_第5頁(yè)
已閱讀5頁(yè),還剩17頁(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)介

./H1:計(jì)算通用產(chǎn)品代碼<UPC>的校驗(yàn)位〔選作成績(jī):5/折扣:0.8背景許多年來(lái),貨物生產(chǎn)商都會(huì)把超市售賣的每件商品上放置一個(gè)條碼。這種被稱為通用產(chǎn)品代碼〔UniversalProductCode,縮寫(xiě)UPC的條碼可以識(shí)別生產(chǎn)商和產(chǎn)品。超市可以通過(guò)掃描產(chǎn)品上的條碼來(lái)確定支付此項(xiàng)商品的費(fèi)用。每一個(gè)條碼由十二位數(shù)字構(gòu)成,通常這些數(shù)字會(huì)顯示在條碼下面。例如,包裝為26盎司的Morton牌碘化鹽所用條碼下的數(shù)字是:024600010030第一個(gè)數(shù)字表示商品的種類〔0表示大部分的食品雜貨,2表示需要稱量的貨品,3表示藥品或和健康相關(guān)的商品,而5表示優(yōu)惠券。接下來(lái)的一組五位數(shù)字用來(lái)識(shí)別生產(chǎn)商。而第二組五位數(shù)字則用來(lái)區(qū)分產(chǎn)品類型〔其中包括包裝尺寸。最后一位數(shù)字是"校驗(yàn)位",它可以幫助鑒別先前數(shù)字中的錯(cuò)誤。如果條碼掃描出現(xiàn)錯(cuò)誤,那么前十一位數(shù)字和最后一位數(shù)字可能會(huì)不一致,而超市掃描機(jī)也會(huì)拒絕整個(gè)條碼。下面是一種計(jì)算校驗(yàn)位的方法:首先把第一位、第三位、第五位、第七位、第九位和第十一位數(shù)字相加。然后把第二位、第四位、第六位、第八位和第十位數(shù)字相加。接著把第一次加法結(jié)果乘以3后再加上第二次加法的結(jié)果。隨后,再把上述結(jié)果減去1。減法后的結(jié)果除以10取余數(shù)。最后,用9減去上一步驟中得到的余數(shù)?,F(xiàn)在以Morton碘鹽為例,第一組數(shù)字的加法是0+4+0+0+0+3=7,而第二組數(shù)字的加法是2+6+0+1+0=9。把第一組加法值乘以3后再加上第二組加法值得到的結(jié)果是30。再減去1,結(jié)果變?yōu)?9。再把這個(gè)值除以10取余數(shù)為9。9在減去余數(shù)結(jié)果9,最終值為0。輸入每次輸入三行數(shù)據(jù),第一行是UPC的第一位數(shù)字,第二行是UPC的第一組五位數(shù)字,第三行是UPC的第二組五位數(shù)字。輸出UPC的校驗(yàn)位提示本題有隱藏測(cè)試用例。如果想多找不同的實(shí)例驗(yàn)證你的算法,可以拿身邊書(shū)或食品背后的條碼測(cè)試一下。#include<stdio.h>main<>{inta,b,c;intb1,b2,b3,b4,b5;intc1,c2,c3,c4,c5;intd1,d2,d3,d4;scanf<"%d\n%d\n%d",&a,&b,&c>;b1=b/10000,b2=<b/1000>%10,b3=<b/100>%10,b4=<b/10>%10,b5=b%10;c1=c/10000,c2=<c/1000>%10,c3=<c/100>%10,c4=<c/10>%10,c5=c%10;d1=a+b2+b4+c1+c3+c5,d2=b1+b3+b5+c2+c4,d3=<3*d1+d2-1>%10,d4=9-d3;printf<"%d\n",d4>;}H2:數(shù)制轉(zhuǎn)換〔選作成績(jī):5/折扣:0.8我們通常使用的都是十進(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)制或十進(jìn)制時(shí),它們的值就是相等的。因此只要選擇合適的進(jìn)制,12和5就可以是相等的。程序的輸入是兩個(gè)數(shù)字M和N<其十進(jìn)制的值不超過(guò)1000000000>,它們的進(jìn)制在2~36之間。對(duì)于十以下的數(shù)字,用0~9表示,而十以上的數(shù)字,則使用大寫(xiě)的A~Z表示。求出分別在2~36哪種進(jìn)制下M和N相等。若相等則輸出相應(yīng)的進(jìn)制,若不等則輸出錯(cuò)誤信息。當(dāng)然了,對(duì)于多種可能成立的情況,找出符合要求的進(jìn)制最小的一組就行了。信息的格式見(jiàn)測(cè)試用例。21.零錢換整錢成績(jī):5/折扣:0.8小明手中有一堆硬幣,小紅手中有若干10元的整錢。已知1角的硬幣厚度為1.8mm,5角的硬幣厚1.5mm,1元的硬幣為2.0mm。小明和小紅一起玩游戲,小紅拿出若干10元的紙幣,小明要將1角的硬幣放成一摞,將5角的硬幣硬幣放成一摞,將1元的硬幣放成一摞,如果3摞硬幣一樣高,并且金額能夠正好小紅要求的面值,則雙方可以進(jìn)行交換,否則沒(méi)有辦法交換。輸入:

小紅希望交換幾10元的紙幣輸出:

1角的數(shù)量,5角的數(shù)量,1元的數(shù)量#include<stdio.h>main<>{intn,a,b,c,s,j=0;scanf<"%d",&n>;for<a=1;a<10*n;a++>for<b=1;b*15<=a*18;b++>for<c=1;c<a;c++>{s=a+b*5+c*10;if<b*15==c*20&&a*18==b*15&&s==100*n>{printf<"%d,%d,%d\n",a,b,c>;j+=1;}}if<j==0>printf<"Nochange.\n">;return0;}22.買東西成績(jī):5/折扣:0.8某商品有A、B、C三種品牌,各品牌的價(jià)格各不相同,其中A品牌的價(jià)格為每個(gè)5元,B品牌為每個(gè)3元,而C品牌為每3個(gè)1元。如果要用M元錢買N個(gè)該商品,要求每個(gè)商品至少買一個(gè),編程求各種品牌各能買多少個(gè)。輸入:先后輸入M〔錢數(shù)及N〔商品個(gè)數(shù)的實(shí)際數(shù)值輸出:所有可能情況下可以購(gòu)買的3種商品的個(gè)數(shù),按A、B、C品牌的順序輸出,用逗號(hào)分隔。例如:2,30,68;表示A品牌商品2個(gè)、B品牌商品30個(gè)、C品牌商品68個(gè)。要求:因?yàn)橛卸鄠€(gè)結(jié)果,結(jié)果的排序按照A品牌的個(gè)數(shù)從少到多的順序輸出。#include<stdio.h>main<>{inta,b,c,M,N,s;scanf<"%d%d",&M,&N>;for<a=1;a<=N;a++>{for<b=1;b<=N;b++>{c=N-a-b;if<c%3==0>{s=a*5+b*3+c/3;if<s==M>printf<"%d%d%d\n",a,b,c>;}}}}23誰(shuí)能出線成績(jī):10/折扣:0.8背景:電視臺(tái)舉辦"超級(jí)學(xué)生"才藝大賽,由于報(bào)名人數(shù)狂多,所以要先進(jìn)行分組預(yù)賽。按規(guī)定,每10名學(xué)生為一個(gè)預(yù)賽小組,評(píng)委打出分?jǐn)?shù)〔0~100分,各小組第一名可以進(jìn)入下一輪;如果有多名學(xué)生得分相同都是第一名,則可同時(shí)進(jìn)入下一輪。輸入:

按順序給出一個(gè)小組10個(gè)人的最后得分〔int。輸出:

能夠出線的學(xué)生序號(hào)〔0~9。#include<stdio.h>main<>{inta[10]={0},i,max=0;for<i=0;i<10;i++>{scanf<"%d",&a[i]>;if<max<a[i]>max=a[i];}for<i=0;i<10;i++>{if<a[i]==max>printf<"%d\n",i>;}}24.尋找特殊偶數(shù)成績(jī):5/折扣:0.8背景有一種特殊偶數(shù),它每一位上的數(shù)字都兩兩不相同。我們現(xiàn)在需要找出四位數(shù)中某一區(qū)間的這類偶數(shù)。輸入所要尋找的四位偶數(shù)的圍。每組輸入有兩個(gè)數(shù)字:第一個(gè)數(shù)字是最小圍;第二個(gè)數(shù)字是最大圍。如果輸入遇到0,輸入結(jié)束。輸出列出此圍的所有特殊偶數(shù),并且列出此圍特殊偶數(shù)的個(gè)數(shù)。#include<stdio.h>main<>{inta,b,counter,i,number1,number2,number3,number4;do{scanf<"%d%d",&a,&b>;if<<a==0>&&<b==0>>break;if<a>=b>printf<"Error\n">;else{if<<a<1000>||<b<1000>>printf<"Error\n">;else{for<i=a,counter=0;i<=b;i++>{number1=i/1000;number2=i/100%10;number3=i/10%10;number4=i%10;if<<number1!=number2>&&<number1!=number3>&&<number1!=number4>&&<number2!=number3>&&<number2!=number4>&&<number3!=number4>>{if<<i%2>==0>{printf<"%d",i>;counter++;}}}printf<"\n">;printf<"counter=%d\n",counter>;}}}while<<a!=0>&&<b!=0>>;return;}26二年級(jí)小學(xué)生的題目成績(jī):10/折扣:0.8兩個(gè)二年級(jí)小朋友在一起玩游戲,小明給出一堆不超過(guò)兩位的正整數(shù)和運(yùn)算要求〔+、-、*、/、%,小麗要找出這些整數(shù)中的最大值和最小值,然后按照小明的要求算出最大數(shù)與最小數(shù)進(jìn)行算術(shù)運(yùn)算的結(jié)果。輸入:

用逗號(hào)分隔的不超過(guò)兩位的正整數(shù)序列,及其運(yùn)算符和等號(hào)輸出:

最大數(shù)op最小數(shù)=結(jié)果#include<stdio.h>intmain<>{intop=0;intmax=0;intmin=99;intmark=0;intn1=-1,n2=-1,n=0;for<;1;>{charc;scanf<"%c",&c>;if<c==','>{if<mark==1>n=n1;elseif<mark==2>n=n1*10+n2;if<n>max>{max=n;}if<n<min>{min=n;}mark=0;n1=-1,n2=-1;continue;}if<c=='+'>op=1;elseif<c=='-'>op=2;elseif<c=='*'>op=3;elseif<c=='/'>op=4;elseif<c=='%'>op=5;elseif<c=='='>{break;}elseif<c<='9'&&c>='0'>{if<mark==0>{n1=c-'0';mark=1;}elseif<mark==1>{n2=c-'0';mark=2;}}}switch<op>{case1:{printf<"%d+%d=%d\n",max,min,max+min>;break;}case2:{printf<"%d-%d=%d\n",max,min,max-min>;break;}case3:{printf<"%d*%d=%d\n",max,min,max*min>;break;}case4:{if<min==0>printf<"Error!\n">;else{printf<"%d/%d=%d\n",max,min,max/min>;}break;}case5:{if<min==0>printf<"Error!\n">;else{printf<"%d%%%d=%d\n",max,min,max%min>;}break;}}}27等值數(shù)列段成績(jī):10/折扣:0.8如果一個(gè)數(shù)列中的某一段〔至少有兩個(gè)元素的各元素值均相同,則稱之為等值數(shù)列段。等值數(shù)列段中元素的個(gè)數(shù)叫做等值數(shù)列段的長(zhǎng)度。輸入:由N個(gè)元素組成的整數(shù)數(shù)列A〔其中N<=50>輸出:A中長(zhǎng)度最大的所有等值數(shù)列段的始末位置,如果沒(méi)有等值數(shù)列段,則輸出Noequalnumberlist.說(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>intmain<>{for<;1;>{intnum[50]={0};intn=0;scanf<"%d",&n>;for<inti=0;i<n;i++>{scanf<"%d",&num[i]>;}intstarttemp=num[0];intstart=num[0];inta=-1;intb=0;intcount=1;intcounttemp=1;for<inti=1;i<n;i++>{if<num[i]==num[i-1]>{a=i;counttemp++;if<counttemp>count>{b=a;count=counttemp;}continue;}else{counttemp=1;}}if<a==-1>{printf<"Noequalnumberlist.\n">;break;}else{printf<"Thelongestequalnumberlistisfrom%dto%d.\n",b+1-count,b>;break;}}}28大家一起做游戲成績(jī):15/折扣:0.8幼兒園的小朋友們剛學(xué)習(xí)了如何數(shù)數(shù),阿姨在下課時(shí)組織大家一起玩游戲。規(guī)則如下:所有的小朋友繞成一圈,順序排號(hào),從第一個(gè)小朋友開(kāi)始報(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>voidmain<>{intN,n,i,s=0,a;scanf<"%d%d\n",&N,&n>;for<i=2;i<=N;i++>s=<s+n>%i;a=s+1;printf<"TheleftchildisNO%d.\n",a>;}29組成最大數(shù)成績(jī):10/折扣:0.8任意輸入一個(gè)自然數(shù),輸出該自然數(shù)的各位數(shù)字組成的最大數(shù)。例如,輸入1593,則輸出為9531。輸入:自然數(shù)n輸出:各位數(shù)字組成的最大數(shù)#include<stdio.h>#include<string.h>intmain<>{chara[100000],c;inti,j,k;scanf<"%s",&a>;i=strlen<a>;for<j=0;j<i-1;j++>for<k=0;k<i-j-1;k++>{if<a[k]<a[k+1]>{c=a[k];a[k]=a[k+1];a[k+1]=c;}}printf<"%s",a>;printf<"\n">;}30刪除重復(fù)字符成績(jī):5/折扣:0.8背景:輸入一個(gè)長(zhǎng)度不超過(guò)100的字符串,刪除串中的重復(fù)字符。輸入:輸入要檢查的字符串,長(zhǎng)度不超過(guò)100個(gè)字符。例如:abacaeedabcdcd。輸出:刪除重復(fù)字符后的字符串。例如:abced。#include<stdio.h>#include<string.h>intalread_saved<charlastchar,charnewstr[],intj>{inti=0;while<i<j>{if<lastchar==newstr[i]>return1;i++;}return0;}voidmain<>{charstr[100];charnewstr[100];intn,i,j;i=0;j=0;gets<str>;while<str[i]!='\0'>{if<!alread_saved<str[i],newstr,j>>{newstr[j]=str[i];j++;}i++;}newstr[j]='\0';puts<newstr>;}31合并字符串成績(jī):10/折扣:0.8輸入兩個(gè)已經(jīng)按從小到大順序排列好的字符串,編寫(xiě)一個(gè)合并兩個(gè)字符串的函數(shù),使合并后的字符串,仍然是從小到大排列。輸入:

兩個(gè)已經(jīng)排好順序〔升序的兩個(gè)字符串輸出:

一個(gè)合并在一起的有序〔升序的字符串要求:設(shè)計(jì)一個(gè)效率盡量高的算法,對(duì)每個(gè)字符串只掃描一遍就可以了。

如果采用先進(jìn)行串連接,然后再進(jìn)行排序的算法,則效率太低了。#include<stdio.h>#include<string.h>voidMergeList<charstr1[],charstr2[],charstr3[]>;voidmain<>{charstr1[100];charstr2[100];charstr3[100];gets<str1>;gets<str2>;MergeList<str1,str2,str3>;printf<"%s\n",str3>;}voidMergeList<charstr1[],charstr2[],charstr3[]>{inti,j,k;i=0;j=0;k=0;intlengthOfStr1,lengthOfStr2;lengthOfStr1=strlen<str1>;lengthOfStr2=strlen<str2>;while<i<lengthOfStr1&&j<lengthOfStr2>{if<str1[i]<=str2[j]>str3[k++]=str1[i++];elsestr3[k++]=str2[j++];}while<i<lengthOfStr1>str3[k++]=str1[i++];while<j<lengthOfStr2>str3[k++]=str2[j++];str3[k]='\0';}32串的減法成績(jī):10/折扣:0.8輸入字符串s和t〔串長(zhǎng)不超過(guò)80個(gè)字符,將在字符串s中出現(xiàn),但未在字符串t中出現(xiàn)的字符組成一個(gè)新的字符串放在u中,u中字符按原字符串中字符順序排列,不去掉重復(fù)字符,輸出u。例如:當(dāng)s="112345",t="2467"時(shí),u="1135"。輸入:第一行為串s

第二行為串t輸出:

串u#include<stdio.h>#include<string.h>intmain<>{chara[80];charb[80];gets<a>;gets<b>;intl=strlen<a>;for<inti=0;b[i]!='\0';i++>{for<intj=0;j<l;j++>if<a[j]==b[i]>a[j]='\0';}for<intk=0;k<l;k++>if<a[k]!='\0'>printf<"%c",a[k]>;printf<"\n">;}33單詞排序成績(jī):10/折扣:0.8輸入5個(gè)單詞,將它們按從大到小的順序排列后輸出。輸入:5個(gè)單詞輸出:排序后的順序#include"stdio.h"#include"string.h"voidmain<>{charch[5][26],c[26];inti,j,k;for<i=0;i<5;i++>gets<ch[i]>;for<i=0;i<4;i++>{k=i;for<j=i+1;j<5;j++>if<strcmp<ch[k],ch[j]><0>k=j;if<k!=i>{strcpy<c,ch[i]>;strcpy<ch[i],ch[k]>;strcpy<ch[k],c>;}}for<i=0;i<5;i++>puts<ch[i]>;}34北理工的惡龍成績(jī):10/折扣:0.8背景:最近,北理工出現(xiàn)了一只惡龍,它長(zhǎng)著很多頭,而且還會(huì)吐火,它將會(huì)把北理工燒成廢墟,于是,校長(zhǎng)下令召集全校所有勇士殺死這只惡龍。要?dú)⑺肋@只龍,必須把它所有的頭都砍掉,每個(gè)勇士只能砍一個(gè)龍頭,龍的每個(gè)頭大小都不一樣,一個(gè)勇士只有在身高不小于龍頭的直徑的情況下才能砍下它。而且勇士們要求,砍下一個(gè)龍頭必須得到和自己身高厘米數(shù)一樣的學(xué)分。校長(zhǎng)想花最少的學(xué)分?jǐn)?shù)殺死惡龍,于是找到你尋求幫助。輸入:第一行龍頭數(shù)n,勇士人數(shù)m〔1<=n,m<=100接下來(lái)n行,每行包含一個(gè)整數(shù),表示龍頭的直徑接下來(lái)m行,每行包含一個(gè)整數(shù),表示勇士的身高l輸出:如果勇士們能完成任務(wù),輸出校長(zhǎng)需要花的最小費(fèi)用;否則輸出"bitisdoomed!"#include<stdio.h>intmain<>{intdragon,hero;scanf<"%d%d",&dragon,&hero>;intdragonhead[100]={0};intherohight[100]={0};//inputfor<inti=0;i<dragon;i++>scanf<"%d",&dragonhead[i]>;for<inti=0;i<hero;i++>scanf<"%d",&herohight[i]>;//makethedateinorderinttemp;for<inti=0;i<dragon;i++>{for<intj=0;j<dragon-1;j++>{if<dragonhead[j]>dragonhead[j+1]>{temp=dragonhead[j];dragonhead[j]=dragonhead[j+1];dragonhead[j+1]=temp;}}}for<inti=0;i<hero;i++>{for<intj=0;j<hero-1;j++>{if<herohight[j]>herohight[j+1]>{temp=herohight[j];herohight[j]=herohight[j+1];herohight[j+1]=temp;}}}//arrangeherotokillthedragonintstart=0;for<inti=0;i<dragon;i++>{for<intj=start;j<hero;j++>{if<herohight[j]>=dragonhead[i]>{dragonhead[i]=0;start++;break;}else{herohight[j]=0;start++;}}if<start>hero>break;}for<inti=start;i<hero;i++>herohight[i]=0;//caculatethegradeintsd=0;intsh=0;for<inti=0;i<dragon;i++>sd=sd+dragonhead[i];for<inti=0;i<hero;i++>sh=sh+herohight[i];if<sd==0>printf<"%d\n",sh>;elseprintf<"bitisdoomed!\n">;}35殺雞用牛刀——要用遞歸??!成績(jī):5/折扣:0.8背景:哈哈!我們終于學(xué)了遞歸了,現(xiàn)在大家一定感到非常有意思吧,那個(gè)典型的"漢諾塔"問(wèn)題,一個(gè)非常短的程序居然可以完成如此復(fù)雜的工作,真是神奇??!來(lái)吧,讓我們也動(dòng)手編寫(xiě)一個(gè)遞歸程序,當(dāng)然,我們要編寫(xiě)的不可能太復(fù)雜。功能:

求整數(shù)n到m區(qū)間的累加和,其中n<=m。輸入:

區(qū)間的起始點(diǎn)n區(qū)間的終止點(diǎn)m輸出:

累加和要求:

使用遞歸算法完成。如此簡(jiǎn)單的題目當(dāng)然要有隱含的測(cè)試用例啦,就3個(gè),看看誰(shuí)能猜出來(lái)#include<stdio.h>intsum<intn,intm>{returnn==m?n:sum<n,m-1>+m;}intmain<>{intn,m;scanf<"%d%d",&n,&m>;printf<"Thesumfrom%dto%dis%d.\n",n,m,sum<n,m>>;return0;}36科學(xué)記數(shù)法成績(jī):10/折扣:0.8對(duì)于非常大或者非常小的數(shù)據(jù),我們通常用科學(xué)記數(shù)法來(lái)表示。例如在科技文獻(xiàn)和電腦中經(jīng)常遇到的2.3×106〔計(jì)算機(jī)中的科學(xué)記數(shù)法表示為:2.3E6,或者9.18×10-5〔科學(xué)記樹(shù)法表示:9.18E-5這種類型的數(shù)據(jù)。輸入:

用科學(xué)記數(shù)法表示的數(shù)據(jù)。即為符合C語(yǔ)言表示的科學(xué)記數(shù)法表示。輸出:

該數(shù)據(jù)的雙精度表示說(shuō)明:

輸入數(shù)據(jù)的精度不高于小數(shù)點(diǎn)后50位。

輸入數(shù)據(jù)時(shí),在實(shí)數(shù)和冪之間有空格進(jìn)行分隔,空格個(gè)數(shù)不定。

結(jié)果保留到小數(shù)點(diǎn)后8位,如不足8位用0補(bǔ)足,超過(guò)8位則截?cái)?不進(jìn)行四舍五入的處理。#include"stdio.h"intmain<>{intp=-1,n,i=0,j,sign=0,flag=0;charc,s[100];while<scanf<"%c",&c>&&c!='e'&&c!='E'>if<c=='.'>p=i-1;elseif<c<='9'&&c>='0'>s[i]=c,i++;elseif<c=='-'>sign=1;elseif<p<0>p=i-1;for<j=i;j<=60;j++>s[j]='0';scanf<"%d",&n>;p+=n;if<sign>printf<"-">;if<p<0>{p=-p-1;printf<"0.">;for<i=1;i<=p&&i<=8;i++>printf<"0">;for<i=1;i<=8-p;i++>printf<"%c",s[i-1]>;}else{i=0;while<i<=p>{if<s[i]=='0'&&!flag&&i<p>i++;else{flag=1;printf<"%c",s[i++]>;}}printf<".">;for<j=1;j<=8;j++>printf<"%c",s[i++]>;}printf<"\n">;return0;}37大數(shù)分解成績(jī):5/折扣:0.82007級(jí)在"計(jì)算機(jī)科學(xué)導(dǎo)論"的期末考試中有一道試題。下面請(qǐng)你看看那題目應(yīng)該如何編寫(xiě)。從鍵盤(pán)輸入的一個(gè)大于1的整數(shù),通過(guò)算法將該整數(shù)分解為若干因子的乘積。輸入:

一個(gè)正整數(shù)。輸出:

分解后的各個(gè)因子。#include<stdio.h>voidmain<>{intn,i;scanf<"%d",&n>;for<i=2;n>1;>{if<n%i==0>{printf<"%d\n",i>;n/=i;}elsei++;}}38回文字符串——遞歸成績(jī):5/折扣:0.8有一種特殊形式的字符串,其正反序相同,被稱為"回文字符串"。例如LeveL就是一個(gè)回文字符串。輸入:

字符串輸出:

Yes或者No說(shuō)明:

如輸出Yes,說(shuō)明輸入的字符串是一個(gè)回文字符串

輸出No,說(shuō)明輸入的字符串不是一個(gè)回文字符串

請(qǐng)使用遞歸算法實(shí)現(xiàn)。#include<stdio.h>#include<string.h>intfun<charstr[],inta,intb>{if<str[a]!=str[b]>return0;elseif<a==b||a+1==b&&str[a+1]==str[b]>return1;elseif<str[a]==str[b]>return1&&fun<str,a+1,b-1>;}voidmain<>{charstr[100];scanf<"%s",str>;intn;n=strlen<str>;switch<fun<str,0,n-1>>{case1:printf<"Yes\n">;break;case

溫馨提示

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