二級(jí)C語言上機(jī)考試復(fù)習(xí)(編程部分).ppt_第1頁
二級(jí)C語言上機(jī)考試復(fù)習(xí)(編程部分).ppt_第2頁
二級(jí)C語言上機(jī)考試復(fù)習(xí)(編程部分).ppt_第3頁
二級(jí)C語言上機(jī)考試復(fù)習(xí)(編程部分).ppt_第4頁
二級(jí)C語言上機(jī)考試復(fù)習(xí)(編程部分).ppt_第5頁
已閱讀5頁,還剩90頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、(編程部分),二級(jí)C語言上機(jī)考試,1、編程題共24分,通常: 函數(shù)定義部分12分 main函數(shù)部分12分,2、并非程序完全正確才得分, 批改時(shí)按得分點(diǎn)計(jì)分!,編程題與判分,3、滿分時(shí)必須運(yùn)行,若造結(jié)果倒扣1分,4、編程題的具體判分標(biāo)準(zhǔn),一、主函數(shù)(共12分) 1.文件操作(include,聲明,fopen各1分):3分 2.變量聲明并取得初始值:2分 3.函數(shù)調(diào)用正確:2分 4.在屏幕顯示運(yùn)算結(jié)果:1分 5.保存運(yùn)算結(jié)果到文件myf2.out:1分 輸出準(zhǔn)考證號(hào)到文件:1分 函數(shù)框架:2分(頭部1分,一對(duì)花括號(hào)1分) 二、 fun函數(shù)(共12分) 1.函數(shù)框架: 3分(頭部2分,一對(duì)花括號(hào)1分

2、) 2. 函數(shù)功能: 8分(注:又細(xì)分得分點(diǎn),每點(diǎn)1分) 3. 函數(shù)返回值:1分,編程題判分標(biāo)準(zhǔn)(得分點(diǎn)):,例如:按下列要求,你寫的如下的“程序”可能得到大約 15 分 左右!, 編寫函數(shù) void string_sort ( char *name , int row )。 string_sort函數(shù)的功能是將給出的 row個(gè)字符串按字典 順序排序。 編寫主函數(shù)。其功能是: 在函數(shù)中定義存儲(chǔ)如下5個(gè)字符串的數(shù)組array : beth, jhon, july, mary, tom 把數(shù)組array作為調(diào)用string_sort函數(shù)的實(shí)參, 調(diào)用 string_sort 函數(shù); 把程序的輸出保

3、存到文件myf2.out中去。 (3) 把編寫好的程序保存到文件myf2.c 中供閱卷使用。,#include #include void string_sort(char *name , int row) /* 1分 */ ,/* 2分 */,#include main( ) /* 函數(shù)頭部1分*/ int i; char *array = mary,tom,july,jhon,beth; /* 數(shù)據(jù)初始化2分*/ FILE *fp; fp=fopen(“myf2.out”, “w”); /* 文件操作3分*/ if(!fp) string_sort( array, 5 ); /* 函數(shù)調(diào)用

4、2分*/ for ( i=0 ; i5 ; i+ ) printf(“%sn”, arrayi); /* 結(jié)果輸出到屏幕1分*/ fprintf(fp, %sn, arrayi); /* 結(jié)果輸出到文件1分*/ fclose(fp); fprintf(fp, “123456789” ); /* 輸出準(zhǔn)考證號(hào)到文件:1分 */ ,/* 一 對(duì) 大 括 號(hào) 1 分 */,1、文件操作(頭文件、FILE指針定義、文件打開、關(guān)閉、 讀寫) 2、函數(shù)定義 3、函數(shù)調(diào)用 4、函數(shù)返回 5、變量、數(shù)組定義及初始化 6、必要的文件包含命令 7、程序運(yùn)行結(jié)果分別輸出到屏幕與指定文件 8、準(zhǔn)考證號(hào)碼輸出到指定文件

5、中,編程題必考內(nèi)容:,1、文件操作,#include main( ) FILE *fp; fp=fopen ( “myf2.out”, “w” ); if(fp=0) printf(“Cant open the file!” ) exit(1); fclose(fp); ,2、程序執(zhí)行結(jié)果的輸出,既要求輸出到屏幕,也要求輸出到指定文件;,準(zhǔn)考證號(hào)輸出到指定文件。,for ( i=0 ; i5 ; i+ ) printf (“%dn”, ai); /* 輸出到屏幕 */ fprintf ( fp , “%sn”, arrayi); /* 輸出到文件 */ . fprintf ( fp , “12

6、3456789” ); /* 準(zhǔn)考證號(hào)輸出到文件 */,例如,若要輸出在數(shù)組a中的5個(gè)int型數(shù)據(jù),則:,注意:只考輸出到指定文件,文件名一定是myf2.out 。 不考從文件中讀出數(shù)據(jù)!,3、函數(shù)定義,只要求編寫完成特定功能的兩個(gè)函數(shù): main函數(shù) 指定了函數(shù)頭部,完成特定功能的自定義函數(shù) 例如:,【編程要求】 1編寫函數(shù)int fun(int m),求大于m并且不包含小于21的素?cái)?shù)因子的最小合數(shù),函數(shù)返回該合數(shù)。合數(shù)是指除了1和自身以外仍存在其他因子的數(shù)(即非素?cái)?shù))。 2編寫main函數(shù),接收鍵盤輸入的一個(gè)整數(shù),調(diào)用fun函數(shù)求得大于該整數(shù)且滿足上述條件的合數(shù),將該合數(shù)輸出到屏幕并保存到

7、文件myf2.out中。最后將考生本人的準(zhǔn)考證號(hào)字符串保存到文件myf2.out中。,int fun ( int m ) . main( ) . ,4、函數(shù)調(diào)用,例如:void gcd(int a, int n ) ,重要的是調(diào)用函數(shù)的實(shí)參與形參必須一一對(duì)應(yīng)(個(gè)數(shù)、順序、類型)!,(2) void型函數(shù)只能以表達(dá)式的形式調(diào)用,不可以作為返回值賦值給一個(gè)變量或作為表達(dá)式的一個(gè)運(yùn)算分量!,錯(cuò)誤的調(diào)用: gcd ( t10, b) k=gcd( t , 100 ) s=3.14+gcd( t , 100 )*5;,正確的調(diào)用: gcd ( t, b) gcd( (錯(cuò)誤?, 只返回y),(4) 函數(shù)中

8、可以有多個(gè)return語句,但只有被執(zhí)行到的return語句有效,(5) 像這樣的函數(shù) gcd(int a, int n )是有返回值的,其返 回一個(gè)int型數(shù)據(jù),(6) return語句的返回值,總是被自動(dòng)轉(zhuǎn)換成函數(shù)的返 回值類型,6、變量、數(shù)組定義及初始化,例如, 若有下列考試題目: 編寫函數(shù) void string_sort ( char *name , int row )。 string_sort函數(shù)的功能是將給出的 row個(gè)字符串按字典 順序排序。 編寫主函數(shù)。其功能是: 在函數(shù)中定義存儲(chǔ)如下5個(gè)字符串的數(shù)組array : beth, jhon, july, mary, tom 把數(shù)

9、組array作為調(diào)用string_sort函數(shù)的實(shí)參, 調(diào)用 string_sort 函數(shù); 把程序的輸出保存到文件myf2.out中去。 (3) 把編寫好的程序保存到文件myf2.c 中供閱卷使用。,則在main函數(shù)中必須定義如下數(shù)組:,main() char *array5=“beth”, “jhon”, “july”, “mary”, “tom”; 或者: char *array =“beth”, “jhon”, “july”, “mary”, “tom”; ,記住:程序中用到的變量、數(shù)組必須先定義好再使用! 使用變量、數(shù)組前,變量、數(shù)組必須先置好初值!,7、必要的文件包含命令,stdi

10、o.h ctype.h string.h math.h stdlib.h,編程??嫉幕舅惴?,1、判斷素?cái)?shù) 2、整數(shù)分解及其反序數(shù)(如查找回文數(shù)) 3、查找與判斷滿足所給條件的數(shù) 4、查找整數(shù)的全部因子及全部因子之和 5、求整數(shù)的最大公約數(shù) 6、數(shù)組的使用 元素查找 元素壓縮(如從數(shù)組中刪除指定條件的數(shù)) 元素插入(數(shù)組擴(kuò)充) 元素位置調(diào)整 (如矩陣轉(zhuǎn)置) 元素排序(交換排序、選擇排序等),7、進(jìn)制轉(zhuǎn)換 8、統(tǒng)計(jì) 9、按給定規(guī)則對(duì)數(shù)據(jù)做加密變換 10、求級(jí)數(shù)的近似值 11、字符串處理 找出字符串中的子串 刪除重復(fù)出現(xiàn)的字符串 取出字符串中的數(shù)字字符轉(zhuǎn)換成指定類型的數(shù) 元素移動(dòng) (位置對(duì)換、調(diào)

11、整等),1、判斷素?cái)?shù),最簡(jiǎn)單的素?cái)?shù)判斷算法,對(duì)于2的正整數(shù)n ,用n 依次除以2 n-1, 若都不能整除, n就是素?cái)?shù),否則n不是素?cái)?shù)。,for( i=2 ; in ; i+ ) if( n%i=0) break; if(i=n) printf(“%d is prime”, n );,改進(jìn)后的素?cái)?shù)判斷算法,如果n2且n不能被2sqrt(n)之間的所有整數(shù)整除, n就是素?cái)?shù)。,for(n=n1;n=r) printf(“%d ”, n); ,例:求n1n2之間的所有素?cái)?shù):,2、整數(shù)分解及其反序數(shù),t=n; m=0; while ( t0 ) i=t%10; m=m*10+i; t/=10; if

12、 ( m=n ) printf ( “n is a palindrome” ) ;,例:判斷n是否為回文數(shù),3、查找整數(shù)的全部因子及全部因子之和,int m, i, s=0, k100; scanf ( “%d”, ,4、求整數(shù)的最大公約數(shù),brute-force算法,S1: 假設(shè)x(或y)是x、y的最大公約數(shù)z S2: 判斷x和y是否均能被z整除。若 z不能同時(shí)整除 x和y 則 z=z-1, 重復(fù)S2步。否則, 做下一步操作 S3: 輸出z,int x=30, y=45, z; z=xy?x:y; while( !(x%z=0,歐幾里德算法(輾轉(zhuǎn)相除法),int gcd ( int a ,i

13、nt b ) int r ; while( b!=0) r=a%b; a=b; b=r; return a; ,int i , j=1, a7= 1, 2, 3, 4, 5, 6, 7 ; for ( i=1 ; i7; i+ ) if ( i%2=0 ) aj+=ai; ai=0; ,5、從指定數(shù)組中刪除指定條件的數(shù)(數(shù)組元素壓縮),例如:從數(shù)組a中刪除所有下標(biāo)值為奇數(shù)的數(shù)組元素。,6、在數(shù)組的特定位置插入新元素,int i , a10= 1, 2, 3, 5, 6, 7 ; for ( i=0 ; ii;j-) aj=aj-1; ai+1=4; break; ,例如:從數(shù)組a中第一個(gè)整數(shù)3

14、的元素后插入整數(shù)4。,例: 矩陣轉(zhuǎn)置(矩陣行列互換),7、數(shù)組元素位置調(diào)整,int i, j, a23= 1, 2, 3, 4, 5, 6 , b32; for ( i=0; i2; i+ ) for ( j=0; j3; j+ ) bji=aij;,void sort(int array , int n), int i, j, t; for(i=0;iarrayj) t=arrayi; arrayi=arrayj; arrayj=t; ,8、數(shù)組元素排序,數(shù)組元素交換法排序例:,9、查找數(shù)組元素,線性查找法例:,#include int main(void) int x10=45, 67,

15、23, 43, 45, 34, 5, 23, 64, 56, m=-1, i, key; scanf(“%d”, ,折半查找例:, while(low=high) mid=(low+high)/2; if(xmid=key) k=mid; break; if(keyxmid) high=mid-1; else low=mid+1; ,10、進(jìn)制轉(zhuǎn)換,將十進(jìn)制整數(shù)轉(zhuǎn)換成R進(jìn)制并輸出(R10)。,將十進(jìn)制整數(shù)除以R,余數(shù)保存在數(shù)組內(nèi),直至被除數(shù)為0,再將數(shù)組中的數(shù)倒序輸出。,#include int main(void) int k=0,base,n,j,num20,t; printf(“ente

16、r a number:”); scanf(“%d”,do numk+=t%base; t/=base; while(t!=0); printf(“%d(10)-”,n); for(j=k-1;j=0;j-) printf(“%d”, numj); printf(“(%d)n”, base); ,enter a number:15 enter base:2 15(10)-1111(2),11、求級(jí)數(shù)的近似值,例如:編寫函數(shù)double fun(double x, double eps), 計(jì)算,的近似值(直到最后一項(xiàng)的絕對(duì)值小于eps)并作為函數(shù)返回值。,double fun(double x,

17、double eps) double sum=x, fb=1, tn, xn, n=2; int s=1; xn=x; do xn=xn*x*x; fb=fb*(n-1)*2-1)/(n-1)*2); s=-s; tn=s*xn*fb/(2*n-1); sum=sum+tn; n=n+1; while(fabs(tn)eps); return sum; ,12、對(duì)數(shù)據(jù)做加密變換,例如:編寫函數(shù) void encode ( long a, long b, int n) ,對(duì)數(shù)組a中的n個(gè)元素作加密變換:先將元素的每位數(shù)字用該數(shù)字加 5 后除以10的余數(shù)替換,再將該整數(shù)的首位和末位交換。加密結(jié)果保

18、存到b數(shù)組中。,void encode(long a , long b , int n) int aa6, i, j=0, k, m=0; long x, temp; for(i=0; i0; k+) aak=x%10; aak+=5; aak%=10; x/=10; temp=aa0; aa0=aak-1; aak-1=temp; for(bm=0, j=k-1; j=0; j-) bm=bm*10+aaj; m+; ,加密前:12 234 4567 89998 987 56,加密后:76 987 2019 34443 234 10,13、統(tǒng)計(jì),例如:編寫函數(shù)void stat(struct

19、 stu s , int c , int n), 統(tǒng)計(jì)s 數(shù)組中存儲(chǔ)的n個(gè)學(xué)生成績(jī)的各分?jǐn)?shù)段人數(shù), 將統(tǒng)計(jì)結(jié)果存放到c數(shù)組中(c0 存放90100分的人數(shù), c1 存放8089分的人數(shù), c2存放7079分的人數(shù), c3 存放6069分的人數(shù),c4存放60分以下的人數(shù))。,存儲(chǔ)成績(jī)的數(shù)據(jù)結(jié)構(gòu): struct stu char num10; /*學(xué)號(hào)*/ int score; /*成績(jī)*/ ;,void stat(struct stu s, int c, int n) int i, k; for ( i=0; i5; i+ ) ci=0; for ( i=0; in; i+ ) k=si.sco

20、re/10; if ( k=10 ) k=9; else if ( k6 ) k=5; c9-k+; ,14、從字符串中刪除所有特定的字符,如從字符串“abcdbe”中刪除所有的字符b 。,int i, j; char string10= “abcdbe”, ch=b; for ( i=j=0; i=strlen(array); i+ ) if ( stringi != ch ) arrayj+=arrayi;,15、查找出字符串中的子串,16、刪除重復(fù)出現(xiàn)的字符串,例如:編寫函數(shù) int del_name ( char s20, int n ),刪除s數(shù)組中存儲(chǔ)的n個(gè)字符串中重復(fù)出現(xiàn)的字符串

21、, 只保留第一次出現(xiàn)的字符串,函數(shù)返回s數(shù)組中剩余的字符串個(gè)數(shù)。,int del_name ( char s 20, int n ) int i, j, k; for ( i=0; in; i+) j=i+1; /* 下一個(gè)字符串 */ while ( jn ) if ( strcmp (si , sj) = 0 ) for ( k=j; kn-1; k+) strcpy ( sk, sk+1 ); sk0=0; n-; else j+; return n; ,17、取出字符串或一個(gè)數(shù)中的數(shù)字轉(zhuǎn)換成指定類型的數(shù),例如:編寫函數(shù) long fun ( long s ),取出整數(shù)s中的所有偶數(shù)數(shù)字

22、,用這些數(shù)字構(gòu)成一個(gè)最大數(shù),函數(shù)返回該數(shù)。,void sort(int a ,int n) int i, j, k, t; for ( i=0; iak) k=j; if ( k!=i ) t=ak; ak=ai; ai=t; ,long fun ( long s ) int d, b10, i, j=0; long s1=0; while(s0) d=s%10; if(d%2=0)bj+=d; s/=10; sort( b, j ); for ( i=0; ij; i+ ) s1=s1*10+bi; return s1; ,18、數(shù)組元素位置對(duì)換、調(diào)整,例如:編寫函數(shù) void cycle

23、( int a10, int n ),將a數(shù)組中存儲(chǔ)的n階方陣分成四個(gè)子方陣(如下圖所示),對(duì)矩陣做一次順時(shí)針輪轉(zhuǎn)操作,輪轉(zhuǎn)后的n階方陣仍保存在a數(shù)組中。,void cycle ( int x 10, int n ) int i, j, m=n/2, y55; for ( i=0; im; i+ ) for ( j=0; jm; j+) yij=xi+mj; for ( i=0; im; i+) for ( j=0; jm; j+) xi+mj=xi+mj+m; for ( i=0; im; i+) for ( j=0; jm; j+) xi+mj+m=xij+m; for ( i=0; im

24、; i+) for ( j=0; jm; j+) xij+m=xij; for ( i=0; im; i+) for ( j=0; jm; j+) xij=yij; ,C語言上機(jī)考試真題(1)解析,二、編程題(24分) 【程序功能】 在給定范圍內(nèi)查找并輸出所有由兩個(gè)不同數(shù)字組成的六位回文數(shù)。一個(gè)整數(shù)如果與其反序數(shù)相等,則稱該整數(shù)為回文數(shù)。例如,112211是回文數(shù)并且112211是由兩個(gè)不同的數(shù)字1和2組成的,因此112211是符合上述條件的數(shù)。 【編程要求】 1. 編寫函數(shù)int palin(long m1,long m2,long x),在m1m2范圍內(nèi)查找所有由兩個(gè)不同數(shù)字組成的回文數(shù)并

25、依次保存到x指向的數(shù)組中。函數(shù)返回x數(shù)組中回文數(shù)的個(gè)數(shù)。 2. 編寫main函數(shù),調(diào)用palin函數(shù)查找100000120000范圍內(nèi)所有由兩個(gè)不同數(shù)字組成的六位回文數(shù)并將這些數(shù)保存到一維數(shù)組中,將該一維數(shù)組中的數(shù)據(jù)輸出到屏幕并保存到文件myf2.out中。最后將考生本人的準(zhǔn)考證號(hào)字符串保存到文件myf2.out中,【測(cè)試數(shù)據(jù)與運(yùn)行結(jié)果】 輸出結(jié)果: 100001 101101 110011 112211 113311 114411 115511 116611 117711 118811 119911,【參考答案】 #include #include int palin( long m1, l

26、ong m2, long x ) int a10, i, k=0, sum; long n, m, t; for(n=m1; n0 ) i=t%10; ai=1; m=m*10+i; t/=10; for(sum=0, i=0; i10; i+) if(ai!=0)sum+; if(m=n ,main( ) int i , n; long a200; FILE *fp; if( (fp = fopen(myf2.out,w)=NULL) printf(Cant open file my2.out!n); exit(1); n=palin(100000 , 120000 , a); for( i

27、=0; in; i+ ) printf ( %ld , ai ); fprintf ( fp, %ldt, ai); fclose(fp); ,二、編程題(24分) 【編程要求】 1編寫函數(shù)int find(int n,long x),找到并保存所有滿足以下三個(gè)條件的n位十進(jìn)制正整數(shù)(n是函數(shù)被調(diào)用時(shí)形參n獲得的值):該數(shù)是某個(gè)數(shù)的平方;該數(shù)的后二位是25;組成該數(shù)的各位數(shù)字中有兩位是相同的。例如:225是滿足所給條件的三位正整數(shù)(152=225);1225是滿足所給條件的四位正整數(shù)(352=1225)。數(shù)組x中存放找到的滿足條件的正整數(shù),函數(shù)返回找到的正整數(shù)個(gè)數(shù)。 2編寫main函數(shù),兩次調(diào)

28、用find函數(shù)分別求得滿足上述條件的所有三位正整數(shù)和所有四位正整數(shù),將滿足條件的三位正整數(shù)和四位正整數(shù)輸出到屏幕并保存到文件myf2.out中。最后將考生本人的準(zhǔn)考證號(hào)字符串保存到結(jié)果文件myf2.out中。 【測(cè)試數(shù)據(jù)與運(yùn)行結(jié)果】 輸出結(jié)果: n=3 : 225 n=4 : 1225 2025 4225 7225,C語言上機(jī)考試真題(2)解析,for(i=m1; im2; i+) t=sqrt(i); if(i=t*t) if(i%100=25) for(j=0; j10; j+) numj=0; for(s=i, j=0; jn; j+) nums%10+; s=s/10; for(j=0

29、; jn; j+) if(numj=2)break; if(jn) xk+=i; return k; ,#include #include #include int find( int n , long x ) long i, j, k=0, s , m1,m2,t,num10=0; m1= pow( 10, n-1 ); m2= pow( 10, n );,main( ) FILE *fp; long a100, n, i, j; fp=fopen( myf2.out , w ); if(fp=NULL) printf( Can not open the file! n ); exit(1)

30、; for( i=3; i5; i+ ) printf( n n=%d: , i ); fprintf( fp, n n=%d: , i); n=find( i , a); for( j=0; jn; j+ ) printf( %5d , aj ); fprintf( fp, %5d, aj ); fprintf(fp , “nmy exam number is 0112400123” ); fclose(fp); ,二、編程題(24分) 【編程要求】 1.編寫函數(shù)int prime_m( int n,int x, long y),在2n范圍內(nèi)查找同時(shí)符合以下條件的整數(shù)m:2m -1是素?cái)?shù)、2

31、m -1的反序數(shù)是奇數(shù)、2m -1的十進(jìn)制表示中包含數(shù)字1。將2n范圍內(nèi)符合上述條件的所有整數(shù)m依次保存到x指向的數(shù)組中,將與m對(duì)應(yīng)的整數(shù)2m -1依次保存到y(tǒng)指向的數(shù)組中。函數(shù)返回x數(shù)組中保存的整數(shù)個(gè)數(shù)。 2.編寫main函數(shù),接收鍵盤輸入的n值,調(diào)用prime_m函數(shù)找到2n范圍內(nèi)所有符合給定條件的整數(shù)m及整數(shù)2m -1并將它們分別保存在兩個(gè)一維數(shù)組中,將兩個(gè)一維數(shù)組中的數(shù)據(jù)按所示格式輸出到屏幕并保存到文件myf2.out中。最后將考生本人的準(zhǔn)考證號(hào)字符串保存到文件myf2.out中。,C語言上機(jī)考試真題(3)解析,【測(cè)試數(shù)據(jù)與運(yùn)行結(jié)果】 測(cè)試數(shù)據(jù): n=20 輸出結(jié)果: 5 31 7 1

32、27 17 131071,【參考答案】 #include #include int prime_m(int n, int x, long y) int i, j, m, count; long k=0, q, k1, k2, k3; for(m=2; m=n; m+) k1=pow( 2, m ) - 1; q=sqrt(k1); for(j=2; j=q; j+) if( k1%j=0 ) break; if( j=q ) continue; count=0; k3=k1; k2=0;,while(k30) int w=k3%10; if(w=1) count+; k2=k2*10+w; k

33、3=k3/10; if(k2%2=0) continue; if(count0) xk=m; yk+=k1; return k; ,main( ) FILE *fp; long a20; int i, j, n, b20 ,m; if(fp=fopen(myf2.out , w)=NULL) printf(Open file myf2.out failed!n); exit(1); printf(input n:); scanf(%d, ,【程序功能】 找出給定范圍內(nèi)的和親數(shù)。 對(duì)于兩個(gè)正整數(shù),如果其中的一個(gè)整數(shù)是另一個(gè)整數(shù)的全部真因子之和,反之亦然,則稱這兩個(gè)數(shù)為“和親數(shù)”。例如,220有真

34、因子“1, 2, 4, 5, 10, 11, 20, 22, 44, 55, 110”,其和為284,而284有真因子“1, 2, 4, 71, 142”,其和為220,因此220和284就是一對(duì)和親數(shù)。 【編程要求】 1編寫函數(shù)int heqinmath(int m, int n, int a2),找出mn(mn)之間的所有和親數(shù)對(duì),并將其保存到a指向的數(shù)組中,函數(shù)返回a數(shù)組中和親數(shù)對(duì)的個(gè)數(shù)。 2編寫main函數(shù),接收鍵盤輸入的兩個(gè)正整數(shù)m和n(mn),調(diào)用heqinmath函數(shù)求出mn之間的所有和親數(shù)對(duì),將結(jié)果輸出到屏幕并保存到文件myf2.out中。最后將考生本人的準(zhǔn)考證號(hào)字符串保存到文

35、件myf2.out中。,C語言上機(jī)考試真題(4)解析,【測(cè)試數(shù)據(jù)與運(yùn)行結(jié)果】 測(cè)試數(shù)據(jù): m=2, n=500 運(yùn)行結(jié)果: ( 220 , 284 ) ( 284 , 220 ),【參考答案】 #include int heqinmath( int m, int n, int a 2 ) int i, j, m1, s1, s2, count=0; for( m1=m; m1n; m1+ ) s1=1; s2=1; for( i=2; im1; i+ ) if( m1%i=0 ) s1=s1+i; for( j=2; js1; j+ ) if( s1%j=0 ) s2=s2+j; if( (s

36、2=m1) ,main( ) int count, i, m, n, a102; FILE *fp; fp=fopen( myf2.out , w ); if(fp=NULL) printf(Can not open the file! n) ; exit(1) ; ; printf(Please input m,n:n); scanf( %d%d , ,二、編程題(24分) 【編程要求】 1編寫函數(shù)int Del_findgcd( int a, int n, int *f ),對(duì)于a指向的數(shù)組中前n個(gè)元素,刪除所有下標(biāo)值為奇數(shù)的數(shù)組元素中保存的整數(shù),求得數(shù)組中剩余的n/2(或n/2+1)個(gè)整

37、數(shù)的最大公約數(shù)并將其保存到f指向的變量中。函數(shù)返回a數(shù)組中剩余整數(shù)的個(gè)數(shù)。 2編寫main函數(shù),聲明一個(gè)一維數(shù)組并用測(cè)試數(shù)據(jù)初始化,調(diào)用Del_findgcd函數(shù)刪除數(shù)組中的所有滿足條件的整數(shù)并求出剩余整數(shù)的最大公約數(shù),將數(shù)組中剩余的整數(shù)和這些整數(shù)的最大公約數(shù)輸出到屏幕并保存到文件myf2.out中。最后將考生本人的準(zhǔn)考證號(hào)字符串保存到文件myf2.out中。 【測(cè)試數(shù)據(jù)與運(yùn)行結(jié)果】 測(cè)試數(shù)據(jù): 6 8 9 11 12 13 15 16 18 19(n=10) 輸出結(jié)果:6 9 12 15 18,max common divisor=3,C語言上機(jī)考試真題(5)解析,【參考答案】 #inclu

38、de int Del_findgcd ( int a , int n , int *f ) int i, k, g; for( i=0, k=0; ig) k=k-g; else g=g-k; *f = k; return n; ,main( ) FILE *fp; int i, a10=6, 8, 9, 11, 12, 13, 15, 16, 18, 19, f, n; if( (fp=fopen(myf2.txt,w) )=NULL) printf(cant open file!); exit(1); n=Del_findgcd( a, 10, ,二、編程題(24分) 【程序功能】 在數(shù)列

39、中查找、移動(dòng)超完全數(shù)。 超完全數(shù)是指具有以下特性的整數(shù)N:(N)=2N,其中(N)表示整數(shù)N的所有因子之和(因子包括N自身)。例如,16的所有因子之和為31(1+2+4+8+1631),31的所有因子之和為32(1+3132),而32216,因此16是一個(gè)超完全數(shù)。 1000以內(nèi)的超完全數(shù)有2、4、16和64。 【編程要求】 1. 編寫函數(shù)void sumfac ( int x, int n ) ,對(duì)于x指向的數(shù)組中存儲(chǔ)的n個(gè)整數(shù)組成的數(shù)列,完成以下變換操作:從后向前遍歷數(shù)列查找超完全數(shù)。每找到一個(gè)超完全數(shù)后,將其移動(dòng)到數(shù)列第一個(gè)數(shù)之前。 2. 編寫main函數(shù),將測(cè)試數(shù)據(jù)中給出的變換前數(shù)列保

40、存到一個(gè)一維數(shù)組中,調(diào)用sumfac函數(shù)對(duì)一維數(shù)組中的數(shù)列做變換,輸出變換后的數(shù)列到屏幕并保存到文件myf2.out中。最后將考生本人的準(zhǔn)考證號(hào)字符串保存到文件myf2.out中。,C語言上機(jī)考試真題(6)解析,【測(cè)試數(shù)據(jù)與運(yùn)行結(jié)果】 變換前數(shù)列: 1 2 4 8 16 32 64 128 256 512 變換后數(shù)列: 2 4 16 64 1 8 32 128 256 512,【參考答案】 #include void sumfac(int x, int n) ; int fac( int n ); main( ) int i, a10=1, 2, 4, 8,16, 32, 64, 128, 2

41、56, 512 ; FILE *fp; if( (fp=fopen(myf2.out,w) )=NULL) printf(Creat File myf2.out failed!n); exit(1); sumfac( a ,10 ); printf( n ); fprintf(fp ,n ); for( i=0; i10; i+ ) printf( %6d, ai ); fprintf( fp, %6d, ai ); fprintf(fp, nMy exam number is : 0112400123 ); fclose(fp); ,void sumfac(int x, int n) int

42、 i, j, k, m, sum; for( i=n-1, k=0; i=k; i- ) sum=fac(xi); if(fac(sum)=xi*2) m=xi; for(j=i; j0; j-) xj=xj-1 x0=m; k+; i+; ,int fac(int n) int i, sum=0; for(i=1; i=n; i+ ) if (n%i=0 ) sum+=i; return sum; ,二、編程題(24分) 【程序功能】 產(chǎn)生Fibonacci數(shù)列的前40個(gè)數(shù),再找出其中的所有素?cái)?shù)。 Fibonacci數(shù)列為:1, 1, 2, 3, 5, 8, 13, 21, 34, 55,

43、89, . . . . 。 【編程要求】 1編寫函數(shù) void Fibonprime( long f , int n),產(chǎn)生Fibonacci數(shù)列的前n個(gè)數(shù),再將其中的所有素?cái)?shù)放入數(shù)組f 中,函數(shù)返回f 數(shù)組中素?cái)?shù)的個(gè)數(shù)。 2編寫main函數(shù),調(diào)用Fibonprime函數(shù)求出Fibonacci數(shù)列前40個(gè)數(shù)(n=40)中的素?cái)?shù),將這些素?cái)?shù)輸出到屏幕并保存到文件myf2.out中。最后將考生本人的準(zhǔn)考證號(hào)字符串保存到文件myf2.out中。 【測(cè)試數(shù)據(jù)與運(yùn)行結(jié)果】 運(yùn)行結(jié)果: 2 3 5 13 89 233 1597 28657 514229,C語言上機(jī)考試真題(7)解析,【參考答案】 #inc

44、lude #include int Fibonprime( long f, int n ) int i, m=0; long a40= 1 , 1 , j, k; for ( i=2; i=k+1 ) fm+=ai; return(m); ,main( ) int i, m; long f40; FILE *fp; fp=fopen( myf2.out , w“ ); if(fp=NULL) printf(Can not open the file! n); exit(1); m=Fibonprime( f , 40 ); for ( i=0; im; i+) printf( %ldt, fi

45、 ); fprintf(fp , %ldt, fi ); fclose(fp); ,二、編程題(24分) 【編程要求】 1編寫函數(shù) int fun( int m ),求大于m并且不包含小于21的素?cái)?shù)因子的最小合數(shù),函數(shù)返回該合數(shù)。合數(shù)是指除了1和自身以外仍存在其他因子的數(shù)(即非素?cái)?shù))。 2編寫main函數(shù),接收鍵盤輸入的一個(gè)整數(shù),調(diào)用fun函數(shù)求得大于該整數(shù)且滿足上述條件的合數(shù),將該合數(shù)輸出到屏幕并保存到文件myf2.out中。最后將考生本人的準(zhǔn)考證號(hào)字符串保存到文件myf2.out中。 【測(cè)試數(shù)據(jù)與運(yùn)行結(jié)果】 輸入21時(shí),輸出529 輸入1000時(shí),輸出1073,C語言上機(jī)考試真題(8)解析

46、,【參考答案】 #include int prime(int n) int i; for( i=2; i=8 ) return n; n+; ,main( ) int m,n; FILE *fp; fp=fopen( myf2.out,w“ ); if( fp=NULL) printf(Can not open the file! n) ; exit(1) ; ; scanf( %d, ,二、編程題(24分) 【編程要求】 1編寫函數(shù) void change( long x, int n ),對(duì)x指向的數(shù)組中前n個(gè)整數(shù)做如下變換:從前向后依次判斷每個(gè)整數(shù)及該整數(shù)的平方是否均為回文數(shù)(回文數(shù)是指

47、一個(gè)數(shù)的反序數(shù)等于該數(shù)自身),若是則將該整數(shù)移到最后的數(shù)之后,若不是則保持該整數(shù)的存儲(chǔ)位置不變。例如,1012=10201,101和10201均為回文數(shù),因此101是需要被移動(dòng)的數(shù)。此外,111、121、202、212也是需要被移動(dòng)的數(shù)。 2編寫main函數(shù),聲明數(shù)組a并用測(cè)試數(shù)據(jù)初始化,調(diào)用change函數(shù)對(duì)a數(shù)組做變換,再將數(shù)組a中的數(shù)據(jù)輸出到屏幕并保存到文件myf2.out中。最后將考生本人的準(zhǔn)考證號(hào)字符串保存到文件myf2.out中。 【測(cè)試數(shù)據(jù)與運(yùn)行結(jié)果】 變換前數(shù)組中數(shù)據(jù):100 101 110 111 120 121 200 201 202 212 變換后數(shù)組中數(shù)據(jù):100 11

48、0 120 200 201 101 111 121 202 212,C語言上機(jī)考試真題(9)解析,【參考答案】 #include #include void change( long x, int n ); int hw( long n ); main( ) long a10=100, 101, 110, 111, 120, 121, 200, 201, 202, 212; int i; FILE *fp; fp=fopen( myf2.out , w ); if(fp=NULL) printf(Can not open the file! n); exit(1); change( a ,10

49、 ); for( i=0; i10; i+ ) printf ( %d , ai ); fprintf( fp ,%d , ai ); fprintf( fp ,nmy exam number is 0112400123 ); fclose(fp); ,void change( long x , int n ) long i, j, m=n, k; for( i=0; i0 ) s=s*10+t%10; t=t/10; if( n=s ) return 1; else return 0; ,二、編程題(24分) 【編程要求】 1編寫函數(shù) int fun( long *x ),找出所有滿足以下特

50、性的六位整數(shù):它是一個(gè)完全平方數(shù)(完全平方數(shù)是指該數(shù)是某個(gè)整數(shù)的平方);該數(shù)同時(shí)也是回文數(shù)(回文數(shù)是指該數(shù)等于它的反序數(shù))。例如,698896是836的平方并且698896是回文數(shù),因此698896是滿足所給條件的六位整數(shù)。將所有滿足上述條件的六位整數(shù)存入x指向的數(shù)組中,函數(shù)返回x指向的數(shù)組中整數(shù)的個(gè)數(shù)。 2編寫main函數(shù),聲明result數(shù)組,調(diào)用fun函數(shù)將所有滿足條件的六位整數(shù)存入result數(shù)組中,將result數(shù)組中的數(shù)據(jù)輸出到屏幕并保存到文件myf2.out中。最后將考生本人的準(zhǔn)考證號(hào)字符串保存到文件myf2.out中。 【測(cè)試數(shù)據(jù)與運(yùn)行結(jié)果】 運(yùn)行結(jié)果: 698896,C語言上

51、機(jī)考試真題(10)解析,【參考答案】 #include #include main( ) int i, k; long result20; FILE *fp; fp=fopen( myf2.out ,w ); if(fp=NULL) printf(Can not open the file! n); exit(1); k=fun(result); for( i=0; ik; i+ ) printf(%12ld,resulti); fprintf(fp,%12ld,resulti); fprintf(fp,nmy exam number is 0112400123); fclose(fp); ,

52、int fun(long *x) long int i, m, temp; int a7, k, j=0; for( i=300; i1000; i+ ) m=i*i; k=temp=0; while(m) ak=m%10; temp=temp*10+ak; m/=10; k+; if ( temp=i*i ,二、編程題(24分) 【程序功能】 從一個(gè)整型數(shù)組中刪除所有小于數(shù)組元素平均值并且不是素?cái)?shù)的那些整數(shù)。 【編程要求】 1編寫函數(shù) int del( int r , int n),計(jì)算r數(shù)組中前n個(gè)整數(shù)的平均值, 刪除數(shù)組中所有小于該平均值并且不是素?cái)?shù)的那些數(shù),函數(shù)返回r數(shù)組中剩余整數(shù)的個(gè)

53、數(shù)。 2編寫main函數(shù),聲明數(shù)組resource并用測(cè)試數(shù)據(jù)初始化,調(diào)用del函數(shù)處理數(shù)組resource中的數(shù)據(jù),將resource數(shù)組中剩余的整數(shù)輸出到屏幕并保存到文件myf2.out中。最后將考生本人的準(zhǔn)考證號(hào)字符串保存到文件myf2.out中。 【測(cè)試數(shù)據(jù)與運(yùn)行結(jié)果】 數(shù)組初始數(shù)據(jù)為: 17 5 6 18 8 28 運(yùn)行結(jié)果: 17 5 18 28,C語言上機(jī)試卷真題(11)解析,【參考答案】 #include #include int prime(int m) int i, k; k=sqrt(m); for(i=2; i=k; i+) if(m%i=0) return 0; re

54、turn 1; ,int del( int r , int n ) int i, j; float aver=0; for( i=0; in; i+ ) aver+=ri; aver/=n; for( i=0; in; i+ ) if( (riaver) ,main( ) int resource6=17, 5, 6, 18, 8, 28 , n=6; int i; FILE *fp; fp=fopen( myf2.out , w ); if( fp=NULL) printf(Can not open the file! n); exit(1); n=del( resource , n );

55、for( i=0; in; i+ ) printf( %dt, resourcei ); for( i=0; in; i+ ) fprintf(fp,%dt , resourcei ); fprintf(fp,nmy exam number is 0112400123); fclose(fp); ,二、編程題(24分) 【編程要求】 1編寫函數(shù) int find( char a ,char b),函數(shù)被調(diào)用時(shí)a指向的數(shù)組中已存儲(chǔ)一個(gè)字符串,該字符串是一個(gè)包含了多個(gè)單詞的英文句子(單詞是指全部由英文字母組成的子串,不同單詞之間有一個(gè)或多個(gè)空格作為分隔)。函數(shù)功能:找出字符串a(chǎn)中最長的單詞并將其存

56、入b指向的數(shù)組中,函數(shù)返回最長單詞在字符串a(chǎn)中的起始位置下標(biāo)。 2編寫main函數(shù),從鍵盤輸入一個(gè)英文句子字符串,調(diào)用find函數(shù)找到該句子中最長的單詞,將最長單詞及其在字符串中的起始位置下標(biāo)輸出到屏幕并保存到文件myf2.out中。最后將考生本人的準(zhǔn)考證號(hào)字符串保存到文件myf2.out中。 【測(cè)試數(shù)據(jù)與運(yùn)行結(jié)果】 輸入: This is C programming test 輸出: programming,i=10,C語言上機(jī)考試真題(12)解析,【參考答案】 #include int find( char a, char b ) int i=0, plen=0, maxlen=0, pseat=0; while

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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)論