上機(jī)考試答案_第1頁
上機(jī)考試答案_第2頁
上機(jī)考試答案_第3頁
上機(jī)考試答案_第4頁
上機(jī)考試答案_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、1 請編寫函數(shù)long fun(long int x),功能是:將長整型數(shù)x中每一位上為奇數(shù)的數(shù)依次取出,并逆序構(gòu)成一個(gè)新數(shù)返回。例如:程序運(yùn)行時(shí)輸入123456789,輸出:b=97531。#includelong fun(long int x) long b = 0; while(x0) if(x%10)%2=1) b=b*10+x%10; x/=10; return b; int main()long a,b; printf(Please input a long int num:); scanf(%ld,&a); b=fun(a); printf(b=%ldn,b); 2 編寫函數(shù)vo

2、id fun(char *s,char *t,char *p)將未在字符串s中出現(xiàn)、而在字符串t中出現(xiàn)的字符, 形成一個(gè)新的字符串放在p中,p中字符按原字符串中字符順序排列,但去掉重復(fù)字符。例如: 當(dāng)s為12345, t為8624677時(shí), p中的字符為: 867;當(dāng)s為”good luck”,t為”thank you very much”時(shí),輸出:”thanyverm”#include#includeint test(char *s,int n,char ch) int i; for(i=0;in;i+)if(si=ch) return 1; return 0;void fun(char *

3、s,char *t,char *p) int i,j; for(i=j=0;ti!=0;i+)if(test(s,strlen(s),ti)=0&test(t,i,ti)=0)pj=ti; j+; pj=0;int main()char s150,s250,s350; gets(s1);gets(s2); fun(s1,s2,s3); puts(s3);3 編寫函數(shù)int fun(int m),計(jì)算并返回滿足表達(dá)式:1+(1+2)+(1+2+3)+(1+2+3+4)+(1+2+3+n)=m最大的n。例如,當(dāng)m=10000時(shí),程序輸出:n=38。#includeint fun(int m)int

4、 a,i,s; for(a=1,s=0;s=m;a+) for(i=1;i=a;i+) s+=i; return a-2;int main()int x; scanf(%d,&x); printf(n=%dn,fun(x);4 編寫函數(shù)void fun(int *x,int n),它的功能是:刪除有n個(gè)數(shù)據(jù)的數(shù)組x中所有包含數(shù)字6的數(shù)據(jù),后續(xù)的剩余元素賦值為-1。n為數(shù)組長度,規(guī)定x中數(shù)據(jù)都為正數(shù)。如程序運(yùn)行時(shí)若輸入:122 1461 6234 16 11 663 911 2671 381 6 刪除后輸出: 122 11 911 381 -1 -1 -1 -1 -1 -1 #define N

5、10#includevoid fun(int *x,int n) int i,j=0,k,t; for (i=0;in;i+) k=xi; while (k!=0) t=k%10; if(t=6) break; else k=k/10; if(k=0) xj+=xi; for(;jn;j+) xj=-1; return;int main() int aN,i; for(i=0;iN;i+) scanf(%d,a+i); fun(a,N); for(i=0;iN;i+) printf(%d ,ai); printf(n);5 編寫函數(shù)long fun(int high,int n),功能是:計(jì)算

6、并返回high以內(nèi)(不包含high)最大的n個(gè)素?cái)?shù)之和。若不足n個(gè),則到最小素?cái)?shù)2為止。例如:若high=100,n=10,則函數(shù)的返回值為:732;若high=11,n=10,則函數(shù)返回:17。#includelong sushu(long m) int i; for(i=2;i=m) return 1; else return 0;long fun(int high,int n) int i,j=0; long s=0; if(high1;i-) if(sushu(i) s+=i; j+; if(j=n) return s; return s;int main()int k,n; scan

7、f(%d%d,&k,&n); printf(sum=%ldn,fun(k,n);6 請編寫函數(shù)int fun(int *a,int n),它的功能是:把形參a所指數(shù)組中的偶數(shù)按原順序依次存放到a0、a1、a2、中,把奇數(shù)從數(shù)組中刪除,偶數(shù)個(gè)數(shù)通過函數(shù)值返回,以-1作為有效數(shù)據(jù)的結(jié)束標(biāo)志。例:若輸入:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15,輸出:2 4 6 8 10 12 14 n=7#includeint fun(int *a,int n) int i,j; for(i=0,j=0;in;i+) if(*(a+i)%2=0) aj=ai; j+; aj=-1;

8、return j; int main()int x15,i,n; for(i=0;i15;i+)scanf(%d,x+i); n=fun(x,15); for(i=0;xi!=-1;i+)printf(%d ,xi); printf(n=%dn,n);7給定程序中,函數(shù)fun的功能是:有MN二維數(shù)組,分別將每一行的最大值與本行的最后一個(gè)數(shù)據(jù)(第N-1列數(shù)據(jù))對調(diào),其余數(shù)據(jù)保持不變。然后按每一行的最大值對二維數(shù)據(jù)各行降序排序。例如,有右側(cè)數(shù)組數(shù)據(jù):11 52 43 4 25 22 求最大值并對調(diào)后:11 22 43 4 25 5222 33 46 58 16 47 22 33 46 47 16

9、5883 42 54 26 47 0 0 42 54 26 47 834 5 6 7 8 9 4 5 6 7 8 945 96 17 18 39 2 45 2 17 18 39 96排序后最終輸出:45 2 17 18 39 960 42 54 26 47 8322 33 46 47 16 5811 22 43 4 25 524 5 6 7 8 9#define N 6#define M 5#includevoid fun(int aMN) int i,j,k,m,t; for(i=0;iM;i+) k=0; for(j=1;jN;j+) if(aikaij) k=j; t=aik; aik=

10、aiN-1; aiN-1=t; for(i=0;iM-1;i+) k=i; for(j=i+1;jM;j+) if(akN-1ajN-1) k=j; if(i!=k) for(m=0;mN;m+) t=akm; akm=aim; aim=t; int main()int xMN=11,52,43,4,25,22,22,33,46,58,16,47,83,42,54,26,47,0,4,5,6,7,8,9,45,96,17,18,39,2,i,j;fun(x);for(i=0;iM;i+)for(j=0;jN;j+)printf(%3d,xij); printf(n);8. 函數(shù)void fun

11、(int x,char * p)實(shí)現(xiàn)十進(jìn)制整數(shù)x到二進(jìn)制的轉(zhuǎn)換。轉(zhuǎn)換后的二進(jìn)制數(shù)以字符串的方式放置于p所指向的數(shù)組中。如輸入13,輸出1101,輸入-13,輸出-1101。#include stdio.hvoid fun(int x,char *p) char *q,t; if(x0) *p+=-;x=-x; if(x=0) *p+=0;*p=0;return; q=p; for(;x!=0;x/=2) *p+=x%2+0; *p=0; for(p-;qp;q+,p-) t=*q;*q=*p;*p=t; int main()int a; char c18; scanf(%d,&a); fun(

12、a,c); printf(%dS BINARY IS: %sn,a,c);9. 編寫函數(shù)int fun(char (*ss)N,int m,char *s),功能是:形參ss指向一個(gè)m行N列的二維字符數(shù)組,每行存放一個(gè)字符串。求出最大的字符串,復(fù)制到s所指的字符數(shù)組中,然后返回此最大字符串的長度。#include#include#define N 30int fun(char (*ss)N,int m,char *s) int i,max; max=0; for(i=1;i0)max=i; strcpy(s,ssmax); return strlen(ssmax);int main()char

13、 a8N,bN;int i,len;for(i=0;i8;i+)gets(ai);len=fun(a,8,b);printf(len=%d,str=%sn,len,b);10 給定程序中,函數(shù)void fun(char *s)的功能是:在形參s所指字符串中的每個(gè)數(shù)字字符之后插入一個(gè)*號。例如,形參s所指的字符串為:def35adh3kjsdf7。執(zhí)行結(jié)果為:def3*5*adh3*kjsdf7*。#include#includevoid fun(char *s) int i,j; char a100; for(i=0,j=0;*(s+i)!=0;i+,j+) aj=*(s+i); if(*(s

14、+i)=0&*(s+i)=9) *(a+j+1)=*; j+; aj=0; strcpy(s,a); int main()char str80; gets(str); fun(str); puts(str);11給定程序中,函數(shù)void fun(char *s)的功能是:把形參s所指字符串中下標(biāo)為偶數(shù)的字符右移到下一個(gè)偶數(shù)位置,最右邊被移出字符串的字符繞回放到第一個(gè)偶數(shù)位置,下標(biāo)為奇數(shù)的字符不動(dòng)(注:字符串的長度大于等于2)。例:若輸入:abcd123,輸出:3badc21#include#includevoid fun(char *s) int i,t,l; l=strlen(s); if(

15、l%2=1) t=sl-1; for(i=l-1;i0;i-=2) si=si-2; s0=t; else t=sl-2; for(i=l-2;i0;i-=2) si=si-2; s0=t; int main()char str80; gets(str); fun(str); puts(str);12編寫函數(shù)void fun(char *s1,char *s2),功能是:對形參s1所指字符串升序排序,并將排序后下標(biāo)為偶數(shù)的字符取出,寫入形參s2所指字符數(shù)組中,形成一個(gè)新串。例如,下面程序若輸入:The C Programming Language,輸出:LTaegghmnor。(表空格)#in

16、cludevoid fun(char *s1,char *s2) int i,j,n; char t; for(i=0;*(s1+i)!=0;i+) n=i; for(j=i;*(s1+j)!=0;j+) if(*(s1+n)*(s1+j) n=j; t=*(s1+n);*(s1+n)=*(s1+i);*(s1+i)=t; for(i=0;*(s1+i)!=0;i+) if(i%2=0) *s2=*(s1+i); s2+; *s2=0;int main()char a80,b80; gets(a); fun(a,b); puts(b);13函數(shù)void fun(char s)的功能是:將s所指

17、字符串中ASCII值為奇數(shù)的字符刪除。例如,若s所指字符串中的內(nèi)容為:“ABCDEFG12345”,其中字符A的ASCII碼值為奇數(shù)、字符1的ASCII碼值也為奇數(shù)、都應(yīng)當(dāng)刪除,其它依此類推。最后s中內(nèi)容是:“BDF24”。#includevoid fun(char s) int i,j; for(i=0;si!=0;i+) if(si%2=1) for(j=i;sj!=0;j+) sj=sj+1; i-; int main()char a80; gets(a); fun(a); puts(a);14請編寫一個(gè)函數(shù)int fun(long int x),它的功能是:判斷整數(shù)x是否是同構(gòu)數(shù)。若是

18、同構(gòu)數(shù),函數(shù)返回1;否則返回0。所謂“同構(gòu)數(shù)”是指這樣的數(shù),它出現(xiàn)在它的平方數(shù)的右邊。例如:輸入整數(shù)5,5的平方數(shù)是25,5是25中右側(cè)的數(shù),所以5是同構(gòu)數(shù),輸出Yes。要求x的值不大于10000。#includeint fun(long int x) long s; s=x*x; while(x!=0) if(s%10!=x%10) return 0; x/=10; s/=10; return 1;int main()int x; scanf(%d,&x); if(fun(x)=1)puts(Yse); else puts(No);15編寫取子字符串函數(shù)void fun(char s1,ch

19、ar s2,int m,int n),其作用是將字符數(shù)組s2中從第m個(gè)字符開始的共n個(gè)字符拷貝到數(shù)組s1中;若s2中剩余字符不足n個(gè),則取到尾部。程序運(yùn)行時(shí),當(dāng)輸入abcd123、4,3時(shí)應(yīng)輸出d12;當(dāng)我們輸入abcd123、4,6時(shí)應(yīng)輸出d123。注意,這里是將1作為起始計(jì)數(shù).#includevoid fun(char s1,char s2,int m,int n)int i;for(i=0;in;i+)s1i=s2m+i-1;s1n=0;main()static char a100,b100;int s,len;void fun(char s1,char s2,int m,int n);

20、puts(ENTER A STRING:);gets(a);puts(ENTER STARTING POSITION AND LENGTH:);scanf(%d,%d,&s,&len);fun(b,a,s,len);printf(THE SRBSTING IS:%sn,b);16. 編寫函數(shù)void fun(char *str),將參數(shù)字符串中各單詞首字母變大寫,其余字母變小寫。輸入輸出在main中實(shí)現(xiàn)。如輸入you HAVE 10 books,dont you? 輸出You Have 10 Books,Dont You?。單詞以空格、逗號、句號分隔。#includevoid fun(char

21、 *str) int i,j; for(i=0;stri;i+) if(stri=A&stri=a&str0=a&stri+1=z) stri+1-=32; int main()char a100; gets(a);fun(a);puts(a);17. n個(gè)整數(shù),前面各數(shù)循環(huán)順序后移m個(gè)位置,最后m個(gè)數(shù)變成最前面m個(gè)數(shù)。寫函數(shù)void fun(int *p,int n,int m),實(shí)現(xiàn)上述功能。在main()中輸入與輸出。如下面程序輸出 7 8 9 10 1 2 3 4 5 6 。注意,m可能大于n。#include stdio.hvoid fun(int *p,int n,int m) i

22、nt i,j,k,t; k=m%n; for(i=0;i=0;j-) pj+1=pj; p0=t; int main()void fun(int *,int ,int ); int x10=1,2,3,4,5,6,7,8,9,10,i; fun(x,10,14); for(i=0;i10;i+) printf(%d ,xi); printf(n); 18. 編寫函數(shù)void fun(char *s1,char *s2),實(shí)現(xiàn)字符串s1與s2的交叉連接,連接后得到的新字符串放在s1中。如輸入abc12345,輸出a1b2c345,若輸入abcde123,則輸出a1b2c3de。 #include

23、#includevoid fun(char *s1,char *s2) int i,j,k; for(j=0,i=1;s2j!=0;) for(k=strlen(s1);k=i;k-) s1k+1=s1k; s1i=s2j; j+;i+; if(s1i) i+; int main()char a100,b100; void fun(char *,char *); gets(a); gets(b); fun(a,b); puts(a);19. 傳說可以根據(jù)兩個(gè)人的生日來計(jì)算其緣分.方法:將兩個(gè)人的生日各位相加,將得到的數(shù)再一次各位相加,直到其值為一個(gè)一位數(shù),此數(shù)即代表兩個(gè)人的緣分.例如,兩個(gè)生日為:19820523,19841111,則各位相加:1+9+8+2+5+2+3+1+9+8+4+1+1+1+1得:56;再5+6得11;再

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論