计算机二级C上机题库答案分类汇总Word文件下载.docx
《计算机二级C上机题库答案分类汇总Word文件下载.docx》由会员分享,可在线阅读,更多相关《计算机二级C上机题库答案分类汇总Word文件下载.docx(50页珍藏版)》请在冰豆网上搜索。
19
填空structstudent*a->
score[i]a
改错char*fun(char(*sq)[M])returnsp;
将a数的十位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在c数的十位和千位上。
2415
*c=(b%10)*1000+(a/10)*100+(b/10)*10+a%10;
整除
26
填空qnextnext
改错p=j;
p=i;
求出1到m之内(含m)能被7或11整除的所有整数放在数组a中。
inti,j=0;
*n=0;
for(i=1;
=m;
i++)
if(i%7==0||i%11==0){a[j++]=i;
(*n)++;
}
28
填空s[i]’9’*t=n
改错t=*x;
*x=y;
return(t);
求出1到1000之内能被7或11整除,但不能同时被7和11整除的所有整数并将它们放在a所指的数组中。
=1000;
if((i%7==0||i%11==0)&
&
i%77!
=0)a[j++]=i;
*n=j;
34
填空a[i]a[i]0
改错y=1;
d=a-i;
计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。
inti;
doubles=0.0;
=n;
if(i%5==0||i%9==0)s+=1.0/i;
returns;
48
填空’0’s++sum
改错if((k%13==0)||(k%17==0))}
求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s。
doubles=0.0;
inti;
for(i=0;
if(i%3==0&
i%7==0)s=s+i;
returnsqrt(s);
字符串
93
填空nextt->
datat
改错voidfun(char*a)printf("
%c"
*a);
比较两个字符串的长度,函数返回较长的字符串。
char*p,*t1=t,*s1=s;
intn=0,m=0;
while(*s1++)n++;
while(*t1++)m++;
if(n>
=m)p=s;
elsep=t;
returnp;
35
填空[N]ii+1
改错aa[i]=m%k;
aa[i-1]);
从传入的num个字符串中找出最长的一个字符串。
inti;
max=a[0];
num;
if(strlen(max)<
strlen(a[i]))max=a[i];
returnmax;
75
填空i+1k=jt
改错voidfun(char*str,charch)
if(*str!
=ch)
str[1]='
字符串中的内容逆置。
chart;
inti,n;
n=strlen(s)-1;
i++){t=s[i];
s[i]=s[n-i-1];
s[n-i-1]=t;
14
填空doublef1f2
改错p=h->
next;
p=p->
判断字符串是否为回文。
inti,n=0,flag=1;
char*p=str;
while(*p++)n++;
n/2;
if(str[i]==str[n-1-i])continue;
else{flag=0;
break;
returnflag;
16
填空ss[i]n+j1
改错if(*p=='
'
)*(p-1)=toupper(*(p-1));
对长度为7个字符的字符串,除首,尾字符外,将其余5个字符按ASCII码降序排列。
inti,j;
num-2;
for(j=i+1;
j<
num-1;
j++)
if(s[i]<
s[j]){t=s[i];
s[i]=s[j];
s[j]=t;
98
在带有头结点的单向链表中,查找数据域中值为ch的结点,找到后通过函数值返回该结点在链表中所处的顺序号。
填空NULLnhead,ch
改错for(i=0,t=0;
p[i];
i++)c[t]='
将字符串ss中所有下标为奇数位置上的字母转换为大写。
inti,n=0;
char*p=ss;
while(*p++)n++;
if(ss[i]>
='
a'
ss[i]<
z'
i%2!
=0)ss[i]-=32;
ss[i]='
65
将a所指4*3矩阵中第k行的元素与第0行的元素交换。
填空kNa[k][i]
改错for(i=strlen(t)-1;
i;
i--)
if(t[j]>
t[j+1])
10
填空0||1
改错t-=1.0/i;
returnt;
删除字符串中的所有空格。
inti=0;
while(*p)
{if(*p!
=’’)str[i++]=*p;
p++;
str[i]=’\0’;
89
填空klenss[i][j]
改错result*=n--;
returnresult;
从字符串中删除指定的字符。
Inti=0;
char*p=s;
while(*p){if(*p!
=c)s[i++]=*p;
s[i]=’\0’;
31
填空t=II’\0’
改错while(fabs(t)>
=num)t=s/n;
删除一个字符串中指定下标的字符。
IntI,j=0;
LEN;
if(i!
=n)b[j++]=a[i];
b[j]=’\0’;
54
填空datanexthead
改错while(*r)*a=*r;
a++;
r++;
将s所指字符串中下标为偶数的字符删除,串中剩余字符形成的新串放在t所指数组中。
IntI,j=0,n=strlen(s);
if(i%2!
=0)t[j++]=s[i];
t[j]=’\0’;
25
填空STUstd[i].numstd[i]
改错r++;
p++;
if(*r==’\0’)
将s所指字符串中ASCII值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。
if(s[i]%2!
18
填空s[i]k’\0’
改错while(*w)if(*r==*p)
将s所指字符串中ASCII值为奇数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。
if(s[i]%2==0)t[j++]=s[i];
71
填空jkp
改错while(i<
j)if(*a)
将s所指字符串中下标为偶数同时ASCII值为奇数的字符删除,s中剩余的字符形成的新串放在t所指的数组中。
if(!
(i%2==0&
s[i]%2!
=0))t[j++]=s[i];
36
填空*nnexthead
改错a=NULL;
if(*r==*p)
将s所指字符串中除了下标为偶数,同时ASCII值也为偶数的字符外,其余的全都删除。
if(i%2==0&
s[i]%2==0)t[j++]=s[i];
72
填空0i++2.0*i
改错voidfun(char*s,char*t)t[2*d]=’\0’;
将s所指字符串中除了下标为奇数,同时ASCII值也为奇数的字符之外,其余的所有字符都删除。
=0&
42
填空j++s[i]=t1[i]j
改错for(j=i+1;
6;
j++)*(pstr+i)=*(pstr+j);
求出ss所指字符串中指定字符的个数。
intcnt=0;
char*p=ss;
while(*p){if(*p==c)cnt++;
}
returncnt;
77
填空010*xn/10
改错*t=0;
if(d%2!
=0)
实现两个字符串的连接
voidfun(charp1[],charp2[])
{char*p=p1;
while(*p)p++;
while(*p2)*p++=*p2++;
*p=0;
}
68
填空[N]len*n=len
改错t+=1.0/i;
统计一个长度为2的字符串在另一个字符串中出现的次数。
intn=0;
char*p,*r;
while(*str)
{p=str;
r=substr;
while(*r)
if(*r==*p){r++;
elsebreak;
if(*r==‘\0’)n++;
str++;
returnn;
62
填空1s[k]c
改错longs=0,t=0;
t=t/10;
统计在字符串中‘a’到‘z’26个字母各自出现的次数,并依次放在pp所指数组中。
26;
i++)pp[i]=0;
while(*tt)
{if(*tt>
*tt<
)pp[*tt-'
]++;
tt++;
3
填空filenamefpfp
改错p=(NODE*)malloc(sizeof(NODE));
returnh;
统计一行字符串中单词的个数。
inti,n=0;
strlen(s);
if(s[i]>
=’a’&
s[i]<
=’z’&
s[i+1]==’’||s[i+1]=='
\0’)n++;
平均分和结构体
40
填空xps
改错longk=1;
num/=10;
计算n门课程的平均分。
floataver=0.0;
i++)aver+=a[i];
aver/=n;
returnaver;
59
填空j0i++
改错for(i=2;
i++)y-=1.0/(i*i);
m个人成绩存放在score数组中,将低于平均分的人数作为函数值返回,将低于平均分的分数放在below所指的数组中。
inti,k=0,aver=0;
m;
i++)aver+=score[i];
aver/=m;
if(score[i]<
aver)below[k++]=score[i];
returnk;
44
填空charch<
=’9’’0’
改错b[k]=*p;
b[k++]='
N名学生的成绩已在一个带头节点的链表结构中,求出平均分。
while(h!
=NULL){aver+=h->
s;
h=h->
returnaver/N;
15
填空fp==fp
改错n=strlen(aa);
ch=aa[i];
N名学生的成绩已放入一个带头节点的链表结构中,h指向链表的头结点,找出学生的最高分。
doublemax=h->
for(h=h->
h->
next!
=NULL;
next)
if(h->
s>
max)max=h->
returnmax;
57
填空a[i]a[j]a[j]
改错switch(g)case1:
case2:
return1;
某学生的记录由学号,8门课程成绩和平均分组成,求出该学生的平均分放在记录的ave成员中。
doubleav=0.0;
N;
i++)av+=a->
s[i];
av/=N;
a->
ave=av;
88
填空*a2i+1
改错sum=0.0;
if((i+1)%5==0)
学生的记录由学号和成绩组成,把低于平均分的学生数据放在b所指的数组中。
doubleaver=0.0;
inti,j=0;
i++)aver+=a[i].s;
aver/=N;
if(a[i].s<
aver)b[j++]=a[i];
*n=j;
29
填空->
sno->
name&
t
改错doublefun(doublea,doublex0)
if(fabs(x1-x0)>
0.00001)
学生的记录由学号和成绩组成,把高于等于平均分的学生数据放在b所指的数组中。
doubleaver=0.0;
aver/=N;
if(a[i].s>
=aver)b[j++]=a[i];
74
填空std[i].yearstd[i]n
改错IsPrime(intn)if(!
(n%i))
已知学生的记录由学号和学习成绩构成,找出成绩最高的学生记录(规定只有一个最高分)。
inti,max=a[0].s;
max){max=a[i].s;
*s=a[i];
70
填空0.0x[i]/Nj++
改错doublefun(intm)for(i=100;
i+=100)
已知学生的记录由学号和学习成绩构成,找出成绩最低的学生记录(规定只有一个最低分)。
inti,min=a[0].s;
min){min=a[i].s;
99
填空1ia[p+i]
改错floatk;
if(*a<
*c)
学生的记录由学号和成绩组成,把分数最高的学生数据放在h所指的数组中,注意:
分数最高的学生可能不止一个。
inti,j=0,n=0,max=a[0].s;
max)max=a[i].s;
if(a[i].s==max){b[j++]=a[i];
n++;
returnn;
24
填空structstudenta.namea.score[i]
改错if(p==n)return-1;
a[i]=a[i+1];
学生的记录由学号和成绩组成,把分数最低的学生数据放在b所指的数组中,注意:
分数最低的学生可能不止一个。
inti,j=0,n=0,min=a[0].s;
min)min=a[i].s;
if(a[i].s==min){b[j++]=a[i];
97
填空n/2ia[n-1-i]
改错n=*p-'
0'
n=n*8+*p-'
学生的记录由学号和成绩组成,函数返回指定学号的学生数据,若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1。
STRECh;
if(strcmp(a[i].num,b)==0){h=a[i];
else{strcpy(h.num,"
"
);
h.s=-1;
82
填空999t/10x
改错voidfun(longs,long*t)while(s>
0)
学生记录由学号和成绩组成,按分数高低排列学生的记录,高分在前。
inti,j;
STRECt;
N-1;
a[j].s){t=a[i];
a[i]=a[j];
a[j]=t;
17
填空structstudentn-1a[i].name,a[j].name
改错q=p+i;
while(q>
p)
学生的记录由学号和成绩组成,把指定分数范围内的学生数据放在b所指的数组中,学生人数由函数值返回。
=l&
a[i].s<
=h)b[j++]=a[i];
returnj;
二维数组
60
填空*stdPERSONstd
改错intk,q,i;
pt[i]=str[k][i];
使数组左下半三角元素中的值全部置成0。
inti,j;
for(j=0;
=i;
j++)a[i][j]=0;
8
填空STUscore[i]&
std
改错if(k>
0)elseif(k==0)
使数组左下三角元素中的值乘以n。
j++)a[i][j]=a[i][j]*n;
41
填空*avix[j]
改错floatfun(intn)for(i=2;
使数组右上半三角元素中的值乘以m。
=j;
i++)a[i][j]=a[i][j]*m;
67
填空Nbreakn
改错sum=0;
scanf("
&
a[i][j]);
实现矩阵(3行3列)的转置。
inti,j,t;
3;
{t=array[j][i];
array[j][i]=array[i][j];
array[i][j]=t;
81
填空&
’\0’s[j]
i++)y+=1.0/(i*i);
实现B=A+A’,即把矩阵A加上矩阵A的转置,存放在矩阵B中。
inti,j,t,at[3][3];
=2;
j++)at[i][j]=a[j][i];
j++)b[i][j]=a[i][j]+at[i][j];
20
填空x[i]/Nj++i++
改错num[k]=0;
switch(*s)
求出二维数组周边元素之和。
inti,j,s=0;
j++)s+=a[0][j]+a[M-1][j];
=M-2;
i++)s+=a[i][0]+a[i][N-1];
21
填空s/Nj++-1
改错#include<
stdio.h>
voidupfst(char*p)
求出数组周边元素的平均值。
inti,j,k=0;
doubles=0.0;
j++){s+=w[0][j]+w[N-1][j];
k+=2;
=N-2;
i++){s+=w