2014年3月二级C语言上机题库
使用说明:打开填空题程序后,以看到的内容作为查找参照;上机题分为填空题、改错题、编程题,如果你的考试填空题的题3个空前的前后信息和这题库中给出的某套题填空题3
个空的前后一致,那么这一套题就是你的上机考题,填空题、改错题、编程题的答案都在下面。注:1、请在纯英文输入法状态下答题2、当出现“==”是指连续输入两个等于号=,当出现——是连续输入连个减号,2、建议不要使用复制和粘贴,请手动输入。3、再次提示:注意字母的大小写、0与o的区别,缺少分号或逗号的情况!
第01套:for(i=0; i __3__; } 填空:N j++ 1 改错:num[k]=0; switch(*s) 编程:int tot = 0, i, j ; for(i = 0 ; i < N ; i++) { tot += a[0][i] ; tot += a[M-1][i] ; } for(i = 1 ; i < M - 1 ; i++) { tot += a[i][0] ; tot += a[i][N-1] ; } return tot ; 第02套:{ t=*n % __1__; if(t%2!= __2__) *n=__3__; 填空:10 0 x 改错:if (n==0) result *=n--; 编程:int i, len, t; long x=0; len=strlen(p); if(p[0]=='-') { t=-1; len--; p++; } else t=1; while(*p) x = x*10-48+(*p++); return x*t; 第03套:__1__ fp; while (!feof(__2__)) { putchar(__3__); ch = fgetc(fp); } 填空:FILE * fp ch 改错:s[j++]=s[i]; s[j]='\0'; 编程:for(j = 0 ; j < M ; j++) { b[n] = s[j][i] ; n = i * M + j + 1; } 第04套:fp = fopen(__1__, "rb+"); fseek(__2__, -1L*sizeof(STU), SEEK_END); fwrite(&n, sizeof(STU), 1, __3__); 填空:filename fp fp 改错:p=(NODE *)malloc(sizeof(NODE)); return h; 编程:int k = 1 ; while(*s) { if(*s == ' ') k++ ; s++ ; } return k ; 第05套:fp = fopen(filename, __1__); if (s[i].sno __2__ s[j].sno) __3__(s, sizeof(STU), N, fp); 填空:"rb" > fwrite 改错:p=s; while(*p++); 编程:int i, j ; for(i = 0 ; i < M ; i++) b[i] = 0 ; for(i = 0 ; i < N ; i++) { j = a[i] / 10 ; if(j > 10) b[M - 1]++ ; else b[j]++ ; } 第06套:__1__ fp; __2__ ; fscanf(__3__,"%s%s%s", str, str1, str2); 填空:FILE * fclose(fp) fp 改错:t=(STU *)calloc(sizeof(STU),m) ; t[k]=b[j]; 编程:int i, j = 1, k = a[0] ; for(i = 1 ; i < n ; i++) if(k != a[i]) { a[j++]=a[i] ; k = a[i] ; } a[j] = 0 ; return j ; 第07套:__1__ fun(int i, double x, double y) return __2__(x); return __3__(x, y); 填空:double f1 f2 改错:char *fun(char *s,char *t) ss++; tt++; 编程:int i; for(i = 0 ; i < m ; i++) fun1(w); 第08套: void show(STU ___1___) printf("%5.1f", ___2___); show(___3___); 填空::tt tt.score[i] std 改错:m=i; if(a[k]>a[m]) m=k; 编程:if(w>10000) w %= 10000 ; else if(w>1000) w %= 1000 ; else if(w>100) w %= 100 ; else if(w>10) w %=10 ; return w ; 第09套:void modify(___1___ *ss,float a) ss->___2___ *=a; modify(___3___,a); 填空:STU score[i] &std 改错:if( k > 0 ) else if ( k==0 ) 编程:int i, j; for(i = 0 ; i < N ; i++) for(j = 0 ; j <= i; j++) a[i][j] *= n ; 第10套:q = __1__ ; while (__2__) p = __3__ ; 填空:p.next q p.next 改错:while(*s) s++; 编程:int i, j = 0, b[N] ; for(i = p + 1 ; i < n ; i++) b[j++] = w[i] ; for(i = 0 ; i <= p ; i++) b[j++] = w[i] ; for(i = 0 ; i < n ; i++) w[i]= b[i] ; 第11套:row=colum= __1__; if( (row!=colum) __2__ (row!=m1) ) return 0; return __3__; 填空:0 || 1 改错:t-=1./i; return t 编程:char *p = str ; int i = 0 ; while(*p) { if(*p != ' ') str[i++] = *p ; p++ ; } str[i] = 0 ; 第12套:p = h->__1__; if (p==__2__) return; p = q; q = __3__; 填空:h->next 0 r 改错:r=t; if(*r==0) 编程:/* 以下代码仅供参考*/ int i; *b=0; for(i = 0 ; i < M ; i++) strcat(b, a[i]) ; 第13套:__1__ * fun(NODE *h) r = q->__2__; q = __3__ ; 填空:NODE next r 改错:if(i%2 || s[i]%2==0) t[j]=0; 编程:/* 以下代码仅供参考*/ int i,j,np=0; /* np用作b数组下标*/ for(i = 0 ; i < nn ; i++) for(j = 0 ; j < mm ; j++) { b[np] = s[j][i] ; np = i * mm + j + 1; } 第14套:p = __1__ ; q = __2__ ; if (p->data __3__ q->data) 填空:h->next p->next > 改错:p=h->next; p=p->next; 填空:int i, j, k ; for(i = 0 ; i < mm ; i++) for(j = 0 ; j < nn ; j++) { k = i * nn + j ; b[k] = s[i][j] ; } *n = mm * nn ; 第15套:__1__ (*f)(); f = __2__ ; /* point fountion f1 */ f = __3__ ; /* point fountion f2 */ 填空:double f1 f2 改错:p=h->next; p=p->next; 编程:int i, j = strlen(str) ; for(i = 0 ; i < j / 2 ; i++) if(str[i] != str[j - i - 1]) return 0 ; return 1 ; 第16套:while (!feof(__1__)) if (n.sno__2__sno) break; fseek(__3__, -1L*sizeof(STU), SEEK_CUR); 填空:fp == fp 改错:n=strlen(aa) ; ch=aa[i]; 编程:double fun( STREC *h ) { double max=h->s; while(h!=NULL) { if(max h=h->next; } return max; } 第17套:n=strlen(___1___); ss[i][ ___2___]='*'; ss[i][n+j+ ___3___]='\0'; 填空:ss[i] n+j 1 改错:if( *p == ' ' ) * (p-1) = toupper( *( p - 1 ) ) ; 编程:char ch ; int i, j ; for(i = 1 ; i < 6 ; i++) for(j = i + 1 ; j < 6 ; j++) { if(*(s + i) < *(s + j)) { ch = *(s + j) ; *(s + j) = *(s +i) ; *(s + i) = ch ; } } 第18套:__1__ t; for (i=0; i<__2__; i++) if (strcmp(__3__) > 0) 填空:struct student n-1 a[i].name,a[j].name 改错:q=p+i; while(q>p) 编程:int i,j = 0 ; for(i = 0 ; i < N ; i++) if(a[i].s >= | && a[i].s <= h) b[j++] = a[i] ; return j ; 第19套:t[j]=__1__; j++;} for(i=0; i<__2__; i++) t[j+i]=p[i]; t[j+k]= __3__; 填空:s[i] k '\0' 改错:while(*w) if ( *r == *p ) 编程:int i, j = 0,n ; n=stren(s); for(i = 0 ; i if(s[i]%2==0) {t[j]=s[i]; j++; } t[j] =’\ 0’; } 第20套:__1__ fun(struct student *a) for (i=0; i<3; i++) __2__ += 1; return __3__ ; 填空:struct student * a->score[i] a 改错:char *fun(char (*sq)[M]) return sp; 编程: *c = (b%10)*1000+(a/10)*100+(b/10)*10+a %10; 第21套:av=__1__; y[__2__]=x[i]; x[i]=-1;} if( x[i]!= __3__) y[j++]=x[i]; 填空:s/N j++ -1 改错:#include *p) 编程:int i, j, n=0; double sum=0; for ( i =0; i sum+=w[0][i]+w[N-1][i]; n+=2; } for ( i =1; i sum +=w[i][0]+w[i][N-1]; n+=2; } return sum/n; 第22套: fprintf(___1___,"%d %f\n",i,sqrt((double )i)); ___2___; if((fp=fopen(___3___,"r"))==NULL) 填空:fp fclose(fp) fname 改错:for ( i=j+1; i 编程: *c=(b%10)*1000+(a%10)*100+(b/10)*1 0+(a/10); 第23套:b[i]= __1__; if(b[i] __2__ a[j][i]) b[i]=a[j][i]; fun(__3__); 填空:a[0][i] < x,y 改错:int *x,int *y t=*x;*x=*y;*y=t; 编程:int fun(int lim, int aa[MAX]) { /* 以下代码仅供参考*/ int i,j,k=0; /* 其中变量k用于统计素数个数*/ for(i=2;i<=lim;i++) { /* 以下完成判断aa数组中小于或等于 lim的素数并统计个数*/ for(j = 2 ; j <= (i/2) ; j++) if(i % j == 0) break; if(j > (i/2)) aa[k++] = i; } return k; } 第24套:__1__ fun(struct student a) strcpy(__2__, "LiSi"); for (i=0; i<3; i++) __3__+= 1; 填空:struct student https://www.sodocs.net/doc/253492028.html, a.score[i] 改错:if(p==n) return -1; a[i]=a[i+1]; 编程:int i, j = 0, min=a[0].s ; for(i = 0 ; i < N; i++) { if(min > a[i].s) { j = 0 ; b[j++] = a[i] ; min = a[i].s ; } else if(min == a[i].s) b[j++] = a[i] ; } return j ; 第25套:___1___ fun(STU *std, char *num) if( strcmp(___2___,num)==0 ) return (___3___); 填空::STU stu[i].num std[i] 改错:r++; p++ ; if(*r==0) 编程:int i, j = 0 ; for(i = 0 ; i < strlen(s); i++) if(s[i] % 2) t[j++] = s[i] ; t[j] = 0 ; 第26套:free(___1___); q=p->___2___; q=q->___3___; 填空:q next next 改错:p = j ; p = i; 编程:int i ; *n=0 ; for(i=7 ; i<=m; i++) if((i % 7 == 0) || (i % 11 == 0)) a[(*n)++]=i ; 第27套:s=__1__; for(i=1; i<=__2__; i++) s=s+(2.0*i-1)*(2.0*i+1)/__3__; 填空:0 n t*t 改错:for(i = 0, str[i], i++) ; if(substr[k+1]=='\0') 编程:double s=1,t=1./3; int n=1; while(t>=eps){ s+=t; n++; t=t*n/(2.0*n+1); } return (s*2.0); 第28套:for(i=0; ___1___ !=NULL; i++) if(s[i]>='0'&&s[i]<= ___2___ ) n++; ___3___ ; 填空:s[i] '9' *t=n 改错:t=*x;*x=y; return(t); 编程:int i ; *n = 0 ; for(i = 7 ; i < 1000 ; i++) if(((i % 7) == 0 || (i % 11) == 0) && (i % 77) != 0) a[(*n)++] = i ; 第29套:b__1__ = 10004; strcpy(b__2__, "LiJie"); fun(__3__); 填空:->no ->name &t 改错:double fun(double a, double x0) if( fabs(x1-x0)>0.00001 ) (注意:是数字0,不是字母o) 编程:double t=0 ; int i ; *n = 0 ; for(i = 0 ; i < N ; i++) t = t + a[i].s ; t = t / N ; for(i = 0 ; i < N ; i++) if(a[i].s > t) b[(*n)++] = a[i] ; return t ; 第30套:b = __1__; strcpy(__2__, "LiSi"); for (i=0; i<3; i++) printf("%6.2f ", b.__3__); 填空:a https://www.sodocs.net/doc/253492028.html, score[i] 改错:s[j++]=s[i]; s[j]=0; 编程:void fun( char *a ) { /* 以下代码仅供参考*/ char *p,*q; int n=0; p=a; while(*p=='*') /* 统计串头'*'个数n */ {n++; p++;} q=a; /* 向前复制字符串,请填写相应的语 句完成其功能*/ while(*p) { *q=*p; p++;q++; } for(;n>0;n--) /* 在串尾补n个'*' */ *q++='*'; *q='\0'; } 第31套:___1___; for(j=___2___+2 ; j p[j]=___3___; 填空:t=i i '\0' 改错:while(fabs(t)>=num) t=s/n; 编程:strncpy(b, a, n) ; b[n] = 0 ; strcat(b, a + n + 1) ; 第32套:void fun(char (*ss) __1__, int k) while(i< __2__) { ss[i][k]=__3__; i++; } 填空:M N 0 改错:t=1.0; return(s*2); 编程:void fun( char *a, int n ) { /* 以下代码仅供参考*/ int i=0,j,k=0; while(a[k]=='*') k++; /* k为统计*字符 个数*/ if(k>n) { i=n;j=k; /* 以下完成将下标为k至串尾的字符 前移k-n个位置*/ for(; a[j] !=0 ; j++) a[i++]=a[j]; a[i] = 0; } } 第33套:if((fs=fopen(source, ___1___))==NULL) while(!feof(___2___)) fputc(ch,___3___); 填空:"r" fs ft 改错:if (d%2==0) s /= 10; 编程: *c=(a%10)*1000+(b/10)*100+(a/10)*10 +(b%10); 第34套:for (j=a[i]*2; j<=n; j+=___1___) while (___2___==0) if (a[i]!=___3___) 填空:a[i] a[i] 0 改错:y=1; d=a-i; 编程:int i; double sum=0.0; for(i=1; i<=n; i++) if(i%5 == 0 || i%9 == 0) /* 被5或9整除 */ sum+=1.0/i; return sum; 第35套:void fun(int (*a) __1__) for(j= __2__ ; j a[k][i]=a[k][N-i-1]= __3__; 填空:[N] i i+1 改错:aa[i]=m%k; printf("%d",aa[i-1]); 编程:fun(char(*a)[81],int num,char **max) { /* 以下代码仅供参考*/ int i,k=0,maxlen; /* k为a数组中最长串 所在元素的下标,初始为0,maxlen为 其串长*/ maxlen=strlen(a[k]); for(i=1;i { /* 以下完成查找最长串*/ if(strlen(a[i]) > maxlen) { maxlen = strlen(a[i]) ; k = i ; } } *max=a[k]; } 第36套:___1___=0; p=p->___2___; fun(___3___, &num); 填空:*n next head 改错:NULL if(*r==*p) 编程:int i, j = 0 ; for(i = 0 ; i < strlen(s) ; i += 2) if(s[i] % 2 == 0) t[j++] = s[i] ; t[j] = 0 ; 第37套:for(i=0; i< __1__ ; i++) if( strstr(ss[i], __2__) != NULL ) if (find==__3__) printf("\nDon't found!\n"); 填空:N substr 0 改错:fun(int x,int y, int z) return j; 编程:char *p=a ; int j=0,len=0; while(*p) {p++; len++;} while(j a[j]=a[h+j]; j++; } a[j]=0; 第38套:if (a[i]%2==___1___) a[j] = a[i]; ___2___; return ___3___; 填空:1 j++ j 改错:t=a;a=b;b=t; return(b); 编程:int j =0 ; char *p=a; while(*p) { if(*p != '*') a[j++]=*p ; p++ ; } a[j]=0; 第39套:for(i=0; i< __1__ ; i++) if(len<= __2__) strcpy(ss[j++],__3__); 填空:N k ss[i] 改错:int k = 0; while( *p || *q ) 编程:void fun( char *a ) { /* 以下代码仅供参考*/ int i=0,k; while(a[i]=='*') i++; k=i; while(a[i]!='\0') /* 以下程序段实现非*字符前移*/ { if(a[i] != '*') a[k++]=a[i]; i++; } a[k]='\0'; } 第40套:s->data=___1___; q=___2___; q->next=___3___; 填空:x p s 改错:long k=1; num/=10 ; 编程:int i; float ave=0.0; for(i=0; i ave=ave/n; return ave; 第41套:__1__=s/N; d=*av-x[i]; j=__2__;} return __3__; 填空:*av i x[j] 改错:float fun(int n) for (i=2; i<=n; i++) 编程:int i, j; for(i = 0 ; i < N ; i++) for(j = i ; j < N ; j++) a[i][j] *= m ; 第42套:t2[j]=s[i]; ___1___; for(i=0; i for(i=0; i<___3___; i++) s[k+i]=t2[i]; 填空:j++ s[i]=t1[i] j 改错:for (j = i + 1, j < 6, j++) ; *(pstr+i)=*(pstr+j); 编程:int cnt = 0 ; char *p = ss ; while(*p) { if(*p == c) cnt++ ; p++ ; } return cnt ; 第43套:for(i=0; i< __1__ ; i++) if(strcmp(ss[i],t)==0 ) return __2__ ; if(n== __3__) printf("\nDon't found!\n"); 填空:N i -1 改错:a2=k/10; return i; 编程:char *p = a ; while(*p) p++ ; p-- ; while(*p == '*') p-- ; p++ ; *p = 0 ; 第44套:___1___ fun(char ch) if (ch>='0' && ___2___) return '9'- (ch-___3___); 填空:char ch<='9' '0' 改错:b[k]=*p; b[k++]=’’; 编程:STREC *p=h->next; double av=0.0; int n = 0 ; while(p!=NULL) { av = av + p->s ; p=p->next; n++; } av /= n ; return av ; 第45套:if (___1___== 0) { ___2___ = a[i]; j++; return ___3___; 填空:a[i] % 2 a[j] j 改错:fun (int n) if(n==1) 编程:char *p=a ; int j=0; while(*p) p++; p--; while(*p == '*') p--; p++; while(j p++ ; j++; } *p = 0 ; 第46套:k= __1__ ; if(strlen(ps[k]) < strlen(__2__) ) k=j; tp=ps[i]; ps[i]=ps[k]; ps[k]= __3__ ; 填空:i ps[j] tp 改错:double fun(int n) return sum ; 编程:double s = 1.0, y = x ; int i ; for(i = 1 ; i <= n ; i++) { s += y / (double)jc(i) ; y *= x ; } return s ; 第47套:ch=tolower(__1__); k[n]+= __2__ ; if(max 填空:*s 1 k[n] 改错:double void fun( int k ) return s ; 编程:double s = 0.0 ; int i ; for(i = 1 ; i <= n ; i++) s = s + 1.0 / (i * (i + 1)) ; return s ; 第48套:if( isdigit(*s) ) sum+= *s- __1__ ; __2__; return __3__ ; 填空:48 s++ sum 改错:if ((k%13 == 0) || (k%17 == 0)) _____ } 编程:double sum=0.0; int i; for(i=21; i<=n; i++) if((i % 3==0) && (i % 7==0)) sum+=i; return sqrt(sum) ; 第49套:*(t+n)= __1__ ; n++; } __2__ ; return __3__ ; 填空:*s s++ n 改错:int j, c=0; float xa=0.; if (x[j] >= xa) 编程:float p; p=1.0*jc(m)/jc(n)/jc(m-n) ; return p; 第50套:void fun(int (*t)___1___ ) ___2___ =t[i][j]+t[j][i]; ___3___ =0; 填空:[N] t[i][j] t[j][i] 改错:#define FU(m,n) ((m)/(n)) return(value); 编程:int j=0; char *p = a ; while(*p == '*') p++ ; while(*p) { a[j++] = *p ; p++; } a[j]=0 ; 第51套:__1__ ; flag=1;} if (*s==' ') flag= __2__ ; __3__ ; 填空:n++ 0 s++ 改错:t+=s[k]; *aver = ave ; 编程:int i, pos = 0, max = *s ; for(i = 1 ; i < t ; i++) { if(max < *(s + i)) { max = *(s + i) ; pos = i ; } } *k = pos ; 第52套:for(i=0; i<___1___; i++) x=t[i][___2___] ; t[i][___3___]=x; 填空:N N-1 0 改错:s+=(float)(n+1)/n; return t; 编程:int f0 = 0, f1 = 1, f ; do { f = f0 + f1 ; f0 = f1 ; f1 = f ; } while(f < t) ; return f ; 第53套:t = ___1___; t *= (-1.0)*x/___2___; while (___3___ >= 1e-6); 填空:x n fabs(t) 改错:for(i=1; i<=y; i++) t=t%1000; 编程:int n=1; double sn=1; double xn=1,xn1=0; while(fabs(xn-xn1)>=0.000001) { xn=xn*x*(0.5-n+1)/n; n+=1; sn+=xn; } return(sn); 第54套:s+= p->___1___; p=p->___2___; printf("\nsum=%d\n", fun(___3___)); 填空:data next head 改错:while(*r) *a = *r; a++; r++ ; 编程:int i, j = 0 ; for(i = 1 ; i < strlen(s); i+=2) t[j++] = s[i] ; t[j] = 0 ; 第55套:lp= __1__ ; lp++; rp __2__ ; } if(lp