2022年计算机二级C上机题库答案分类汇总.docx
精选学习资料 - - - - - - - - - a 与 b 合并成 c 85 填空 STYPE FILE fp 将 a 数的十位和个位数依次放在c 数的千位和十位上,b 数的十位56 改错 f ori=0;i<=sl;i+和个位数依次放在c 数的百位和个位上;4152 ,b 数的十位tsl*2='0'*c=a/10*1000+b/10*100+a%10*10+b%10;填空 *fw str str 将 a 数的十位和个位数依次放在c 数的个位和百位上22 改错 void funlong s,long *t sl=sl*10; 和个位数依次放在c 数的千位和十位上;1524 ,b 数的十位*c=b/10*1000+a%10*100+b%10*10+a/10;填空 fp fclosefp fname 将 a 数的十位和个位数依次放在c 数的个位和百位上33 改错fori=j+1;i<n;i+ 和个位数依次放在c 数的十位和千位上;2514 ,b 数的十位p=i; *c=b%10*1000+a%10*100+b/10*10+a/10;填空” r ” fs ft 将 a 数的十位和个位数依次放在c 数的十位和千位上83 改错 ifd%2=0 s/=10; 和个位数依次放在c 数的百位和个位上;5142 ,b 数的十位*c=a%10*1000+b/10*100+a/10*10+b%10;填空 0 x t+ 将 a 数的十位和个位数依次放在c 数的百位和个位上80 改错int i,sl; 和个位数依次放在c 数的千位和十位上;1425 ,b 数的十位ti=ssl-i-1; *c=b/10*1000+a/10*100+b%10*10+a%10;填空 1 s i*10 将 a 数的十位和个位数依次放在c 数的千位和十位上64 改错 int funint n,int xxM 和个位数依次放在c 数的个位和百位上;4251 ,b 数的十位 printf"%d",xxij; *c=a/10*1000+b%10*100+a%10*10+b/10;填空 k N-1 temp 将 a 数的十位和个位数依次放在c 数的十位和千位上改错 void funint *aM,int 和个位数依次放在c 数的个位和百位上;5241 m *c=a%10*1000+b%10*100+a/10*10+b/10; ajk=k+1*j+1; 19 填空struct student* 将 a 数的十位和个位数依次放在c 数的百位和个位上,b 数的十位a->scorei a 和个位数依次放在c 数的十位和千位上;2415 改错 char* funchar *sqM *c=b%10*1000+a/10*100+b/10*10+a%10;return sp; 整除26 填空 q next next 求出 1 到 m之内 含 m能被 7 或 11 整除的全部整数放在数组a 中;改错 p=j; p=i; int i,j=0; *n=0; fori=1;i<=m;i+ ifi%7=0|i%11=0 aj+=i;*n+; 28 填空 si 9 *t=n 求出 1 到 1000 之内能被7 或 11 整除 , 但不能同时被7 和 11 整除的改错 t=*x; *x=y; returnt; 全部整数并将它们放在a 所指的数组中;int i,j=0; fori=1;i<=1000;i+ ifi%7=0|i%11=0 && i%77.=0 aj+=i; *n=j; 34 填空 ai ai 0 运算并输出n 包括 n 以内能被5 或 9 整除的全部自然数的倒数之改错 y=1; d=a-i; 和;int i; double s=0.0; fori=1;i<=n;i+ ifi%5=0|i%9=0 s+=1.0/i; return s; 名师归纳总结 48 填空0 s+ sum 求 n 以内 不包括 n 同时能被3 与 7 整除的全部自然数之和的平方第 1 页,共 13 页- - - - - - -精选学习资料 - - - - - - - - - 改错根 s;ifk%13=0|k%17=0 double s=0.0; int i; fori=0;i<n;i+ ifi%3=0 && i%7=0 s=s+i; return sqrts; 字符串93 填空 next t->data t 比较两个字符串的长度, 函数返回较长的字符串;35 改错void funchar *a char *p,*t1=t,*s1=s;int n=0,m=0;printf"%c",*a; while*s1+ n+;while*t1+ m+;ifn>=m p=s;填空 N i i+1 else p=t;return p;从传入的num个字符串中找出最长的一个字符串;75 改错aai=m%k; int i;max=a0 ;printf"%d",aai-1; fori=0;i<num;i+ ifstrlenmax<strlenai max=ai;填空 i+1 k=j t return max;字符串中的内容逆置;char t; int i,n; 改 错void funchar *str,char ch n=strlens-1; if*str.=ch fori=0;i<n;i+ t=si;si=sn-i-1;sn-i-1=t; str1='0' 14 填空 double f1 f2 判定字符串是否为回文;int i,n=0,flag=1;char *p=str改错 p=h->next; p=p->next; while*p+ n+;fori=0;i<n/2;i+ 16 填空 ssi n+j 1 ' ifstri=strn-1-i continue;5 个字符按, 除首 , 尾字符外 , 将其余else flag=0;break;return flag;对长度为7 个字符的字符串改错if*p=' ASCII 码降序排列;*p-1=toupper*p-1; char t; int i,j; fori=1;i<num-2;i+ forj=i+1;j<num-1;j+ ifsi<sj t=si;si=sj;sj=t; 98 在带有头结点的单向链表中, 查找将字符串ss 中全部下标为奇数位置上的字母转换为大写;数据域中值为ch 的结点 , 找到后通int i,n=0; char *p=ss; 过函数值返回该结点在链表中所处while*p+ n+; 的次序号;fori=0;i<n;i+ 填空 NULL n head,ch ifssi>='a'&&ssi<='z'&&i%2.=0 ssi-=32; 改 错fori=0,t=0;pi;i+ ssi='0' ct='0' 名师归纳总结 65 将 a 所指 4*3 矩阵中第k 行的元素将字符串ss 中全部下标为奇数位置上的字母转换为大写;第 2 页,共 13 页与第0 行的元素交换;填空 k N int i,n=0; char *p=ss; - - - - - - -精选学习资料 - - - - - - - - - aki while*p+ n+; 改错 fori=strlent-1;i;i- fori=0;i<n;i+ iftj>tj+1 ifssi>='a'&&ssi<='z'&&i%2.=0 ssi-=32; ssi='0' 10 填空 0 | 1 删除字符串中的全部空格;改错 t-=1.0/i; return t; int i=0;char *p=str;while*p 89 填空 k len ssij if*p.= stri+=*p;p+; , 串中剩余字符形成的新stri=0 ;从字符串中删除指定的字符;Int i=0;char *p=s;改 错result*=n-; return result; while*pif*p.=c si+=*p;p+;31 si=0 ;填空 t=I I 0 删除一个字符串中指定下标的字符;Int I,j=0;改错whilefabst>=num t=s/n; fori=0;i<LEN;i+ 54 ifi.=n bj+=ai;bj=0 ;填空 data next head 将 s 所指字符串中下标为偶数的字符删除改错while*r 串放在 t 所指数组中;*a=*r;a+;r+; Int I,j=0,n=strlens; fori=0;i<n;i+ ifi%2.=0 tj+=si; 25 填空STU stdi.num tj=0 ; , 串中剩余字符形成将 s 所指字符串中ASCII 值为偶数的字符删除stdi 一个新串放在t 所指的数组中;p+; if*r=0 改错 r+; Int I,j=0,n=strlens; fori=0;i<n;i+ ifsi%2.=0 tj+=si; 18 填空 si k 0 tj=0 ; , 串中剩余字符形成将 s 所指字符串中ASCII 值为奇数的字符删除改错 while*w if*r=*p 一个新串放在t 所指的数组中;Int I,j=0,n=strlens; fori=0;i<n;i+ ifsi%2=0 tj+=si; 71 填空 j k p tj=0 ; ,s将 s 所指字符串中下标为偶数同时ASCII 值为奇数的字符删除改错 whilei<j if*a 中剩余的字符形成的新串放在t 所指的数组中;Int I,j=0,n=strlens; fori=0;i<n;i+ if.i%2=0 && si%2.=0 tj+=si; 36 填空 *n next head tj=0 ; , 同时 ASCII 值也为偶数的字符将 s 所指字符串中除了下标为偶数改错 a=NULL; if*r=*p 外, 其余的全都删除;Int I,j=0,n=strlens; fori=0;i<n;i+ ifi%2=0&&si%2=0 tj+=si; 名师归纳总结 - - - - - - -第 3 页,共 13 页精选学习资料 - - - - - - - - - 72 填空 0 i+ 2.0*i tj=0 ; , 同时 ASCII 值也为奇数的字符将 s 所指字符串中除了下标为奇数改错 void funchar *s,char *t 之外 , 其余的全部字符都删除;t2*d=0 ; Int I,j=0,n=strlens; fori=0;i<n;i+ ifi%2.=0 && si%2.=0 tj+=si; 42 填空 j+ si=t1i j tj=0 ; 求出 ss 所指字符串中指定字符的个数;改错forj=i+1;j<6;j+ int cnt=0; *pstr+i=*pstr+j; char *p=ss;while*pif*p=c cnt+;p+; return cnt; 77 填空010*xn/10实现两个字符串的连接改错void funchar p1, char p2 *t=0;ifd%2.=0 char *p=p1; while*pp+; while*p2 *p+=*p2+; *p=0; 68 填空 N len *n=len 统计一个长度为2 的字符串在另一个字符串中显现的次数;改错 t+=1.0/i; return t; int n=0;char *p,*r;while*str p=str;r=substr;while*r 62 填空 1 sk c if*r=*pr+;p+;, 并依次放else break;if*r=0 n+ ; str+; return n;统计在字符串中a到z26 个字母各自显现的次数改错 long s=0,t=0; t=t/10; 在 pp 所指数组中;int i; fori=0;i<26;i+ ppi=0; while*tt if*tt>='a'&& *tt<='z' pp*tt-'a'+;tt+; 3 填空 filename fp fp 错统计一行字符串中单词的个数; |si+1='0 n+;int i,n=0;改p=NODE*mallocsizeofNODE; fori=0;i<strlens;i+ return h; ifsi>= a &&si<= z &&si+1=return n;平均分和结构体40 填空 x p s 运算 n 门课程的平均分;改错 long k=1; num/=10; float aver=0.0; int i; fori=0;i<n;i+ aver+=ai; aver/=n; 名师归纳总结 - - - - - - -第 4 页,共 13 页精选学习资料 - - - - - - - - - return aver; 59 填空 j 0 i+ fori=2;i<=m;i+ m个人成果存放在score 数组中 , 将低于平均分的人数作为函数值改错返回 , 将低于平均分的分数放在below 所指的数组中;y-=1.0/i*i; int i,k=0,aver=0; fori=0;i<m;i+ aver+=scorei; aver/=m; fori=0;i<m;i+ ifscorei<aver belowk+=scorei; return k; 44 填空 char ch<=90N名同学的成果已在一个带头节点的链表结构中, 求出平均分;改错 bk=*p; bk+=' ' float aver=0.0; whileh.=NULL aver+=h->s;h=h->next; return aver/N; 15 填空 fp = fp N 名同学的成果已放入一个带头节点的链表结构中,h指向链表的改错 n=strlenaa; ch=aai; 头结点 , 找出同学的最高分;double max=h->s; forh=h->next;h->next.=NULL;h=h->next ifh->s>max max=h->s; return max; 57 填空 ai aj aj 1: case 2: 某同学的记录由学号,8门课程成果和平均分组成, 求出该同学的改错 switchg case 平均分放在记录的ave 成员中;return 1; double av=0.0; int i; fori=0;i<N;i+ av+=a->si; av/=N; a->ave=av; 88 填空 *a 2 i+1 同学的记录由学号和成果组成, 把低于平均分的同学数据放在b 所改错 sum=0.0; ifi+1%5=0 指的数组中;double aver=0.0; int i,j=0; fori=0;i<N;i+ aver+=ai.s; aver/=N; fori=0;i<N;i+ ifai.s<aver bj+=ai; *n=j; return aver; 29 填空 ->sno ->name &t 同学的记录由学号和成果组成, 把高于等于平均分的同学数据放在 b 所指的数组中;改错 double fundouble a,double x0 int i,j=0; double aver=0.0; iffabsx1-x0>0.00001 fori=0;i<N;i+ aver+=ai.s;aver/=N; fori=0;i<N;i+ ifai.s>=aver bj+=ai; *n=j; return aver; 74 填空 stdi.year stdi n n 已知同学的记录由学号和学习成果构成, 找出成果最高的同学记录 规定只有一个最高分 ;改错IsPrimeint if.n%i int i,max=a0.s;fori=0;i<N;i+ 名师归纳总结 70 填空 0.0 xi/N j+ funint m ifai.s>maxmax=ai.s;*s=ai;, 找出成果最低的同学记第 5 页,共 13 页已知同学的记录由学号和学习成果构成录 规定只有一个最低分 ;改错double fori=100;i<=m;i+=100 int i,min=a0.s;- - - - - - -精选学习资料 - - - - - - - - - fori=0;i<N;i+ 99 填空 1 i ap+i ifai.s<minmin=ai.s;*s=ai;h 所指同学的记录由学号和成果组成, 把分数最高的同学数据放在改错 float k; if*a<*c 的数组中 , 留意 : 分数最高的同学可能不止一个;int i,j=0,n=0,max=a0.s; fori=0;i<N;i+ ifai.s>max max=ai.s; fori=0;i<N;i+ ifai.s=max bj+=ai;n+; return n; 24 填 空struct student a.name 同学的记录由学号和成果组成, 把分数最低的同学数据放在b 所指a.scorei -1; 的数组中 , 留意 : 分数最低的同学可能不止一个;改 错ifp=n return int i,j=0,n=0,min=a0.s; ai=ai+1; fori=0;i<N;i+ ifai.s<min min=ai.s; fori=0;i<N;i+ ifai.s=min bj+=ai;n+; return n; 97 填空 n/2 i an-1-i 同学的记录由学号和成果组成, 函数返回指定学号的同学数据, 如改错 n=*p-'0' n=n*8+*p-'0' 没找到指定学号, 在结构体变量中给学号置空串, 给成果置 -1 ;int i; STREC h; fori=0;i<N;i+ ifstrcmpai.num,b=0 h=ai;break; else strcpyh.num,"" h.s=-1; return h; 82 填空 999 t/10 x *t 同学记录由学号和成果组成, 按分数高低排列同学的记录, 高分在改 错 void funlong s,long 前;whiles>0 int i,j; STREC t; fori=0;i<N-1;i+ forj=i+1;j<N;j+ ifai.s<aj.s t=ai;ai=aj;aj=t; 17 填 空struct student n-1 同学的记录由学号和成果组成, 把指定分数范畴内的同学数据放ai.name,aj.name 在 b 所指的数组中, 同学人数由函数值返回;改错 q=p+i; whileq>p int i,j=0; fori=0;i<N;i+ ifai.s>=l&&ai.s<=h bj+=ai; return j; 二维数组60 填空 *std PERSON std k,q,i; 使数组左下半三角元素中的值全部置成0;int i,j;改错int pti=strki; fori=0;i<N;i+ 8 forj=0;j<=i;j+ aij=0;填空 STU scorei &std 使数组左下三角元素中的值乘以n;改错 ifk>0 else ifk=0 int i,j; fori=0;i<N;i+ 名师归纳总结 - - - - - - -第 6 页,共 13 页精选学习资料 - - - - - - - - - forj=0;j<=i;j+ aij=aij*n; 41 填空 *av i xj funint n 使数组右上半三角元素中的值乘以m;int i,j; 改错float fori=2;i<=n;i+ forj=0;j<N;j+ fori=0;i<=j;i+ aij=aij*m; 67 填空 N break n sum=0; 实现矩阵 3 行 3 列 的转置;改错int i,j,t;scanf"%d",&aij; fori=0;i<3;i+ forj=0;j<=i;j+ 81 填空 && 0 sj t=arrayji;arrayji=arrayij;arrayij=t;实现 B=A+A, 即把矩阵A 加上矩阵A 的转置 , 存放在矩阵B 中;改错fori=2;i<=m;i+ int i,j,t,at33; y+=1.0/i*i; fori=0;i<=2;i+ forj=0;j<=2;j+ atij=aji; fori=0;i<3;i+ forj=0;j<3;j+ bij=aij+atij; 20 填空 xi/N j+ i+ 求出二维数组周边元素之和;int i,j,s=0; 改错 numk=0; switch*s forj=0;j<N;j+ s+=a0j+aM-1j; fori=1;i<=M-2;i+ s+=ai0+aiN-1; return s; 21 填空 s/N j+ -1 求出数组周边元素的平均值;int i,j,k=0;double s=0.0;改错 #include <stdio.h> void upfstchar *p forj=0;j<N;j+ s+=w0j+wN-1j;k+=2;13 fori=1;i<=N-2;i+ s+=wi0+wiN-1;k+=2; 填空 h->next p->next > return s/k;将 M 行 N 列的二维数组中的数据, 按行的次序依次放到一维数组改错 p=h->next; p=p->next; 中;int i,j;fori=0;i<mm;i+ 12 填空 NODE* next r forj=0;j<nn;j+ b*n=sij; *n+; 将 M 行 N 列的二维数组中的数据, 按列的次序依次放到一维数组改错ifi%2|si%2=0 中;int i,j; tj='0' forj = 0 ;j < nn ; j+ fori= 0 ;i< mm ; i+ b*n =* s+i+j ; *n=*n+1; 2 填空 FILE* fp ch 将 M行 N列的二维数组中的字符数据, 按列的次序依次放到一个字改错 sj+=si; sj='0' 符串中;int i,j,k=0;forj=0;j<N;j+ 名师归纳总结 11 填空 next NULL r fori=0;i<M;i+bn+=sij;bn= 0 ;第 7 页,共 13 页将放在字符串数组中的M个字符串 , 按次序合并组成一个新的字符- - - - - - -精选学习资料 - - - - - - - - - 改错 r=t; if*r=0 串;int i,j,k=0fori=0;i<M;i+ forj=0;j<N;j+ ifaij bk+=*a+i+j;else break;bk= 0 ;素数86 填空 i t+ count 运算并输出3 到 n 之间全部素数的平方根之和;改错 int funint a,int b,int c int m,k,i; double s=0.0; else return 1; form=3;m<=n;m+ k=sqrtm; fori=2;i<=k;i+ ifm%i=0 break; ifi>=k+1 s+=sqrtm; return s; 23 填空 a0i < x,y *x,int *y 求出小于或等于lim的全部素数放在aa 数组中 , 返回所求出的素数的个数;改 错void funint forj=2;j<i;j+ t=*x;*x=*y;*y=t; ifi%j=0 break; else continue; ifj>=i aak+=i; 55 填空 s - return 0 funint n 将大于整数m且紧靠 m 的 k 个素数存入xx 所指的数组中;改错double int g=0,i,j,flag=1; c=a;a+=b;b=c; fori=m+1;1;i+ forj=2;j<i;j+ ifi%j.=0 flag=1; else flag=0;break; ifflag=1&&j>=i ifk>=0xxg+=i;k-; else break; 79 填空 M < k 错将全部大于1 小于整数m的非素数存入xx 所指数组中;改int i,j,t=0; if'a'<=tti&&tti<='z' fori=4;i<m;i+ tti-=32; forj=2;j<i;j+ ifi%j=0xxt+=i;break; *k=t; 公式和数字49 填空 *s s+ n double xa=0.0; Pn .m .n.改错 int j,c=0; mifxj>=xa int i; float p,t=1.0; fori=1;i<=m;i+ t=t*i; p=t; fort=1.0,i=1;i<=n;i+ t=t*i; p=p/t; fort=1.0,i=1;i<=m-n;i+ t=t*i; p=p/t; return p; 名师归纳总结 - - - - - - -第 8 页,共 13 页精选学习资料 - - - - - - - - - 90 填空 j=2 i j Sn1111111改错 sum=j=0; ifsum%4=2 2342 n2nint i; double s=0.0; fori=1;i<=n;i+ s+=1.0/2*i-1-1.0/2*i; return s; 47 填空 *s 1 kn funint k s112213n 11 改错double nreturn s; int i; double s=0.0; fori=1;i<=n;i+ s+=1.0/i*i+1; return s; 87 填空 n%10 break break S1112113123150改错 ift=0 *zero=count; 2int i; double s=1.0,t=1.0; fori=2;i<=n;i+ t*=i;s+=1.0/t; return s; 100 填空0 0 c sum=0.0; S1112113121n改错double 23sum/=c; int i; float s=1.0,t=1.0; fori=2;i<=n;i+ t+=i;s+=1.0/t; return s; 94 填空 1.0 -1.0 t sn11111.1改错fori=1;i