计算机二级C上机考试题库2.docx
《计算机二级C上机考试题库2.docx》由会员分享,可在线阅读,更多相关《计算机二级C上机考试题库2.docx(13页珍藏版)》请在冰豆网上搜索。
计算机二级C上机考试题库2
类型一:
调整一个数的个、十、百、千位
1.请编写函数fun,其功能是:
将两个两位数的正整数a、b合并形成一个整数放在c中。
合并的方式是:
将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的百位和个位上。
例如,当a=45,b=12,调用该函数后c=4152。
填空:
STYPEFILEFp
改错:
for(i=0;i<=sl;i++)把s后字母改为小写L
t[2*sl]='\0';
2.c=1524。
填空:
*fwstrstr
改错:
voidfun(longs,long*t)
sl=sl*10;
3.c=2514。
填空:
fpfclose(fp)fname
改错:
for(i=j+1;i<=n-1;i++)
p=i;
4.c=5142。
填空:
"r"fsft
改错:
if(d%2==0)
s/=10;
5.c=5241。
填空:
kN-1temp
改错:
fun(inta[][M],intm)
a[j][k]=(k+1)*(j+1);
6.c=2415。
填空:
structstudent*a->score[i]a
改错:
char*fun(char(*sq)[M])
returnsp;
7.c=1425。
填空:
0xt++
改错:
inti,s1;s后面是小写的L
t[i]=s[sl-i-1];
8.c=4251。
填空:
1si*10
改错:
intfun(intn,intxx[][M])
printf("%d",xx[i][j]);
类型二:
与*号有关的操作
9.请编写函数fun,它的功能是:
将字符串中的前导*号全部删除,中间和尾部的*号不删除。
删除前导*号
填空:
[N]t[i][j]t[j][i]
改错:
#defineFU(m,n)((m)/(n))
return(value);
10.除尾部*号,其余*删除
填空:
t[][N]i=0;i改错:
intfun(inta[],intm)
elseif(m>a[mid])
11.请编写函数fun,它的功能是:
除了字符串前导和尾部的*号之外,将串中其他*号全部删除。
只删除中间*号
intj=0;char*q=a;
while(*q&&qwhile(*h&&*p&&h
{if(*h!
='*')a[j++]=*h;h++;}
while(*p)a[j++]=*p++;
a[j]=0;
填空:
sum=0t[i][i]1
改错:
doubler;
while(fabs(m-n)>0.001)
12.
删除串中所有*号
i
填空:
1j++j
改错:
t=a;a=b;b=t;
return(b);
13.
删除串尾*号
填空:
Ni-1
改错:
a2=k/10;
returni;
14.
除前导*外其他删除*
填空:
Nkss[i]
改错:
intk=0;
while(*p||*q)
15.
删除前导和尾部*
填空:
Nsubstr0
改错:
fun(intx,inty,intz)
returnj;
16.
串尾部*号不多于n个
填空:
a[i]%2a[j]j
改错:
fun(intn)
if(n==1)
17.前导*不多于n个
填空:
MN0
改错:
t=1;
return(2*s);
18.串前*移至串尾
填空:
ab.namescore[i]
改错:
s[j++]=s[i];
s[j]=0;
19.编写一个函数,从传入的num个字符串中找出最长的一个字符串,并通过形参指针max传回该串地址
(用****作为结束输入的标志)。
inti,k=0,maxlen;
maxlen=strlen(a[k]);
for(i=1;i{if(strlen(a[i])>maxlen)
{maxlen=strlen(a[i]);k=i;}}
*max=a[k];
填空:
[N]ii+1
改错:
aa[i]=m%k;
printf("%d",aa[i-1]);
类型三:
与下标或ASCII码有关
20.请编写一个函数fun,它的功能是:
将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。
下标奇数位置子母改大写
填空:
kNa[k][i]
改错:
for(i=strlen(t)-1;i;i--)
if(t[j]>t[j+1])
21.请编写—个函数voidfun(char*ss),下标奇数位置子母改大写
c
填空:
NULLnhead,ch
改错:
for(i=0,t=0;p[i];i++)
c[t]='\0';
22.下标为偶数字符删除
填空:
datanexthead
改错:
while(*r)
*a=*r;a++;r++;
23.除首尾外其余ASCII码降序
填空:
ss[i]n+j1
改错:
if(*p=='')
*(p-1)=toupper(*(p-1));
24.
ASCII码值为偶数删除
填空:
STUstd[i].numstd[i]
改错:
r++;p++;
if(*r==0)
25.ASCII值为奇数删除
填空:
s[i]k'\0'
改错:
while(*w)
if(*r==*p)
26.除下标偶数同时ASCII码值偶数之外其余全部删除
i
填空:
*nnexthead
改错:
a=NULL;
if(*r==*p)
27.除下标奇数同时ASCII码也为奇数外其余字符删除
填空:
0i++2.0*i
改错:
voidfun(char*s,char*t)
t[2*d]=0;
28.将下标为偶数同时ASCII码为奇数删除
填空:
jkp
改错:
while(iif(*a)
103.请编写函数fun,函数的功能是查找x在s所指数组中下标的位置作为函数值返回,若x不存在,则返回-1
填空:
i%5\na[i]
改错:
return t;
for(i=0;ix[i+1]=findmid(a,b,c);
类型四:
数组和矩阵操作
29.请编写函数fun,该函数的功能是:
移动一维数组中的内容;若数组中有n个整数,要求把下标从0到p(p小于等于n-1)的数组元素平移到数组的最后。
下标0-p移到数组最后
填空:
p->nextqp->next
改错:
while(*s)
s++;
30.删除一维数组相同的数
填空:
FILE*fclose(fp)fp
改错:
t=(STU*)calloc(sizeof(STU),m);
t[k]=b[j];
31.找出一维数组最大值及其下标
填空:
12*i(-1)
改错:
k++;
if(m==k)
32.求数组最大元素及下标
填空:
n++0s++
改错:
t+=s[k];
*ave=ave;
33.左下三角元素乘n
填空:
STUscore[i]&std
改错:
if(k>0)
elseif(k==0)
34.右上三角元素同乘m
填空:
*avix[j]
改错:
floatfun(intn)
for(i=2;i<=n;i++)
35.左下三角元素置0
填空:
*stdPERSONstd
改错:
intk,q,i;
pt[i]=str[k][i];
36.二维数组每列最小元素
填空:
*stdstd[i].agemax.name
改错:
voidfun(int*a,int*b)
t=*b;*b=*a;*a=t;
37.求二维数组中最大元素的值
填空:
3.0>2*i+1
改错:
doublefun(intn)
s=s+(double)a/b;
38.矩阵转置
填空:
Nbreakn
改错:
sum=0;
scanf("%d",&a[i][j]);
39.按列顺序334455334455
填空:
NODE*nextr
改错:
if(i%2||s[i]%2==0)
t[j]=’\0’;
40.按行顺序3333333344444444
填空:
h->nextp->next>
改错:
p=h->next;
p=p->next;
41.按列顺序wshwshwsh
填空:
FILE*fpch
改错:
s[j++]=s[i];
s[j]='\0';.
42.数组周边元素的平均值
填空:
s/Nj++-1
改错:
#include
upfst(char*p)
43.二维数组周边元素之和
填空:
x[i]/Nj++i++
改错:
num[k]=0;
switch(*s)
44.B=A+A’
填空:
&&'\0's[j]
改错:
for(i=2;i<=m;i++)
y+=1.0/(i*i);
类型五:
学生分数操作
45.请编写一个函数fun,它的功能是:
计算n门课程的平均分,计算结果作为函数值返回。
例如:
若有5门课程的成绩是:
90.5,72,80,61.5,55,则函数的值为71.80。
n门课程平均分71.8
填空:
xps
改错:
longk=1;
num/=10;
46.N名学生的成绩的平均分,78.625
填空:
charch<='9''0'
改错:
b[k]=*p;
b[k++]=‘’;
47.8门课程平均分78.875
填空:
a[i]a[j]a[j]
改错:
switch(g)
case1:
case2:
return1;
48.找出成绩最高学生纪录(规定只有一个最高分)
填空:
std[i].yearstd[i]n
改错:
IsPrime(intn)
if(!
(n%i))
49.低于平均分的学生数据
填空:
*a2i+1
改错:
sum=0.0;
if((i+1)%5==0)
50.把分数最高学生数据放在b所指数组中,分数最高的学生可能不只一个
填空:
1ia[p+i]
改错:
floatk;
if(*a<*c)
51
找出学生最高分由函数值返回
填空:
fp==fp
改错:
n=strlen(aa);
ch=aa[i];
52.低于平均分的人作为函数值返回
填空:
j0i++
改错:
for(i=2;i<=m;i++)
y-=1.0/(i*i);
53.高于等于平均分的学生数据
填空:
->sno->name&t
改错:
doublefun(doublea,doublex0)
if(fabs(x1-x0)>0.00001)
54.
分数最低学生数据放在b所指数组
填空:
structstudenta.namea.score[i]
改错:
if(p==n)return-1;
a[i]=a[i+1];
55.找出成绩最低学生纪录
填空:
0x[i]/Nj++
改错:
doublefun(intm)
for(i=100;i<=m;i+=100)
56按分数高低排列学生纪录,高分在前
填空:
999t/10x
改错:
voidfun(longs,long*t)
while(s>0)
57.返回指定学号学生数据
填空:
n/2ia[n-i-1]
改错:
n=*p-'0';
n=n*8+*p-'0';
58.指定分数范围内的数据
填空:
structstudent
n-1
a[i].name,a[j].name
改错:
q=p+i;
while(q>p)
类型六:
字符和字符串操作
59.请编写一个函数fun,它的功能是:
比较两个字符串的长度,返回较长的字符串。
若两个字符串长度相同,则返回第一个字符串。
返回较长字符串
填空:
nextt->datat
改错:
fun(char*a)
printf("%c",*a);
60.删除给定的字符
填空:
klenss[i][j]
改错:
result*=n--;
result
61.填空:
j++s[i]=t1[i]j
改错:
for(j=i+1;j<6;j++)
*(pstr+i)=*(pstr+j);
62.统计26个字母出现次数
填空:
1s[k]c
改错:
longs=0,t=0;
t=t/10;
63.删除指定下标字符
填空:
t=ii'\0'
改错:
while(fabs(t)>=num)
t=s/n;
64.统计一行串中单词个数
填空:
filenamefpfp
改错:
p=(NODE*)malloc(sizeof(NODE));
returnh;
65.M个字符串合并成新串
填空:
next0r
改错:
r=t;
if(*r==0)
66.回文
填空:
doublef1f2
改错:
p=h->next;
p=p->next;
67实现两个字符串连接
填空:
010*xn/10
改错:
*t=0;
if(d%2!
=0)
68.删除字符串中所有空格
填空:
0||1
改错:
t-=1.0/i;
returnt;
69.逆置。
字符串逆置
填空:
i+1k=jt
改错:
voidfun(char*str,charch)
if(*str!
=ch)
str[1]=0;
70数字字符串转换为整数
填空:
100x
改错:
if(n==0)
result*=n--;
711第m个字符移到串后
填空:
doublef1f2
改错:
char*fun(char*s,char*t)
ss++;
tt++;
72.统计子串出现的次数
i
填空:
Nlen*n=len
改错:
t+=1.0/i;
returnt;
101.请编写函数fun,其功能是:
统计s所指字符串中的数字字符个数,并作为函数值返回。
数字字符个数
填空:
b[k]N/2<
改错:
int t[N] ,i, num=0;
t[num++]=b[i];
for(i=0; i102.请编写函数fun,其功能是将形参s所指的字符串放入形参a所指的字符数组中,使a中存放同样的字符串。
填空:
pbp->datap->next
改错:
int i, one=0, zero=0;
switch( s[i] )
case 0:
zero++;break;
104
数字字符串转换为整数
填空:
0t(t-1)*(t+2)/2
改错:
b[i]=0;
b[a[i]-'a']++;
if(b[max]
类型七:
套用公式计算型
73.编写函数fun,函数的功能是:
根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。
s=1+1/(1+2)+1/(1+2+3)+.......+1/(1+2+3+4+......+n),
若n的值为11时,函数的值为1.833333。
填空:
'\0'0c
改错:
doublesum=0.0;
sum/=c;
74.
cos(x)-x=0的一个实根0.739085
填空:
i++mm
改错:
while((high>=2)&&(n<10))
yes=0;break;
75.
若m的值为20,则fun函数值为6.506583。
填空:
0j--j
改错:
doublef(doublex)
returns;
76.若主函数从键盘给n输入15,则输出为s=2.718282。
填空:
1-1t
改错:
for(i=1;i<=3;i++)
if(k>=0&&k<=6)
77.
输入0.21后,则输出为s=1.100000。
填空:
xnfabs(t)
改错:
for(i=1;i<=y;i++)
t=t%1000;
78.若输入8后,则输出为S=0.662872。
填空:
j=2ij
改错:
sum=j=0;
if(sum%4==2)
79.
输入20后,则输出为s=534.188884。
填空:
aab
改错:
c=c+32;
c=c+5;
80.m=12,n=8,运行结果为495.000000。
填空:
*ss++n
改错:
intj,c=0;floatxa=0.;
if(x[j])>=xa)
81.n=10时,函数值为0.909091。
填空:
*s1k[n]
改错:
doublefun(intk)
returns;
82.n=10,x=0.3时,函数值为1.349859。
填空:
ips[j]tp
改错:
doublefun(intn)
returnsum;
83.求π的值
填空:
0nt*t
改错:
for(i=0;str[i];i++)
if(substr[k+1]=='\0')
84.输出下列多项式值
填空:
n%10breakbreak
改错:
if(t==0)
*zero=count;
类型八:
求整除
85.请编写函数fun,它的功能是:
求出1到1000之内能被7或11整除、但不能同时被7和11整除的所有整数
能被7或11整除,但不能同时被7和11整除
填空:
s[i]'9'*t=n
改错:
t=*x;*x=y;
return(t);
86.
能被7或11整除
填空:
qnextnext
改错:
p=j;
p=i;
87.同时能被3与7整除的所有自然数之和的平方根
填空:
'0's++sum
改错:
if((k%13==0)||(k%17==0))
}
88.能整除形参x且不是偶数的各整数
填空:
t,ss[i]'\0'
改错:
if(i%k==0)
if(k==i)
89N以内能被5或9整除的所有自然数倒数之和
填空:
a[i]a[i]0
改错:
y=1;
d=a-i;
105去掉一个最高分和一个最低分,然后求平均值
填空:
a[i]m%10m/10
改错:
b[i]=a[i][0];
for(j=1;jif(b[i]>a[i][j])
类型九:
其它各类计算
90.请编写函数fun,它的功能是:
求Fibonacci数列中大于t的最小的一个数,结果由函数返回。
fibonacci
填空:
NN-10
改错:
s=s+(n+1.0)/n;
returnt;
91大于1小于m的非素数
填空:
M改错:
if((tt[i]>=’a’)&&(tt[i]<='z'))
tt[i]-=32;
92.3到n之间所有素数平方根之和
填空:
it++count
改错:
intfun(inta,intb,intc)
elseretrun1;
93.小于或等于lim所有素数
填空:
a[0][i]改错:
intfun(int*x,int*y)
t=*x;*x=*y;*y=t;
94.大于整数m且紧靠m的k个素数
填空:
s--return0
改错:
doublefun(intn)
c=a;a+=b;b=c;
95.w是一个大于10的无符号整数
5923=〉923
填空:
tttt.score[i]std
改错:
m=i;
if(a[k]>a[m])m=k;
96.方差S=11.730729
填空:
11i
改错:
k=i;
c=k%10;
97.相邻两元素平均值平方根之和
填空:
xnt
改错:
d=1;s=0;
d=d/10;
98.保留2位小数
填空:
48s++ctod(a)+ctod(b)
改错:
voidfun(char*s,int*a,int*b)
*a=*a+1;
*b=*b+1;
99.整数n的所有因子
填空:
&&‘A’ch
改错:
voidfun(int*a)
a[j]=a[j-1];
100.各年龄段的人数
填空:
“rb”>fwrite
改错:
p=s;
while(*p++);