江蘇等級考試二級C語言上機真題匯編_第1頁
江蘇等級考試二級C語言上機真題匯編_第2頁
江蘇等級考試二級C語言上機真題匯編_第3頁
江蘇等級考試二級C語言上機真題匯編_第4頁
江蘇等級考試二級C語言上機真題匯編_第5頁
已閱讀5頁,還剩35頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第40-頁1江蘇省高等高等學(xué)校非計算機專業(yè)學(xué)生計算機基礎(chǔ)知識和應(yīng)用能力等級考試上機試卷二級C語言(本試卷完成時間70分鐘)一、改錯題(16分)【程序功能】輸入兩個正確日期且年份在1900-9999范圍內(nèi),計算并輸出兩個日期之間間隔的天數(shù)。例如:2008-8-1和2009-8-1之間間隔的天數(shù)為365。提示:被4整除并且不能被100整除的年份是閏年,能被400整除的年份也是閏年,其他年份則是平年?!緶y試數(shù)據(jù)及運行結(jié)果】顯示:firstdate:輸入:1980-2-1顯示:seconddate:輸入:2009-8-1輸出:10774days【含有錯誤的源程序】#include<stdio.h>#defineleap(inty)((y)%4==0&&(y)%100!=0||(y)%400==0)structd{inty,m,d;};intdays(structdd1,structdd2){intmon[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}};inti;longtd=0;for(i=d1.y;i<d2.y;i++)td=leap(i)?366:365;for(i=1;i<d1.m;i++)td-=mon[leap(d1.y)][i];td-=d1.d-1;for(i=1;i<d2.m;i++)td+=mon[leap(d2.y)][i];td+=d2.d-1;returntd;voidmain(){structd1,d2;puts(“\nfirstdate:”);scanf(“%d-%d-%d”,&d1.y,&d1.m,&d1.d);puts(“\nseconddate:”);scanf(“%d-%d-%d”,&d2.y,&d2.m,&d2.d);printf(“%ddays”,days(d1.y,d2.y));getch();【要求】將上述程序錄入到文件myf1.c中,根據(jù)題目要求及程序中語句之間的邏輯關(guān)系對程序中的錯誤進行修改。改錯時,可以修改語句中的一部分內(nèi)容,調(diào)整語句次序,增加少量的變量說明或編譯預(yù)處理命令,但不能增加其他語句,也不能刪去整條語句。改正后的源程序(文件名為myf1.c)保存在T:盤根目錄中功閱卷使用,否則不予評分。二編程題(24分)【程序功能】輸入兩個自然數(shù)P和Q(P<Q),找出滿足下列條件的整數(shù)組(K,M,N)。P≤K<M≤QK*K+M*M=N*N【編程要求】1.編寫函數(shù)intchlm(intp,intq,inta[][3])實現(xiàn)以下功能:查找K,M在[p,q]范圍內(nèi)取值且滿足以上條件的所有整數(shù)組(K,M,N)。若找到則將這些整數(shù)組保存到a指向的數(shù)組中,函數(shù)返回找到的整數(shù)組的組數(shù)。若找不到則函數(shù)返回0。2.編寫函數(shù)main實現(xiàn)以下功能:聲明二維數(shù)組a和變量p、q,輸入兩個自然數(shù)并保存到p和q中(p<q),調(diào)用chlm函數(shù)在[p,q]范圍內(nèi)查找滿足以上條件的整數(shù)組。若找不到則在屏幕上輸出“outfound”,否則將查找結(jié)果保存到a數(shù)組中,輸出a數(shù)組數(shù)據(jù)到屏幕及文件myf2.out中。最后將考生本人的準考證號輸出到文件myf2.out中?!緶y試數(shù)據(jù)及運行結(jié)果】輸入:p=12q=38輸出121620123537152025153639163034182430202129212835243240243645【要求】源程序文件為myf2.c,輸出結(jié)果文件名myf2.out。數(shù)據(jù)文件的打開、使用、關(guān)閉均使用C語言標準庫中緩沖文件系統(tǒng)操作函數(shù)實現(xiàn)。源程序文件和運行結(jié)果均需要保存T:盤根目錄中供閱卷使用。不要復(fù)制擴展名為obj和exe的文件到T:盤中。2江蘇省高等高等學(xué)校非計算機專業(yè)學(xué)生計算機基礎(chǔ)知識和應(yīng)用能力等級考試上機試卷二級C語言(本試卷完成時間70分鐘)一改錯題(16分)【程序功能】函數(shù)dtoh實現(xiàn)將參數(shù)num的值表示為一個十六進制形式的字符串,并將該字符串存儲在一個動態(tài)申請的存儲區(qū)內(nèi),函數(shù)返回動態(tài)存儲區(qū)的起始地址?!緶y試數(shù)據(jù)及運行結(jié)果】輸入:1234輸出:4d2含有錯誤的源程序#include<stdio.h>#include<stdlib.h>chardtoh(unsignednum){chardigits[]=”0123456789abcdef”;char*s;intn=0;unsignedun=num;while(un){n++;un/=16;}s=(char*)malloc((n+1)*sizeof(char));if(s==null){printf(“Memoryrequestfailed!\n”);exit(1);s[n--]=”\0”;while(num){s[n--]=digits[num/16];/*取一位十六進制數(shù)字字符*/num/=16;returns;voidmain(){char*p;unsignedn;scanf(“%u”,&n);p=dtoh(n);printf(“%s”,p);free(p);getch();【要求】將上述程序錄入到文件myf1.c中,根據(jù)題目要求及程序中語句之間的邏輯關(guān)系對程序中的錯誤進行修改。改錯時,可以修改語句中的一部內(nèi)容,調(diào)整語句次序,增加少量的變量說明或編譯預(yù)處理命令,但不能增加其他語句,也不能刪去整條語句。改正后的源程序(文件名myf1.c)保存在T:盤根目錄共閱卷使用,否則不予評分。二、編程題(24分)【程序功能】在給定的范圍內(nèi)查找并輸出所有滿足以下條件的整數(shù)對(a,b)及及(a,b)關(guān)聯(lián)的反序數(shù)對(c,d):(1)a小于b:(2)a和b的十進制表示均是三位數(shù)且各位上的數(shù)字互不相同;(3)a的反序數(shù)(記作c)和b的反序數(shù)(記作d)也都是三位數(shù)并且a×b等于c×d。例如,及整數(shù)對(302,406)關(guān)聯(lián)的反序數(shù)對是(203,604),302×406=203×604,因此(302,406)是滿足上述條件的整數(shù)對?!揪幊桃蟆烤帉懞瘮?shù)intfind(intx[][4],intm,intn)實現(xiàn)以下功能:若m和n的十進制表示不是三位數(shù)則函數(shù)返回0。否則,將取值在[m,n]范圍內(nèi)所有滿足上述條件的整數(shù)對以及及這些整數(shù)對關(guān)聯(lián)的反序數(shù)對保存到x指向的二維數(shù)組中,函數(shù)返回x數(shù)組中保存的數(shù)據(jù)行數(shù)。編寫函數(shù)main實現(xiàn)以下功能:聲明一個100行4列的二維數(shù)組a,用a數(shù)組作實參調(diào)用find函數(shù)在[300,450]范圍內(nèi)查找,將找到的滿足上述條件的整數(shù)對及關(guān)聯(lián)的反序數(shù)對保存到a數(shù)組。按以下格式將a數(shù)組中數(shù)據(jù)輸出到屏幕及文件myf2.out中。最后將考生本人準考證輸出到文件myf2.out中?!緶y試數(shù)據(jù)及運行結(jié)果】輸出:301*309=103*903302*406=203*604304*403=403*304306*402=603*204312*426=213*624314*413=413*314321*369=123*963324*423=423*324402*408=204*804412*428=214*824【要求】源程序文件為myf2.c,輸出結(jié)果文件名myf2.out。數(shù)據(jù)文件的打開、使用、關(guān)閉均使用C語言標準庫中緩沖文件系統(tǒng)操作函數(shù)實現(xiàn)。源程序文件和運行結(jié)果均需要保存T:盤根目錄中供閱卷使用。不要復(fù)制擴展名為obj和exe的文件到T:盤中。3江蘇省高等高等學(xué)校非計算機專業(yè)學(xué)生計算機基礎(chǔ)知識和應(yīng)用能力等級考試上機試卷二級C語言(本試卷完成時間70分鐘)一、改錯題(16分)【程序功能】對一個二維數(shù)組中的數(shù)據(jù)排序。排序規(guī)則如下:將整個數(shù)組中值最小的元素所在行調(diào)整為數(shù)組第1行(行下標為0),將除第1行外剩余行中值最小的元素所在行調(diào)整為數(shù)組第2行,將除第1、2行外剩余行中值最小的元素所在行調(diào)整為數(shù)組第3行,其他依此類推。【測試數(shù)據(jù)及運行結(jié)果】數(shù)組初始化數(shù)據(jù):輸出:34568210821012345432543212343456【含有錯誤的源程序】#include“stdio.h”intgetmin(inta[],intn){inti,min=a[0];for(i=1;i<n;i++)if(a[i]>min)min=a[i];returnmin;voidlinesa[],intb[],int*n){inti,t;for(i=0;i<n;i++){t=a[i];a[i]=b[i];b[i]=t;}voidmain(){inta[4]={{3,4,5,6},{8,2,1,0},{5,4,3,2},{1,2,3,4}},i,j;for(i=0;i<3;i++){for(j=1;j<4;j++){if(getmin(a[j],4)<getmin(a[i],4)lineswap(a[j],,inta[i],4);for(i=0;i<4;i++){for(j=0;j<4;j++)printf(“%d“,a[i][j]);printf”\n”);}getch();【要求】將上述程序錄入到文件myf1.c中,根據(jù)題目要求及程序中語句之間的邏輯關(guān)系對程序中的錯誤進行修改。改錯時,可以修改語句中的一部分內(nèi)容,調(diào)整語句次序,增加少量的變量說明或編譯預(yù)處理命令,但不能增加其他語句,也不能刪去整條語句。改正后的源程序(文件名為myf1.c)保存在T:盤根目錄中功閱卷使用,否則不予評分。二、編程題(24分)【程序功能】計算由兩個整數(shù)生成的兩個合法代碼的碼距。這里的合法代碼定義為由16個二進制數(shù)字字符組成的字符串。例如“00101”是一個合法代碼。碼距是指兩個合法代碼中對應(yīng)位數(shù)字字符不同的位數(shù)。例如,合法代碼”00101”和”01110”自又向左1、2、4、6位上具有不同數(shù)字字符,因此這兩個合法代碼的碼距為4?!揪幊桃蟆烤帉懞瘮?shù)inthamming(intx,inty,chara[],charb[])實現(xiàn)以下功能:先將形參x和y分別轉(zhuǎn)換為2個合法代碼并按從低位到高位的順序分別保存2個合法代碼到a和b指向的數(shù)組中(不足16位時高位補字符0)再計算a數(shù)組和b數(shù)組中的兩個合法代碼的碼距,函數(shù)返回該碼距。編寫函數(shù)main實現(xiàn)以下功能:聲明字符數(shù)組a、b和變量m、n,輸入兩個整數(shù)并保存到m和n中,若m、n的值在0~32767范圍內(nèi)則用m、n和數(shù)組a、b作實參調(diào)用hamming函數(shù),計算由m和n生成的兩個合法代碼的碼距,將a、b數(shù)組中存儲的合法代碼及這兩個代碼的碼距輸出到屏幕及文件myf2.out中。最后將考生本人的準考證輸出到文件myf2.out中。.【測試數(shù)據(jù)及運行結(jié)果】輸入:m=16n=38輸出:a:10000b:01000distanceof16and8is2【要求】源程序文件為myf2.c,輸出結(jié)果文件名myf2.out。數(shù)據(jù)文件的打開、使用、關(guān)閉均使用C語言標準庫中緩沖文件系統(tǒng)操作函數(shù)實現(xiàn)。源程序文件和運行結(jié)果均需要保存T:盤根目錄中供閱卷使用。不要復(fù)制擴展名為obj和exe的文件到T:盤中。4江蘇省高等高等學(xué)校非計算機專業(yè)學(xué)生計算機基礎(chǔ)知識和應(yīng)用能力等級考試上機試卷二級C語言(本試卷完成時間70分鐘)一、改錯題(16分)【程序功能】將一個實數(shù)轉(zhuǎn)換為二進制科學(xué)計數(shù)法表示并輸出。二進制科學(xué)記數(shù)法是指將一個絕對值大于2或者小于1的實數(shù)記為a×2±n形式,其中尾數(shù)a是用二進制表示的實數(shù)且1≤|a|<2,指數(shù)中的n是用二進制表示的整數(shù)。例如:0.125的科學(xué)計算法表示是1.0×2-11若用B代表基數(shù)2,則a×2±n可表示為aB±n的形式。例如,1.0×2-11表示1.0B-11?!緶y試數(shù)據(jù)及運行結(jié)果】第一次運行時輸入:0輸出:0.0B0第二次運行時輸入:0.125輸出:1.0B-11第三次運行時輸入:315輸出:1.00111011B+1000【含有錯誤的源程序】#include<stdio.h>voidoutBinary(intx){if(x/2)outBinary(x/2);printf(“%d”,x%2);voidoutFloatBinary(floatx){inte=0;if(x==0){puts(0.0B0);return;if(x<0{putchar(‘-‘);x=-x;}while(x>=2.0){e++;x/=2;}while(x<1.0){e++;x*=2;}printf(“1.”);x=(x-(int)x)*2;do{printf(“%d”,x);x=(x-(int)x)*2;}while(x!=0);if(e=0)printf(“B0”);elseif(e>0){printf(“B+”);outBinary(e);}else{printf(“B-”);outBinary(-e);}printf(“\n”);voidmain(){floata;scanf(“%f”,&a);outFloatBinary(a);getch();【要求】將上述程序錄入到文件myf1.c中,根據(jù)題目要求及程序中語句之間的邏輯關(guān)系對程序中的錯誤進行修改。改錯時,可以修改語句中的一部分內(nèi)容,調(diào)整語句次序,增加少量的變量說明或編譯預(yù)處理命令,但不能增加其他語句,也不能刪去整條語句。改正后的源程序(文件名為myf1.c)保存在T:盤根目錄中功閱卷使用,否則不予評分。二、編程題(24分)【程序功能】求3000以內(nèi)的親密數(shù)對.如果A的全部真因子(包括1,不包括A自身)之和等于B;B的全部真因子之和等于A,則稱整數(shù)A和B為一對親密數(shù)?!揪幊桃蟆烤帉懞瘮?shù)intfrinum(longs[][2],longn)實現(xiàn)如下功能:找到2~n分范圍內(nèi)的所有親密數(shù)對,將這些親密數(shù)對保存到s指向的二維數(shù)組中。返回函數(shù)s數(shù)組中存儲的親密數(shù)對的對數(shù)。編寫函數(shù)main實現(xiàn)以下功能:聲明二維數(shù)組s和變量n,輸入一個正整數(shù)并保存到n中,用二維數(shù)組s和變量n作為實參調(diào)用frinum函數(shù),將n以內(nèi)的所有的親密數(shù)對輸出到屏幕及文件myf2.out中。最后將考生本人的準考證輸出到文件myf2.out.【測試數(shù)據(jù)及運行結(jié)果】輸入:n=3000輸出:(220,284)(1184,1210)(2620,2924)【要求】源程序文件為myf2.e,輸出結(jié)果文件名myf2.out。數(shù)據(jù)文件的打開、使用、關(guān)閉均使用C語言標準庫中緩沖文件系統(tǒng)的文件操作函數(shù)實現(xiàn)。源程序文件和運行結(jié)果均需要保存T:盤根目錄中供閱卷使用。不要復(fù)制擴展名為obj和exe的文件到T:盤中。5江蘇省高等高等學(xué)校非計算機專業(yè)學(xué)生計算機基礎(chǔ)知識和應(yīng)用能力等級考試上機試卷二級C語言(本試卷完成時間70分鐘)一、改錯題(16分)【程序功能】函數(shù)replace的功能是用s2指向的字符串替換s1指向的字符串中第n個字符(下標為n-1)之后到第m個字符(下標為m-1)之前的m-n-1個字符組成的字串(m>n+1)。例如,若s1指向的字符串為“abcd”、s2指向的字符串為“xyz”、n=1、m=3,則執(zhí)行替換操作后s1指向的字符串為“axyzcd”?!緶y試數(shù)據(jù)及運行結(jié)果】顯示:s1=qwertyuiops2=zxcinputn,m;輸入:19輸出:qzxcop【含有錯誤的源程序】#include<stdio.h>#include<string.h>voidreplace(chars1[],intn,intm,chars2[]){chars[80]inti,j,len1,len2,len;len1=strlen(s1);len2=strlen(s2);if(m>n+1&&n<len1&&m<=len1){for(i=0;i<n;i++)s[i]=s1[i];for(j=0;j<len2;j++,i++)s[i]=s2[j];s[i]=’\0’;len=strlen(s);for(i=0;s1[m-1+i]!=’\0’;i++)s[len+i]=s1[m-1+i];s[len+i]=‘\0’;for(i=0;s[i]!=’\0’;i++)s[i]=s1[i];s1[i]=’\0’;voidmain(){chars1[80]=”qwertyuiop”,s2[20]=”zxc”;intn,m;puts(“s1=%ss2=%s\n”,s1,s2);puts(“inputn,m:”);scanf(“%d%d”,n,m);replace(s1,n,m,s2);puts(s1);getch();【要求】將上述程序錄入到文件myf1.c中,根據(jù)題目要求及程序中語句之間的邏輯關(guān)系對程序中的錯誤進行修改。改錯時,可以修改語句中的一部分內(nèi)容,調(diào)整語句次序,增加少量的變量說明或編譯預(yù)處理命令,但不能增加其他語句,也不能刪去整條語句。改正后的源程序(文件名為myf1.c)保存在T:盤根目錄中功閱卷使用,否則不予評分。二、編程題(24分)【程序功能】用烏勒姆公式an=n2-n+41(n=1,2,…,m)生成一個數(shù)列的前m項并找出其中的回文數(shù)。【編程要求】編寫函數(shù)intnumseq(longa[],longb[],intm)實現(xiàn)以下功能:用烏勒姆公式生成一個數(shù)列的前m項并保存到a指向的數(shù)組中,從a數(shù)組中找出所有回文數(shù)保存到b指向的數(shù)組中,函數(shù)返回b數(shù)組中回文數(shù)個數(shù)。編寫函數(shù)main實現(xiàn)以下功能:聲明一維數(shù)組a,b和變量m;輸入數(shù)列的項數(shù)并保存到m,用數(shù)組a、b和變量m作為實參調(diào)用numseq函數(shù),將生成的數(shù)列前m項以及其中的回文數(shù)分別保存到a和b數(shù)組中;按每行10個數(shù)據(jù)的格式將a、b數(shù)組中的數(shù)據(jù)輸出到屏幕及文件myf2.out中。最后將考生本人的準考證輸出到文件myf2.out?!緶y試數(shù)據(jù)及運行結(jié)果】輸入:m=20輸出:a:4143475361718397113131151173197223251281313347383421b:131151313383【要求】源程序文件為myf2.c,輸出結(jié)果文件名myf2.out。數(shù)據(jù)文件的打開、使用、關(guān)閉均使用C語言標準庫中緩沖文件系統(tǒng)的文件操作函數(shù)實現(xiàn)。源程序文件和運行結(jié)果均需要保存T:盤根目錄中供閱卷使用。不要復(fù)制擴展名為obj和exe的文件到T:盤中。6江蘇省高等高等學(xué)校非計算機專業(yè)學(xué)生計算機基礎(chǔ)知識和應(yīng)用能力等級考試上機試卷二級C語言(本試卷完成時間70分鐘)一、改錯題(16分)【程序功能】已知指針數(shù)組name保存了n個字符串的首地址。以下程序通過調(diào)整指針數(shù)組元素的值實現(xiàn)按字典序?qū)個字符串排序;輸出排序后指針數(shù)組各元素指向的字符串;刪除指針數(shù)組中以元音字母開頭的所有字符串首地址;輸出指針數(shù)組各元素指向的字符串?!緶y試數(shù)據(jù)及運行結(jié)果】數(shù)組初始化數(shù)據(jù):{“Mary”,”George”,”Andy”,”Tom”,”Iris”}輸出:AndyGeorgeIrisMaryTomGeorgeMaryTom【含有錯誤的源程序】#include<stdio.h>#include<string.h>#include<ctype.h>voidsort(char*name[],intn){char*ptr;inti,j,k;for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++)if(strcmp(name[k],name[j]>0)k=j;if(k==i)ptr=name[i],name[i]=name[k],name[k]=ptr;intdelstr(char*name[],intn){inti,j,k;charc,s[5]={‘A’,’E’,’O’,’I’,’U’},*P;for(i=0;i<n;i++){p=name[i];c=p;c=toupper(c);/*toupper(c):若c是小寫則返回對應(yīng)大寫字母,否則返回c原值*/for(k=0;k<5;k++)if(c==s[k]break;if(k>=5){for(j=i;j<n-1;j++)name[j]=name[j+1];n--;i--;returnn;voidprint(char*name[],intn){inti;for(i=0;i<n;i++)printf(“%s“,name[i]);printf(“\n”);voidmain(){intn=5;char*name[n]={“Mary”,”George”,”Andy”,”Tom”,”Iris”};sort(name,n);print(name,n);n=delstr(name,n);print(name,n);getch();【要求】將上述程序錄入到文件myf1.c中,根據(jù)題目要求及程序中語句之間的邏輯關(guān)系對程序中的錯誤進行修改。改錯時,可以修改語句中的一部分內(nèi)容,調(diào)整語句次序,增加少量的變量說明或編譯預(yù)處理命令,但不能增加其他語句,也不能刪去整條語句。改正后的源程序(文件名為myf1.c)保存在T:盤根目錄中功閱卷使用,否則不予評分。二、編程題(24分)【程序功能】輸入兩個正整數(shù)x和y(2≤x<100,2≤y<1000,找出所有滿足下列條件的整數(shù)對(p,q):(1):p、q均為正整數(shù);(2):p、q的最大公約數(shù)等于x且最小公倍數(shù)等于y。提示:p、q的最小公倍數(shù)等于(p×q)/(p、q的最大公約數(shù))?!揪幊桃蟆烤帉懞瘮?shù)intnucoup(intx,inty,inta[][2])實現(xiàn)如下功能:查找所有最大公約數(shù)是x并且最小公倍數(shù)是y的整數(shù)對,若找到則保存這些整數(shù)對到a指向的的數(shù)組中,函數(shù)返回找到的整數(shù)對的個數(shù);若找不到則函數(shù)返回0。編寫函數(shù)main實現(xiàn)以下功能:聲明二維數(shù)組a變量x、y,輸入兩個整數(shù)并保存到x和y中,用x,y和a數(shù)組作為實參調(diào)用numcoup函數(shù),若找不到滿足以上條件的整數(shù)對則輸出“notfound”到屏幕,否則輸出a數(shù)組中數(shù)據(jù)到屏幕及文件myf2.out中。最后將考生本人的準考證號輸出到文件myf2.out?!緶y試數(shù)據(jù)及運行結(jié)果】輸入:x=4y=684輸出:468476366844【要求】源程序文件為myf2.e,輸出結(jié)果文件名myf2.out。數(shù)據(jù)文件的打開、使用、關(guān)閉均使用C語言標準庫中緩沖文件系統(tǒng)操作函數(shù)實現(xiàn)。源程序文件和運行結(jié)果均需要保存T:盤根目錄中供閱卷使用。不要復(fù)制擴展名為obj和exe的文件到T:盤中。7江蘇省高等高等學(xué)校非計算機專業(yè)學(xué)生計算機基礎(chǔ)知識和應(yīng)用能力等級考試上機試卷二級C語言(本試卷完成時間70分鐘)一、改錯題(16分)【程序功能】輸入一個正確日期且年份在1900-9999范圍內(nèi),計算并輸出該日期是星期幾。例如,若輸入2008-8-8,應(yīng)輸出Fri(星期五)。提示:1900年1月1日是Mon(星期一)。能被4整除并且不能被100整除的年份是閏年,能被400整除的年份也是閏年,其他年份則是平年?!緶y試數(shù)據(jù)及運行結(jié)果】第一次運行顯示:inputadate:輸入:1900-1-1輸出:Mon第二次運行顯示:inputadate:輸入:2008-8-8輸出:Fri【含有錯誤的源程序】#include<stdio.h>#defineleap(y)((y)%4=0&&(y)%400==0)||(y)%400==0)intweek(inty,intm,intd){staticintmon[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,31,31,30,31,30,31}};intyeard[2]={365,366},i;longtd=0;for(i=1900;i<y;i++)td+=yeard[leap(i)];for(i=0;i<m;i++)td+=mon[leap(y)][i];td+=d-1;returntd%7.0;voidmain(){inti,y,m,d;charwn[7]={Mon”,”Tue”,”Wed”,”Thu”,”Fri”,”Sat”,”Sun”};puts(“\ninputadate:”);scanf(“%d-%d-%d”,&y,&m,&d);puts(wn(week(y,m,d)));getch();【要求】將上述程序錄入到文件myf1.c中,根據(jù)題目要求及程序中語句之間的邏輯關(guān)系對程序中的錯誤進行修改。改錯時,可以修改語句中的一部分內(nèi)容,調(diào)整語句次序,增加少量的變量說明或編輯預(yù)處理命令,但不能增加其他語句,也不能刪去整條語句。改正后的源程序(文件名為myf1.c)保存在T:盤根目錄中供閱卷使用,否則不予評分。二、編程題(24分)【程序功能】實現(xiàn)包含一個變元x的多項式合并同類項操作。用結(jié)構(gòu)數(shù)組存儲一個多項式(一個數(shù)組元素存儲多項式的一項)。結(jié)構(gòu)數(shù)組元素的數(shù)據(jù)類型定義如下:typedefstruct{doublecoe;/*系數(shù)*/intexp;/*變元x的指數(shù)*/}TERM;例如:將多項式-3x2+5x+0.5x2+x-1-2x按如下形式存儲到一個結(jié)構(gòu)數(shù)組中。coe-350.51-1-2exp212101【編程要求】編寫函數(shù)intterm(TERMa[],TERMb[],intn)實現(xiàn)以下功能:對a指向的數(shù)組中保存的多項式實施合并同類項操作,n為a數(shù)組中多項式的項數(shù)。將合并同類項后得到的多項式保存到b指向的數(shù)組中。函數(shù)返回b數(shù)組中的多項式的項數(shù)。算法提示:可以先對a數(shù)組按exp值排序后再做合并同類項操作。編寫函數(shù)main實現(xiàn)以下功能:聲明TERM型數(shù)組x和y,x數(shù)組用于保存合并同類項前多項式各項的系數(shù)和指數(shù),y數(shù)組用于保存合并同類項后多項式各項的系數(shù)和指數(shù)。用x,y數(shù)組作為實參調(diào)用term函數(shù)。按所給輸出格式將y數(shù)組中的數(shù)據(jù)輸出到屏幕及文件myf2.out中。最后將考生本人的準考證輸出到文件myf2.out。【測試數(shù)據(jù)及運行結(jié)果】測試多項式:-3x2+5x+0.5x2+x-1-2x輸出:-2.5x^2+4.0x^1-1.0【要求】源程序文件為myf2.c,輸出結(jié)果文件名myf2.out。數(shù)據(jù)文件的打開、使用、關(guān)閉均使用C語言標準庫中緩沖文件系統(tǒng)操作函數(shù)實現(xiàn)。源程序文件和運行結(jié)果均需要保存T:盤根目錄中供閱卷使用。不要復(fù)制擴展名為obj和exe的文件到T:盤中。2010年秋江蘇二級C上機真題江蘇省高等學(xué)校非計算機專業(yè)學(xué)生計算機基礎(chǔ)知識和應(yīng)用能力等級考試上機試卷(2010年秋)二級C語言(試卷代號C01)(本試卷完成時間70分鐘)一、改錯題(16分)【程序功能】查找介于n1及n2(O<n1<n2<32768)之間所有滿足下列條件的整數(shù):(1)該數(shù)的十進制表示中有且僅有兩個相同的數(shù)字位;(2)該數(shù)是素數(shù)?!緶y試數(shù)據(jù)及運行結(jié)果】測試數(shù)據(jù):n1=900n2=1200屏幕輸出:91191992997799199710091013101910211031103310511061109111031109112311291153116311871193【含有錯誤的源程序】#inelude<stdio.h>#include<math.h>intvalidate(intn){inti,j,k=0,num[5]={0},size=0;do{num[size]=n%10;n=n/10;size++;}while(n<0);for(i=0;i<size-1;i++)for(j=i+1;j<size;j++)if(num[i]==num[j])k=k+1;if(k>1)return1;elsereturn0;intprime(int){inti;for(i=2;i<=(int)sqrt(n);i++)if(n%i==0)retum0;return1;voidmain(){inti,count=0,n1,n2;scanf("%d%d",&n1,&n2);for(i=n1;i<=n2;i++){if(validate(inti)&&prime(inti)){count++;printf("%d\t",i);if(count%8==0)printf("\n");【要求】1.將上述程序錄入到文件myf1.C中,根據(jù)題目要求及程序中語句之間的邏輯關(guān)系對程序中的錯誤進行修改。2.改錯時,可以修改語句中的一部分內(nèi)容,調(diào)整語句次序,增加少量的變量說明或編譯預(yù)處理命令,但不能增加其他語句,也不能刪去整條語句。3.改正后的源程序(文件名myf1.c)保存在T:盤根目錄中供閱卷使用,否則不予評分。二、編程題(24分)【程序功能】字符串變換?!揪幊桃蟆?.編寫函數(shù)voidchange(char*a,char*b,char*c)。函數(shù)功能是首先把b指向的字符串逆向存放,然后將a指向的字符串和b指向的字符串按排列順序交叉合并到c指向的數(shù)組中,兩個字符串中過長的剩余字符接在c指向數(shù)組的尾部。例如,當a指向的字符串為"abcdefg",b指向的字符串為"1324"時,C指向的數(shù)組中字符串應(yīng)為"a4b2c3dlefg"。2.編寫main函數(shù)。函數(shù)功能是聲明字符型數(shù)組s1、s2和t,用測試數(shù)據(jù)初始化數(shù)組s1和s2,再用s1、s2和t作為實參調(diào)用函數(shù)change,將數(shù)組s1、s2和t中的字符串輸出到屏幕及文件myf2.out中。最后將考生本人的準考證號字符串輸出到文件myf2.out中。【測試數(shù)據(jù)及運行結(jié)果】測試數(shù)據(jù):s1:abcdefgs2:1324屏幕輸出:s1:abcdefgs2:4231Theresultis:a4b2c3dlefg【要求】1.源程序文件名為myf2.c,輸出結(jié)果文件名為myf2.out。2.數(shù)據(jù)文件的打開、使用、關(guān)閉均用C語言標準庫中緩沖文件系統(tǒng)的文件操作函數(shù)實現(xiàn)。3.源程序文件和運行結(jié)果文件均需保存在T:盤根目錄中供閱卷使用4.不要復(fù)制擴展名為obj和exe的文件到T:盤中。2010春江蘇二級C上機試題

二級

C語言上機試卷

(本試卷完成時間為70分鐘)

一、改錯題(16分)

【程序功能】

驗證3(n范圍內(nèi)的任意兩個相鄰素數(shù)的平方之間至少存在4個素數(shù)。例如,5和7是兩個相鄰素數(shù),5^2(25)及7^2(49)之間存在6個素數(shù):293137414347。

【測試數(shù)據(jù)及運行結(jié)果】

顯示:inputn:

輸入:10

輸出:

3~5

k=5

11

13

17

19

23

5~7

k=6

29

31

37

41

43

47

【含有錯誤的源程序】

#include<stdio.h>

樣include<math.h>

intprime(intn)

{inti,flag=1;

for(i=1;i<=sqrt(n);i++)

if(n%i==0)flag=0;

returnflag;

intfun(inta[],intn)

{inti,k=0;

for(i=3;i<=n;i++)

if(prime(i))a[k++]=i;

returnk;’

voidfun1(intm,intn,intb[])

{

inti,k=0;

if(m>n)return0;

for(i=m*m;i<n*n;i++)

if(prime(i))b[k++]=i;

returnk;

voidmain()

{inta[50]={0},b[100]={0},i,m,k,j,n;

printf("inputn:");

scanf("%d",&n);

m=fun(a,n);

for(i=O;i<m-1;i++)

{k=fun1(a,a[i+1],b[O]);

printf("%d~%d

k=%d",a,a[i+1],k);

if(k<4){printf("false");break;}

for(j=0;j<k;j++)

{if(j%10=O)prinff("\n");

printf("%5d",b[j]);

printf("\n");

getch();

【要求】

1.將上述程序錄入到文件myf1.c中,根據(jù)題目要求及程序中語句之間的邏輯關(guān)系對程序中的錯誤進行修改。

2.改錯時,可以修改語句中的一部分內(nèi)容,調(diào)整語句次序,增加少量的變量說明或編譯預(yù)處理命令,但不能增加其它語句,也不能刪去

溫馨提示

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

評論

0/150

提交評論