C語(yǔ)言知識(shí)學(xué)習(xí)上機(jī)理解練習(xí)知識(shí)題82870198_第1頁(yè)
C語(yǔ)言知識(shí)學(xué)習(xí)上機(jī)理解練習(xí)知識(shí)題82870198_第2頁(yè)
C語(yǔ)言知識(shí)學(xué)習(xí)上機(jī)理解練習(xí)知識(shí)題82870198_第3頁(yè)
C語(yǔ)言知識(shí)學(xué)習(xí)上機(jī)理解練習(xí)知識(shí)題82870198_第4頁(yè)
C語(yǔ)言知識(shí)學(xué)習(xí)上機(jī)理解練習(xí)知識(shí)題82870198_第5頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、C語(yǔ)言上機(jī)考試練習(xí)題(1)說(shuō)明:我們已經(jīng)學(xué)習(xí)完成了基本數(shù)據(jù)類(lèi)型、基本控制語(yǔ)句,以及數(shù)組、函數(shù)這些知識(shí)了,請(qǐng)同學(xué)請(qǐng)盡們看看附件中的這些題目是否能夠快速編寫(xiě)岀來(lái)?可能有個(gè)別題目與過(guò)去的練習(xí)有些重復(fù), 量不要去參考過(guò)去的答案。如果現(xiàn)在編寫(xiě)起來(lái)困難還很多,那你就要加倍努力了。1、編寫(xiě)一個(gè)程序,判定一個(gè)字符串是否是另一個(gè)字符串的子串,若是,返回子串在主串中的位置。要求:(1)在主函數(shù)中輸入兩個(gè)字符串,調(diào)用子函數(shù)cmpsubstrO判斷,并在主函數(shù)輸出結(jié)果。(2)子函數(shù)的返回值為-1表示未找到,否則返回子串的位置(起始下標(biāo))。#i ncludevstdio.h> #in clude<stri

2、ng.h> void mai n()int cmp substr(char *s1,char *s2);char str120,str250;char *s1=str1,*s2=str2;gets(str1);gets(str2);prin tf("%d",cm psubstr(s1,s2);int cmp substr(char *s1,char *s2)int i,d,a=O,situati on=0;d=strle n( s1);for(i=0;*(s2+i)!='0'i+)if(*(s1+a)=*(s2+i)a+;if(a=d)situatio

3、 n=1;break;elsea=0;if(situatio n=0)retum(-1);else retum(i-d+2);2、輸入一個(gè)字符串,內(nèi)有數(shù)字和非數(shù)字字符,如:a123x456 17960?302tab5876 ,將其中連續(xù)的數(shù)字作為一個(gè)整數(shù), 依次存放到數(shù)組a中。例如,123放在a0中,456放在a1中等等,統(tǒng)計(jì)共有多少個(gè)整數(shù),并輸出 這些整數(shù)。要求:(1)在主函數(shù)中輸入字符串,并輸出結(jié)果。調(diào)用子程序處理字符串。(2)子函數(shù)的返回值為整數(shù)的個(gè)數(shù)。#i ncludevstdio.h> #in clude<stri ng.h> void mai n()int sea

4、rch(char *str,i nt *sum);char str100;int d,sum20,i;gets(str);d=search(str,sum);for(i=0;i<d;i+) prin tf("%dn",*(sum+i);search(char *str,i nt *sum)int i,t=0,a=0;for(i=0;*(str+i)!='0'i+)if(*(str+i)>='0'&&*(st r+i)v='9')if(a=0)*(sum+t)=(i nt)(*(str+i)-'

5、;0');a+;else*(sum+t)=*(sum+t)*10+( in t)(*(str+i)-'0');else if(*(str+i-1)>='0'&&*(st r+i-1)v=9)t+;a=0;if(*(str+i-1)>='0'&&*(st r+i-1)v=9)return(t+1);else return(t);3、編寫(xiě)一個(gè)主函數(shù)和子函數(shù)tran(x, r),要求是:函數(shù)tran(x, r)將十進(jìn)制整數(shù)x轉(zhuǎn)換成r進(jìn)制數(shù)y( r在2 16之間),x和r的值由主調(diào)函數(shù)(即主函 數(shù))傳入

6、,y的值需要返回主調(diào)函數(shù)進(jìn)行輸出。要求:y的值利用字符數(shù)組進(jìn)行 存儲(chǔ),數(shù)組的每一個(gè)元素存放y的一位數(shù)字字符。#i ncludevstdio.h> #i ncludevstri ng.h> #i ncludevmalloc.h> #in clude<math.h> void mai n()char* tran (i nt x,i nt r);int x,r;char *y;printf("P lease input x & r =n");sca nf("%d,%d", &x,&r);y=tra n(x,

7、r);puts(y);char* tran (i nt x,i nt r)int len 1,le n2,i,t;char *y1,*y2;len 1=2+(i nt)log(double)x)/log(double)r);y1=(char*)malloc(le n1*sizeof(char);for(i=O;x!=O;i+)t=x%r;if(t<10) *(y1+i)=(char)(t+48);else *(y1+i)=(char)(t+87);x=(i nt)x/r;*(y1+i)='0'len 2=strle n(y1);y2=(char*)malloc(le n2

8、*sizeof(char);for(i=0;i<le n2;i+)*(y2+i)=*(y1+le n2-i-1);*(y2+i)='0'return(y2);4、編寫(xiě)一個(gè)主函數(shù)和函數(shù)tran(x),要求是:(1)函數(shù)tran(x)產(chǎn)生支付指定金額x (如234.78元)的各種面額人民幣的數(shù)量(注意:盡量支付大面額的 人民幣),要求按100元、5 0元、10元、1元、5角、1角、5分、1分八種面額進(jìn)行統(tǒng)計(jì),產(chǎn)生的結(jié)果存放在數(shù)組中返回主函數(shù)。(2)在主函數(shù)中輸入一金額,并以該金額調(diào)用tran函數(shù),并輸出該函數(shù)返回的統(tǒng)計(jì)結(jié)果。5、編寫(xiě)程序?qū)崿F(xiàn)將鍵盤(pán)輸入的一行字符按單詞倒排輸出。

9、如鍵盤(pán)輸入“I love you ”,屏幕顯示“ you love I ”。要求:(1)編寫(xiě)一個(gè)函數(shù)intinvertion(char ch1, char ch2)實(shí)現(xiàn)按單詞倒排字 符串,第一個(gè)形參ch1接受實(shí)參傳過(guò)來(lái)的原字符串,倒排后的新字符串通過(guò)第 二個(gè)形參返回主函數(shù),函數(shù)中還需要統(tǒng)計(jì)該字符串中共有多少個(gè)單詞, 函數(shù)最后 返回字符串中包含的單詞個(gè)數(shù)。主函數(shù)中輸入字符串,調(diào)用子函數(shù)invertion,輸出倒排后的字符串及 字符串中包含的單詞個(gè)數(shù)。#in cludevstdio.h>#in clude<stri ng.h>#in clude<math.h>#in

10、clude<malloc.h>void mai n()int inv erti on( char ch1, char ch2);in t le n;char *ch1,*ch2;ch1=(char*)malloc(100);ch2=(char*)malloc(100);gets(chl);len=inv erti on( ch1,ch2);puts(ch2);prin tf("%dn",le n);int inv erti on( char ch1, char ch2)int i,j,t=0,le n1,le n, sum=0;char *str;str=(ch

11、ar*)malloc(10);for(i=0,le n=0;*(ch1+i)!='0'i+,le n+);len 1=le n;for(i=0;*(ch1+i)!='0'i+)/將ch1的單詞轉(zhuǎn)if(*(ch1+i)!='')*(str+t)=*(ch1+i);移到str上/t+;elsesum+;/單詞個(gè)數(shù)加一 /*(ch2+le n1)=''len 1=le n1-t;for(j=0;jvt;j+)*(ch2+j+le n1)=*(str+j);/將str轉(zhuǎn)移到ch2 上/t=0;len 1-;sum+;/最后一個(gè)單詞轉(zhuǎn)移到c

12、h2上/*(ch2+le n1)=''len 1=le n1-t;for(j=0;j<t;j+)*(ch2+j+le n1)=*(str+j);*(ch2+le n)='0'return(sum);6、編寫(xiě)一個(gè)主函數(shù)以及一個(gè)函數(shù)maxlo ng(str)。要求是:(1)函數(shù)maxlong(str)找出字符串str中包含的第一個(gè)最長(zhǎng)單詞(用字符數(shù)組進(jìn)行存儲(chǔ)),并返回主調(diào)函數(shù)。(2)在主函數(shù)中輸入一個(gè)字符串,假定輸入字符串中只含字母和空格,空格用來(lái)分割不同單詞;以該字符串作為參數(shù)調(diào)用maxlo ng函數(shù),并輸出返回的結(jié)果。#i ncludevstdio.h&g

13、t; #i ncludevstri ng.h> #in clude<math.h> #i ncludevmalloc.h> void mai n()char *maxl on g(char *str);char str1OO,*strO;gets(str);str0=maxl on g(str);puts(str0);char *maxl on g(char *str)char *word,*str0;int t=0,i,max=0;for(i=0;*(str+i)!='0'i+)if(*(str+i)!=' ')t+;/t 為單詞字母?jìng)€(gè)

14、數(shù) /elseif(t>max)/比較t與之前最大的單詞個(gè)數(shù)的大小/word=(st 葉i-t);max=t;t=0;/t 初始化/if(t>max)/最后一個(gè)單詞在循環(huán)中沒(méi)有比較/word=(st 葉i-t);max=t;strO=(char*)malloc(max+1);for(i=0;i<max;i+)*(strO+i)=*(word+i);/將最大的單詞賦給 strO/*(strO+i)='O'retum(strO);7、編寫(xiě)一個(gè)函數(shù)ad(a, m, n)找出一個(gè)m行n列的二維數(shù)組a中的“鞍點(diǎn)”;在主函數(shù)中輸入二維數(shù)組的值(假設(shè)數(shù)組中任意兩個(gè)數(shù)都不相等

15、),并將它作為 實(shí)參調(diào)用ad函數(shù)。所謂“鞍點(diǎn)”是指該位置上的元素在該行上最大,在該列上 最小;一個(gè)二維數(shù)組中可能沒(méi)有鞍點(diǎn)。#i ncludevstdio.h> #i ncludevmalloc.h> #in clude<stri ng.h> #in clude<time.h> void mai n()int * inpu t(i nt m,i nt n);void prin t(i nt* p,i nt m,i nt n);int ad(i nt *p ,i nt m,i nt n);int *p,m,n;while(!ad( p,m, n)printf(&

16、quot;請(qǐng)輸入行數(shù):m,列數(shù):n.n");m=n=7;p=input(m,n);print(p ,m, n);int ad(i nt *p ,i nt m,i nt n)int i,j,k,s,max,l,time=O;for(i=0;ivm;i+)for(j=0;j<n;j+)/max為一行最大值 /if(j=O)max=*(*( p+i)+j);匸j;elseif(max<*(*( p+i)+j)max=*(* (p+i)+j);l=j;s=0;for(k=0;k<m;k+)if(max>*(*( p+k)+l)s=1;break;if(s=0)prin

17、 tf("NO.%d row NO.%d lin e:%dn",i+1,l+1,*(* (p+i)+l);time+;/建造一個(gè)m行,n列二維數(shù)組/return(time);int *inpu t(i nt m,i nt n)int *p;int i,j;p=(i nt*)malloc(m*sizeof(i nt*);for(i=0;i<m;i+)*(p+i)=(i nt*)malloc( n*sizeof(i nt);sandaime(NULL)M、fowHO 二八 m 二+)fo2HOpj+)*(*(p+i)+j)Hand()進(jìn) of Z砂達(dá)腎»血=ef

18、uln(p)-infixfo(iH0=Am=+)folxjHoj八 pj+)pl-inmvr)-8、編寫(xiě)主函數(shù)和兩個(gè)遞歸函數(shù)sum(a, n)、max(a, n)。要求是:(1 )函數(shù)sum(a, n)求數(shù)組a中前n個(gè)元素之和,并返回求得的和值。(2)函數(shù)max(a.n)求數(shù)組a中前n個(gè)元素中的最大值,并返回求得的最大值。(3)主函數(shù):輸入任意10個(gè)正整數(shù)給數(shù)組,調(diào)用sum函數(shù)求數(shù)組中的10個(gè)元素之和,并輸出 求得的和值;調(diào)用max函數(shù)求數(shù)組中10個(gè)元素的最大值,并輸出求得的最大 值。#i ncludevstdio.h> #i ncludevmalloc.h> #in clude&

19、lt;time.h> void mai n()int sum(i nt *a,i nt n);int *inp ut(i nt n);int max(i nt *a,i nt n);int *s,n=10;s=input(n);prin tf("%5d,%5dn",sum(s, n),max(s, n);int *inp ut(i nt n)int *a,i;a=(i nt *)malloc(sizeof(i nt)* n);sran d(time(NULL);for(i=0;i< n;i+)*(a+i)=ra nd() %100;prin tf("%

20、4d",*(a+i);prin tf("n");return(a);int max(i nt *a,i nt n)int m;if(n二=1)return(*a);elsem=max(a, n-1);if(m>*(a+n-1)return(m);else return(*(a+n-1);int sum(i nt *a,i nt n)if(n二=1)return(*a);else return(*(a+n-1)+sum(a, n-1);9、編寫(xiě)一個(gè)遞歸程序,利用折半查找法在一個(gè)升序數(shù)組中查找一個(gè)數(shù),如果查找成功,則輸出它是第幾個(gè)數(shù),否則輸出“No Find.

21、”#in cludevstdio.h>#in clude<malloc.h>#in clude<time.h>void mai n()int *inpu t(i nt n);void prin t(i nt *s,i nt n);void sort(i nt*s,i nt n);int search(i nt *s,i nt n ,i nt key);int *s, n=10,key,d;s=input(n);prin t(s, n);sort(s, n);prin t(s, n);scan f("%d",&key);d=search(

22、s, n,key);if(d!=O) prin tf("The key is at NO.%d.n",d);else prin tf("NO FINDn");int search(i nt *s,i nt n ,i nt key)int m,d;if(n=1)if(*s=key)return(1);else return(0);elsem=n/2;if(d=search(s,m,key)return(d);else if(d=search(s+m, n-m,key)return(d+m);else return(0);int *inpu t(i nt n

23、)int *a,i;a=(i nt *)malloc(sizeof(i nt)* n);sran d(time(NULL);for(i=0;i vn ;i+)*(a+i)=ra nd() %100;return(a);void prin t(i nt *s,i nt n)int i;for(i=0;i< n;i+) prin tf("%4d",*(s+i);prin tf("n");void sort(i nt*s,i nt n)int i,j,te mp;for(i=0;i< n-1;i+)for(j=0;j< n-1-i;j+)if

24、(*(s+j)>*(s+j+1)temp二 *(s+j);*(s+j)=*(s+j+1);*(s+j+1)=te mp;10、用遞歸法實(shí)現(xiàn):對(duì)于一個(gè)正整數(shù)n(n是一個(gè)不超過(guò)8位的任意正整數(shù),由鍵盤(pán)輸入),(1)順序輸出它的各位數(shù);(2)判斷它是一個(gè)幾位數(shù)。如輸 入:56439 ;則輸出:要求:不允許使用數(shù)組;在遞歸函數(shù)中順序輸出該數(shù)的各位數(shù), 該數(shù)的位數(shù)則必 須在主函數(shù)中輸出。#i ncludevstdio.h> #i ncludevmalloc.h> #i ncludevstri ng.h> void mai n()int f(i nt n);int n,d;sea

25、nf("%d",&n);d=f( n);prin tf("n 個(gè)數(shù)為 %dn",d);int f(int n)int d;if(n v10)d=1;else d=f(i nt)n/10)+1;prin tf("%d ",n %10);return(d);11、輸入一個(gè)日期(年、月、日),并輸入該年的元旦(即 1月1日)是星期幾(星期一、星期二、星期六、星期日分別用數(shù)字1、2、6、7表示),計(jì)算該日期在本年中是第幾天、星期幾(注意潤(rùn)年問(wèn)題)?要求寫(xiě)兩個(gè)函 數(shù)days和week,分別實(shí)現(xiàn)計(jì)算該日期在本年中是第幾天和星期幾。由主函數(shù)將 日期傳遞給days函數(shù),并將計(jì)算得到的結(jié)果返回給主函數(shù)輸出;由主函數(shù)將日 期及元旦的星期幾傳遞給 week函數(shù),并將計(jì)算得到的結(jié)果返回給主

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論