![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
2018年3月江蘇C改錯(cuò)題與填空題 |
2(改錯(cuò)題): 【要求】 1.打開(kāi)T盤(pán)中文件myf1.c,按以下程序功能改正文件中程序的錯(cuò)誤。 2.可以修改語(yǔ)句中的一部分內(nèi)容,調(diào)整語(yǔ)句次序,增加變量聲明或預(yù)處理命令,但不能增加其他語(yǔ)句,也不能刪去整條語(yǔ)句。 3.修改后的源程序仍保存在T盤(pán)myf1.c文件中,請(qǐng)勿改變myf1.c的文件名。 【程序功能】 以下程序中函數(shù)maxequalseq的功能是在a指向數(shù)組的前n個(gè)元素中存儲(chǔ)的一個(gè)整數(shù)序列中找出最長(zhǎng)等值子序列。將構(gòu)成最長(zhǎng)等值子序列的數(shù)據(jù)項(xiàng)值保存到num指向的變量中,函數(shù)返回最長(zhǎng)等值子序列的長(zhǎng)度。 【測(cè)試數(shù)據(jù)與運(yùn)行結(jié)果】 測(cè)試數(shù)據(jù):2,2,2,5,5,5,5,5,1,1,8,8,8,8,8,8,8,7,7,7 輸出:number=8, length=7 【含有錯(cuò)誤的源程序】 #include<stdio.h> #include<conio.h> void maxequalseq(int a[],int n,int *num) { int i,k=0,p[50][2],len; p[k][0]=a[0]; p[k][1]=1; for(i=1;i<n;i++) if(a[i]==a[i-1]) p[k][1]++; else { p[k++][0]=a[i]; p[k][1]=1; } *num=p[0][0]; len=p[0][1]; for(i=1;i<=k;i++) if(p[i][1]<len) { *num=p[i][0]; len=p[i][1]; } return len; } int main() { int x[20]={2,2,2,5,5,5,5,5,1,1,8,8,8,8,8,8,8,7,7,7}; int length,number; length=maxequalseq(x[20],20,&number); printf("number=%d,length=%d",number,length); getch(); return 0; } maxequalseq(x[20],20,&number)修改為maxequalseq(x,20,&number)@ void maxequalseq修改為int maxequalseq@ p[k++][0]=a[i]修改為p[++k][0]=a[i]@ p[i][1]<len修改為p[i][1]>len 3(編程題): 【要求】 1.打開(kāi)T盤(pán)中文件myf2.c,在其中輸入所編寫(xiě)的程序。 2.數(shù)據(jù)文件的打開(kāi)、使用、關(guān)閉均用C語(yǔ)言標(biāo)準(zhǔn)庫(kù)中緩沖文件系統(tǒng)的文件操作函數(shù)實(shí)現(xiàn)。 3.請(qǐng)勿改變myf2.c的文件名。 【程序功能】 矩陣變換并統(tǒng)計(jì)變換區(qū)域元素中素?cái)?shù)個(gè)數(shù)。 【編程要求】 1.編寫(xiě)int encode(int a[4][4])函數(shù)。函數(shù)功能是對(duì)a指向的二維數(shù)組中存儲(chǔ)的4╳4矩陣中包含主對(duì)角線元素在內(nèi)的左下三角區(qū)域內(nèi)每個(gè)元素的值做如下判斷和變換:若該數(shù)值是素?cái)?shù)則用大于該數(shù)值的最小素?cái)?shù)替換,否則保持原數(shù)值不變。函數(shù)返回包含主對(duì)角線元素在內(nèi)的左下三角區(qū)域內(nèi)的元素中素?cái)?shù)的個(gè)數(shù)。 2.編寫(xiě)main函數(shù)。函數(shù)功能是聲明一個(gè)二維數(shù)組并用測(cè)試數(shù)據(jù)初始化。用二維數(shù)組作實(shí)參調(diào)用encode函數(shù)對(duì)該數(shù)組中的矩陣作變換。將變換后的二維數(shù)組內(nèi)存儲(chǔ)的矩陣全部元素值及包含主對(duì)角線元素在內(nèi)的矩陣左下三角區(qū)域內(nèi)元素中素?cái)?shù)的個(gè)數(shù)輸出到屏幕及文件myf2.out中。最后將考生本人準(zhǔn)考證號(hào)輸出到文件myf2.out中。 【測(cè)試數(shù)據(jù)與運(yùn)行結(jié)果】 測(cè)試數(shù)據(jù): 13 4 6 3 8 5 9 10 12 17 11 20 13 6 23 30 輸出: 17 4 6 3 8 7 9 10 12 19 13 20 17 6 29 30 count=6 #include <stdio.h> int prime(int k) { int i; for(i=2;i<=k/2;i++) if(k%i==0) return 0; return 1; } int encode(int a[4][4]) { int i,j,n,k=0; for(i=0;i<4;i++) for(j=0;j<=i;j++) { if(prime(a[i][j])) { for(n=a[i][j]+1; ; n++) if(prime(n)) { k++; a[i][j]=n; break; } } } return k; } int main() { FILE *fp; int a[4][4]= {{13,4,6,3},{8,5,9,10},{12,17,11,20},{13,6,23,30}}; int k,i,j; if((fp=fopen("myf2.out","w+"))==NULL) { printf("Error"); } k=encode(a); for(i=0;i<4;i++) { for(j=0;j<3;j++) { printf("%5d",a[i][j]); fprintf(fp,"%5d",a[i][j]); } printf("%5d\n",a[i][j]); fprintf(fp,"%5d",a[i][j]); } printf("Count=%d\n",k); fprintf(fp,"Count=%d\n",k); fprintf(fp,"My exam is 123456"); fclose(fp); } |