2023年上海市計算機二級考試C語言試題_第1頁
2023年上海市計算機二級考試C語言試題_第2頁
2023年上海市計算機二級考試C語言試題_第3頁
2023年上海市計算機二級考試C語言試題_第4頁
2023年上海市計算機二級考試C語言試題_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

PAGEPAGE13B試卷1、以下程序的功能是:輸入任意整數(shù)n〔0<n<10〕,輸出n行由大寫字母A開始構成的三角形字符陣列圖形,例如,輸入整數(shù)6時,程序運行結果如下:請?zhí)羁胀瓿稍摮绦颉?include<stdio.h>main(){inti,j,n;char(1);printf("Pleaseinputn:");scanf("%d",&n);for(i=1;i<=n;i++){for(j=1;(2);j++){printf("%2c",ch);(3);}(4);}}2.以下程序的功能是:從一個字符串中截取前面給定長度的子字符串。其中,str1指向原字符串,截取后的字符存放在str2所指的字符數(shù)組中,n中存放需截取的字符個數(shù)。例如,str1="ABCDEF",n=4,截取后的字符數(shù)組str2="ABCD"。請?zhí)羁胀瓿稍摮绦颉?include<stdio.h>#include<conio.h>#defineLEN80main(){ charstr1[LEN],str2[LEN]; intn,i; printf("輸入字符串:\n"); gets(str1); printf("輸入子字符串的長度:");scanf("%d",(1)); for(i=0;i<n;i++)(2); str2[i]=(3); printf("子字符串是:%s\n",(4));}〔一〕程序調試題〔3小題,第1、2小題各3處錯,第3小題4處錯,每改正1處得3分,共30分〕1.程序調試題1調試要求:以下程序包含3個錯誤,請按題中的功能要求,調試并修改該程序(在所修改語句后加/***/字樣的注釋),使其運行能得到正確的結果。將結果〔包括B_3_1.C文件和B_3_1.EXE文件〕保存到目錄C:\KS\中。功能說明:程序的功能是輸入一個正整數(shù),判斷該數(shù)從高位到低位各位數(shù)字是否按值從小到大排列并輸出相應提示。例如,輸入12234,那么輸出各位數(shù)字是從小到大排列。又如,輸入12354,那么輸出各位數(shù)字不是從小到大排列。帶錯誤原程序〔見C:\KS\B_3_1.C〕:#include<stdio.h>intmain(){ intn,k,a; printf("請輸入一個正整數(shù):"); scanf("%d",n); k=1;do{a=n%10; n=n/10; if(n%10<=a)k=0; }while(n!=0);if(k=1) printf("各位數(shù)字是從小到大排列\(zhòng)n"); else printf("各位數(shù)字不是從小到大排列\(zhòng)n"); return0;}2.程序調試題2調試要求:以下程序包含3個錯誤,請按題中的功能要求,調試并修改該程序(在所修改語句后加/***/字樣的注釋),使其運行能得到正確的結果。將結果〔包括B_3_2.C文件和B_3_2.EXE文件〕保存到目錄C:\KS\中。功能說明:輸入一個以回車符結束的字符串〔少于30個字符〕,假設其中的第偶數(shù)個字符是小寫英文字母,那么轉換成對應的大寫英文字母,最后輸出處理后的字符串。例如輸入:jdk-7u25-win7<回車>,那么輸出:jDk-7U25-WiN7。帶錯誤原程序〔見C:\KS\B_3_2.C〕:#include<stdio.h>#include<string.h>intmain(){ charstr[30]; inti,n; printf("請輸入一個字符串:"); gets(&str); n=strlen(str); for(i=0;i<n;i+=2) if(str[i]>='a'&&str[i]<='z') str[i]=str[i]+('a'-'A'); puts(str); return0;}3.程序調試題3調試要求:以下程序包含4個錯誤,請按題中的功能要求,調試并修改該程序(在所修改語句后加/***/字樣的注釋),使其運行能得到正確的結果。將結果〔包括B_3_3.C文件和B_3_3.EXE文件〕保存到目錄C:\KS\中。功能說明:以下程序的數(shù)組t中存放了某城市7月15日到8月15日共32天每一天的日最高氣溫,程序的功能是統(tǒng)計并輸出最高溫度到達40℃或以上的超高溫天的天數(shù),以及最高溫度在35℃或以上的連續(xù)高溫天最多有多少天。針對程序中給出的原始數(shù)據(jù),程序應輸出:最高溫度到達40℃或以上的超高溫天有6天最高溫度在35℃或以上的連續(xù)高溫天最多有12天帶錯誤原程序〔見C:\KS\B_3_3.C〕:#include<stdio.h>intfun(inta[],intn,int*p){inti,c=d40=d=0;for(i=1;i<n;i++){if(a[i]>=35){c++;if(c>d)d=c;if(a[i]>=40)d40++;}elsec=0;}p=d; returnd40;}intmain(){intt[32]={40,36,34,35,36,37,36,37,38,40,39,38,37,36,34,36,37,38,36,34,36,37,38,39,40,40,41,40,39,38,37,36};intd40,d; d40=fun(t,32,d); printf("最高溫度到達40℃或以上的超高溫天有%d天\n",d40); printf("最高溫度在35℃或以上的連續(xù)高溫天最多有%d天\n",d); return0;}〔二〕編程題〔2小題,共35分,其中第1小題15分,第2小題20分〕1.編程題1編程要求:請按題中的功能要求,編寫程序并能得到正確的結果。將結果〔包括B_4_1.c文件和B_4_1.EXE文件〕保存到目錄C:\KS\中。程序功能:輸入整數(shù)n〔設1000≤n≤9999〕,將n按十進制位分解為各乘式的累加和,格式參見例如,不輸出系數(shù)為0的乘式。運行例如1:輸入:1234輸出:1234=1*1000+2*100+3*10+4*1運行例如2:輸入:2030輸出:2030=2*1000+3*102.編程題2編程要求:請按題中的功能要求,編寫程序并能得到正確的結果。將結果〔包括B_4_2.c文件和B_4_2.EXE文件〕保存到目錄C:\KS\中。程序功能:按例如格式完成以下要求?!?〕輸入10個整數(shù),保存在數(shù)組中。〔2〕計算并輸出10個整數(shù)的最小值〔注:數(shù)組中可能存在多個最小值〕。〔3〕輸出數(shù)組中每個最小值的下一個元素及其下標〔如果數(shù)組的最后一個元素正好為最小值,不輸出該元素的下一個元素〕?!?〕計算并輸出上述元素的平均值〔保存小數(shù)點后一位小數(shù),如果數(shù)組只有一個最小值且正好是最后一個元素,不輸出平均值〕運行例如1:輸入:9020010361輸出:min=0,a[2]=2,a[4]=0,a[5]=1,a[7]=3,ave=1.5說明:10個元素的最小值為0,共出現(xiàn)4次,元素0的下一個元素依次為2、0、1、3,這4個元素的平均值為1.5。運行例如2:輸入:60398190603990707839輸出:min=39,a[2]=81,a[6]=90,ave=85.5說明:10個元素的最小值為39,共出現(xiàn)3次,元素39的下一個元素依次為81、90〔最后一個39不存在下一個元素〕,81與90的平均值為85.5。運行例如3:輸入:902001036-1輸出:min=-1說明:最小值為-1,是最后一個元素且只出現(xiàn)一次,不存在下一個元素,也沒有平均值。C試卷1、以下程序的功能是:將十進制正整數(shù)m轉換成k進制(2≤k≤9)數(shù)的數(shù)字輸出。例如,假設輸入18和2,那么應輸出10010(即十進制數(shù)18轉換成二進制表示是10010)。#include<stdio.h>voidfun(intm,intk){inta[20],i;for(i=0;m>0;i++){a[i]=_____(1)____m/=k;}for(;i>0;_____(2)_____)printf("%d",_____(3)_____);}main(){intb,n;printf("\nPleaseenteranumberandabase:\n");scanf("%d%d",&n,&b);fun(_____(4_____);}以下程序的功能是:輸出以下10行10列的矩陣。請?zhí)羁胀瓿稍摮绦颉?include<stdio.h>voidfill(intb[10][10],intn)/*按1,2,3,4,5順序依次填充數(shù)組內容*/{inti,j;for(i=n-1;i<11-n;i++) for(j=n-1;j<(1);j++) b[i][j]=(2);}intmain(){inta[10][10],k,i,j;for(k=1;(3);k++) fill((4));for(i=0;i<10;i++){for(j=0;j<10;j++)printf("%3d",a[i][j]);printf("\n");}return0;}〔一〕程序調試題〔3小題,第1、2小題各3處錯,第3小題4處錯,每改正1處得3分,共30分〕1.程序調試題1調試要求:以下程序包含3個錯誤,請按題中的功能要求,調試并修改該程序(在所修改語句后加/***/字樣的注釋),使其運行能得到正確的結果。將結果〔包括C_3_1.C文件和C_3_1.EXE文件〕保存到目錄C:\KS\中。功能說明:Fibonacci數(shù)列的前兩項均為1,從第三項開始它的值都為它的前兩項的和。程序的功能是輸出Fibonacci數(shù)列前18項每一項的值,不要多輸出一項,也不要少輸出一項,要求每一行輸出6個數(shù),輸出結果為:112358132134558914423337761098715972584帶錯誤原程序〔見C:\KS\C_3_1.C〕:#include<stdio.h>intmain(){ longfib1=fib2=1,fib3; intn; printf("%6ld%6ld",fib1,fib2); for(n=1;n<=18;n++) { fib3=fib1+fib2;printf("%6ld",fib3);if(n%6=0)printf("\n");fib1=fib2;fib2=fib3;} return0;}2.程序調試題2調試要求:以下程序包含3個錯誤,請按題中的功能要求,調試并修改該程序(在所修改語句后加/***/字樣的注釋),使其運行能得到正確的結果。將結果〔包括C_3_2.C文件和C_3_2.EXE文件〕保存到目錄C:\KS\中。功能說明:輸入一個以回車符結束的字符串〔少于30個字符〕,將其中的字符'-'替換為字符'+',所有的數(shù)字字符都替換為字符'#',最后輸出處理后的字符串。例如輸入:jdk-7u25-win7<回車>,那么輸出:jdk+#u##+win#。帶錯誤原程序〔見C:\KS\C_3_2.C〕:#include<stdio.h>intmain(){ charstr[30];inti; printf("請輸入一個字符串:"); gets(str[30]); for(i=0;str[i]!='\0';i++) { if(str[i]=='-') str[i]='+'; elseif(str[i]>='0'&&str[i]<='9') str[i]="#"; } puts(*str); return0;}3.程序調試題3調試要求:以下程序包含4個錯誤,請按題中的功能要求,調試并修改該程序(在所修改語句后加/***/字樣的注釋),使其運行能得到正確的結果。將結果〔包括C_3_3.C文件和C_3_3.EXE文件〕保存到目錄C:\KS\中。功能說明:入秋標志著夏秋季節(jié)完成轉換,氣候學上入秋的標準是必須要連續(xù)5天日平均氣溫低于22℃,那么這連續(xù)5天中的第一天為入秋日,程序的功能是判斷9月份是否入秋并輸出有關信息。假設入秋,那么輸出在哪一天入秋,否那么輸出9月沒有入秋。說明:以下程序的數(shù)組t中存放了某城市9月份一個月的日平均氣溫,數(shù)組t中下標為0的元素閑置而沒有利用,針對程序中給出的9月份一個月的日平均氣溫,入秋日為9月25日。帶錯誤原程序〔見C:\KS\C_3_3.C〕:#include<stdio.h>intfun(int*a,n){inti,c;for(i=1;i<=n;i++){if(a[i]<22){c++;if(c>5) returni-4;}elsec=0;} return0;}intmain(){intt[31]={0,25,26,30,28,27,25,26,20,18,18,23,23,22,23,22,21,20,21,20,24,26,25,24,23,21,20,18,21,21,23};intd; d=fun(*t,30);if(d==0) printf("9月沒有入秋\n");else printf("9月%d日開始入秋\n",d); return0;}〔二〕編程題〔2小題,共35分,其中第1小題15分,第2小題20分〕1.編程題1編程要求:請按題中的功能要求,編寫程序并能得到正確的結果。將結果〔包括C_4_1.c文件和C_4_1.EXE文件〕保存到目錄C:\KS\中。程序功能:輸入整數(shù)n〔設1000≤n≤9999〕,以類似讀數(shù)拼音的格式輸出該數(shù),拼音中"千、百、十"分別使用"Q、B、S"表示,格式要求參見例如。n為1000倍數(shù)時不輸出百位數(shù)、十位數(shù)與個位數(shù),n為100倍數(shù)時不輸出十位數(shù)與個位數(shù),n為10的倍數(shù)時不輸出個位數(shù)。運行例如1:輸入:1234輸出:1Q,2B,3S,4運行例如2:輸入:9008輸出:9Q,0B,0S,8運行例如3:輸入:5060輸出:5Q,0B,6S2.編程題2編程要求:請按題中的功能要求,編寫程序并能得到正確的結果。將結果〔包括C_4_2.c文件和C_4_2.EXE文件〕保存到目錄C:\KS\中。程序功能:按例如格式完成以下要求?!?〕輸入整數(shù)n〔設2≤n≤20〕,接著輸入n個整數(shù)〔保存在數(shù)組a中,設a[i]≥0〕?!?〕計算并輸出數(shù)組的最大值?!?〕輸出數(shù)組中每個最大值的前一個元素及其下標〔如果數(shù)組的第一個元素正好為最大值,不輸出該元素的前一個元素〕。〔4〕輸出上述元素的累加和。運行例如1:輸入:6812559025578255輸出:max=255,a[0]=81,a[2]=90,a[4]=78,sum=249說明:輸入n為6,接著輸入6個元素到數(shù)組中,最大值為255,元素255的前一個元素依次為81、90、78,這3個數(shù)的累加和為249。運行例如2:輸入:12995099604899844999695199輸出:max=99,a[1]=50,a[4]=48,a[7]=49,a[10]=51,sum=198說明:輸入n為12,接著輸入12個元素到數(shù)組中,最大值為99,第1個99不存在前一個元素,其余4個99的前一個元素依次為50、48、49、51,這4個數(shù)的累加和為198。D試卷1、以下程序的功能是:移動一維數(shù)組中的內容,假設數(shù)組中有n個整數(shù),要求把下標從m到n-1〔m≤n-1〕的數(shù)組元素平移到數(shù)組的前面。例如,一維數(shù)組中的原始內容為1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,m的值為7。移動后,一維數(shù)組中的內容應為8,9,10,11,12,13,14,15,1,2,3,4,5,6,7。#include<stdio.h>#defineN80voidfun(int*w,intm,intn){inti,j,t;for(i=m;(1);i++){/*數(shù)組各元素依次向后平移一個位置*/t=(2);for(j=n-2;j>=0;j--)w[j+1]=(3);w[0]=t;}}main(){inta[N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};inti,m,n=15;printf("Theoriginaldata:\n");for(i=0;i<n;i++)printf("%4d",a[i]);printf("\nEnterm:");scanf("%d",&m);fun((4));printf("\nTheresult:\n");for(i=0;i<n;i++)printf("%4d",a[i]);printf("\n");}以下程序的功能是:將字符串中下標為奇數(shù)的字符或ASCII碼為偶數(shù)的字符放入t所指數(shù)組中(規(guī)定第一個字符放在第0位中)。例如,字符串中的數(shù)據(jù)為:A2MN8XY,那么輸出應當是:2N8X。#include<stdio.h>#include<string.h>#defineN80voidfun(char*s,chart[]){inti,(1);for(i=0;i<strlen(s);i++)if(i%2||(2))t[j++]=s[i];t[j]=(3);}main(){chars[N],t[N];printf("\nPleaseenterstrings:");gets((4));fun(s,t);printf("\nTheresultis:%s\n",t);}〔一〕程序調試題〔3小題,第1、2小題各3處錯,第3小題4處錯,每改正1處得3分,共30分〕1.程序調試題1調試要求:以下程序包含3個錯誤,請按題中的功能要求,調試并修改該程序(在所修改語句后加/***/字樣的注釋),使其運行能得到正確的結果。將結果〔包括D_3_1.C文件和D_3_1.EXE文件〕保存到目錄C:\KS\中。功能說明:求兩個正整數(shù)的最大公約數(shù)最常用的方法是"輾轉相除法"。該方法是以兩數(shù)中較大的數(shù)除以較小的數(shù),得到的余數(shù)與原來較小的數(shù)構成新的一對數(shù),再以較大的數(shù)除以較小的數(shù),如此進行下去,直到余數(shù)為0為止,那么較小的數(shù)就是最大公約數(shù)。程序的功能是輸入兩個正整數(shù),輸出它們的最大公約數(shù)。例如,假設輸入的兩個正整數(shù)是21和49,那么輸出最大公約數(shù)是:7。帶錯誤原程序〔見C:\KS\D_3_1.C〕:#include<stdio.h>intmain(){ inta,b,c; printf("請輸入兩個正整數(shù):"); scanf("%d%d",&a,&b); if(a<b){c=a;a=b;b=c;} c=a%b;while(c=0){a=b; b=c; c=a\b; }printf("最大公約數(shù)是:%d\n",a); return0;}2.程序調試題2調試要求:以下程序包含3個錯誤,請按題中的功能要求,調試并修改該程序(在所修改語句后加/***/字樣的注釋),使其運行能得到正確的結果。將結果〔包括D_3_2.C文件和D_3_2.EXE文件〕保存到目錄C:\KS\中。功能說明:輸入一個以回車符結束的字符串〔少于30個字符〕,過濾掉所有的非數(shù)字字符后轉換成對應的十進制整數(shù)輸出〔不考慮整數(shù)溢出的情況〕。例如輸入:jdk-7u25-win7<回車>,那么輸出:n=7257。說明:字符串"jdk-7u25-win7"過濾掉所有的非數(shù)字字符后變成十進制字符串"7257",轉換成十進制整數(shù)是7257。帶錯誤原程序〔見C:\KS\D_3_2.C〕:#include<stdio.h>intmain(){ charstr[30]; inti,n; printf("請輸入一個字符串:"); gets(str); n=1; for(i=0;str[i]!='\0';i++) if('0'<=str[i]<='9') n=n*10+str[i]-0; printf("n=%d\n",n); return0;}3.程序調試題3調試要求:以下程序包含4個錯誤,請按題中的功能要求,調試并修改該程序(在所修改語句后加/***/字樣的注釋),使其運行能得到正確的結果。將結果〔包括D_3_3.C文件和D_3_3.EXE文件〕保存到目錄C:\KS\中。功能說明:入夏標志著春夏季節(jié)完成轉換,氣候學上入夏的標準是必須要連續(xù)5天日平均氣溫到達22℃或以上,那么這連續(xù)5天中的第一天為入夏日,程序的功能是判斷5月份是否入夏并輸出有關信息。假設入夏,那么輸出在哪一天入夏,否那么輸出5月沒有入夏。說明:以下程序的數(shù)組t中存放了某城市5月份一個月的日平均氣溫,數(shù)組t中下標為0的元素閑置而沒有利用,針對程序中給出的5月份一個月的日平均氣溫,入夏日為5月16日。帶錯誤原程序〔見C:\KS\D_3_3.C〕:#include<stdio.h>voidfun(inta[],intn){inti,c;c=0;for(i=1;i<=n;i++){if(a[i]>22){c++;if(c>=5) returni-5; else continue;}c=0;} return0;}intmain(){intt[32]={0,20,21,22,22,19,18,18,19,22,23,22,21,20,21,20,24,22,25,24,23,21,23,22,21,22,25,26,30,28,27,28};intd; d=fun(t[],31);if(d==0) printf("5月沒有入夏\n");else printf("5月%d日開始入夏\n",d); return0;}〔二〕編程題〔2小題,共35分,其中第1小題15分,第2小題20分〕1.編程題1編程要求:請按題中的功能要求,編寫程序并能得到正確的結果。將結果〔包括D_4_1.c文件和D_4_1.EXE文件〕保存到目錄C:\KS\中。程序功能:輸入整數(shù)n〔設10

溫馨提示

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

最新文檔

評論

0/150

提交評論