计算机二级c语言上机题库最新题库绝对准确Word格式.docx
《计算机二级c语言上机题库最新题库绝对准确Word格式.docx》由会员分享,可在线阅读,更多相关《计算机二级c语言上机题库最新题库绝对准确Word格式.docx(54页珍藏版)》请在冰点文库上搜索。
![计算机二级c语言上机题库最新题库绝对准确Word格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/8/cbb8ec23-8b66-4dd4-9da6-e59681e6392a/cbb8ec23-8b66-4dd4-9da6-e59681e6392a1.gif)
二级C_第3套上机题
【参考答案】对形参b所指结构体变量中的数据进行修改
(1)->
sno
(2)->
name (3)&
t
【参考答案】用递归算法求形参a的平方根
(1)doublefun(doublea,doublex0)
(2)if(fabs(x1-x0)>
=0.00001)
【参考答案】把高于等于平均分的学生数据放在b所指的数组中
doublefun(STREC*a,STREC*b,int*n)
inti;
doubleav=0.0;
*n=0;
for(i=0;
N;
av=av+a[i].s;
av=av/N;
/*求平均值*/
i++)
if(av<
=a[i].s)
{b[*n]=a[i];
*n=*n+1;
}/*将高于等于平均分的学生存入b所指存储单元
中,并统计人数*/
returnav;
/*返回平均分*/
二级C_第4套上机题
【参考答案】用指针数组对形参ss所指字符串数组中的字符串按由长到短
的顺序排序
(1)i
(2)ps[j] (3)tp
参考答案】平方根之和sum。
n的值通过形参传入
(1)doublefun(intn)
(2)returnsum;
【参考答案】S=1+x+x2/2!
+x3/3!
+…+xn/n!
级数和
doublefun(doublex,intn)
doubles=1.0,s1=1.0;
for(i=1;
{s1=s1*i;
/*各项中的阶乘*/
s=s+pow(x,i)/s1;
/*按公式求出*/
returns;
二级C_第5套上机题
参考答案】将存放学生数据的结构体数组,按姓名的字典序(从小到大)
排序。
(1)structstudent
(2)n-1
(3)a[i].name,a[j].name
【参考答案】从p所指字符串中找出ASCII码值最大的字符
(1)q=p+i;
(2)while(q>
p)
【参考答案】把指定分数范围内的学生数据放在b所指的数组中,
intfun(STREC*a,STREC*b,intl,inth)
inti,j=0;
if(a[i].s>
=l&
a[i].s<
=h)
/*将分数高于l,低于h的学生记录存入结构体数组b中*/
b[j++]=a[i];
returnj;
/*返回分数范围内的学生人数*/
二级C_第6套上机题
【参考答案】将s所指字符串中的所有数字字符移到所有非数字字符之后
(1)j++或j+=1或++j或j=j+1
(2)s[i]=t1[i] (3)j
【参考答案】冒泡法对6个字符串进行升序排列。
(1)for(j=i+1;
j<
6;
j++)
(2)*(pstr+i)=*(pstr+j);
【参考答案】求ss所指字符串中指定字符的个数
intfun(char*ss,charc)
inti=0;
for(;
*ss!
\0'
;
ss++)
if(*ss==c)
i++;
/*求出ss所指字符串中指定字符的个数*/
returni;
二级C_第7套上机题
【参考答案】e的值为1e-3,函数的返回值为2.985678
(1)0
(2)i++或++i或i+=1或i=i+1 (3)2.0*i
【参考答案】将s所指字符串的正序和反序进行连接
(1)voidfun(char*s,char*t)
(2)t[2*d]='
或t[d+i]='
或t[2*d]=0;
或t[d+i]=0;
【参考答案】将s所指字符串中除了下标为奇数同时ASCII值
voidfun(char*s,chart[])
inti,j=0,n;
n=strlen(s);
n;
if(i%2!
=0&
s[i]%2!
=0)
{t[j]=s[i];
/*将下标为奇数同时ASCII码值为奇数的字符放入数组t中
*/
j++;
t[j]='
/*最后加上结束标识符*/
二级C_第8套上机题
【参考答案】10001、"
ZhangSan"
、95、80、88,修改后输出t中的数据应
为:
10002、"
LiSi"
、96、81、89将形参a所指结构体变量s中的数据进行
修改,并把a的地址作为函数值返回主函数,从主函数中输出修改的数据
。
(1)structstudent*
(2)a->
score[i] (3)a
【参考答案】从N个字符串中找出最长的串,并将其地址作为函数值返回
(1)char*fun(char(*sq)[M])
(2)returnsp;
【参考答案】当a=45,b=12,调用该函数后c=2415;
将a、b中的两个
两位正整数合并成一个新的整数放在c中
voidfun(inta,intb,long*c)
*c=a%10+(b/10)*10+(a/10)*100+(b%10)*1000;
二级C_第9套上机题
【参考答案】将形参a中的数据进行修改,把修改后的数据作为函数值返
回主函数进行输出10001、"
、95、80、88,修改后的数据应为
:
、96、。
(1)structstudent
(2)a.name
(3)a.score[i]
【参考答案】删除数列中值为x的元素。
变量n中存放数列中元素的个数
(1)if(p==n)return-1;
(2)a[i]=a[i+1];
【参考答案】
*c=a/10+(b%10)*10+(a%10)*100+(b/10)*1000;
二级C_第10套上机题
【参考答案】在形参s所指字符串中的每个数字字符之后插入一个*号
(1)&
(2)0或'
(3)s[j]或*(s+j)
【参考答案】根据整型形参m若m的值为5,则应输出1.463611。
(1)for(i=2;
=m;
(2)y+=1.0/(i*i);
或y+=(double)1.0/(i*i)
【参考答案】实现B=A+A'
,即将矩阵A加上A的转置,存放在矩阵B中
voidfun(inta[3][3],intb[3][3])
inti,j;
3;
for(j=0;
b[i][j]=a[i][j]+a[j][i];
/*把矩阵a加上a的转置,存放在矩阵b中*/
二级C_第11套上机题
【参考答案】判断形参s所指字符串是否是"
回文"
(Palindrome)
(1)s
(2)-- (3)return0
【参考答案】求出如下分数列的前n项之和若n=5,则应输出8.39166
(2)s=s+(double)a/b;
【参考答案】大于整数m且紧靠m的k个素数存入所指的数组中。
例如,若输入17,5,则应输出19、23、29、31、37。
voidfun(intm,intk,intxx[])
inti,j,n;
for(i=m+1,n=0;
k;
i++)/*找大于m的素数,循环k次,即找出紧靠m的
k个素数*/
{for(j=2;
j++)/*判断一个数是否为素数,如果不是,跳出此循
环,判断下一个数*/
if(i%j==0)break;
if(j>
=i)/*如果是素数,放入数组xx中*/
xx[n++]=i;
二级C_第12套上机题
【参考答案】统计长整数n的各位上出现数字1、2、3的次数,并用外部(
全局)变量c1、c2、c3返回主函数。
(1)n%10
(2)break (3)break
【参考答案】统计一个无符号整数中各位数字值为0的个数
(1)if(t==0)
(2)*zero=count;
【参考答案】例如,在主函数中从键盘为n输入50后,输出为S=1.718282
注意:
要求n的值在大于1但不大于100之间。
doublefun(intn)
doublesum=0,tmp=1;
tmp=tmp*i;
sum+=1.0/tmp;
returnsum;
二级C_第13套上机题
【参考答案】在形参ss所指字符串数组中查找与形参t所指字符串相同的
串,找到后返回该串在字符串数组中的位置
(1)N
(2)i (3)-1
【参考答案】从整数10到55之间,查找能被3整除且有一位上的数值是5的
数,把这些数放在b所指的数组中
(1)a2=k/10;
(2)returni;
【参考答案】将字符串尾部的*号全部删除,前面和中间的*号不动。
voidfun(char*a)
while(*a!
)
a++;
a--;
/*指针a指向字符串的尾部*/
while(*a=='
*'
a--;
/*指针a指向最后一个字母*/
*(a+1)='
/*在字符串最后加上结束标志符*/
二级C_第14套上机题
【参考答案】统计形参s所指的字符串中数字字符出现的次数,并存放在
形参t所指的变量中
(1)s[i]
(2)'
9'
(3)*t=n
【参考答案】实现两个变量值的交换,规定不允许增加语句和表达式。
(1)t=*x;
*x=y;
(2)return(t);
或returnt;
【参考答案】求出1~1000之间能被7或11整除,但不能同时被7和11整除的
所有整数,并将其放在a所指的数组中
voidfun(int*a,int*n)
=1000;
/*求1到1000之内能被7或11整除、但不能同时被7和11整除的所有整数,
并放入数组a中*/
if((i%7==0||i%11==0)&
i%77!
=0)
a[j++]=i;
*n=j;
二级C_第15套上机题
【参考答案】下式前n项的和,当形参n的值为10时,函数返回:
-
0.204491。
(1)1
(2)2*i (3)(-1)
【参考答案】判断一个整数是否为素数,若是素数返回1,否则返回0。
(1)k++;
(2)if(m==k)
【参考答案】找出一维整型数组元素中最大的值及其所在的下标,并通过
形参传回
voidfun(inta[],intn,int*max,int*d)
*max=a[0];
*d=0;
i++)/*将最大的元素放入指针max所指的单元,最大元
素的下标放入指针d所指的单元*/
if(*max<
a[i])
{*max=a[i];
*d=i;
二级C_第16套上机题
【参考答案】计算
的前n项。
若x=2.5,函数值为12.182340。
(1)1.0
(2)1 (3)i
【参考答案】找出100~n(不大于1000)之间三个位上的数字都相等的所有
整数,把这些整数放在s所指的数组中
(1)k=i;
(2)b=k%10;
【参考答案】计算并输出给定10个数的方差例如,给定的10个数为95.0、
89.0、76.0、65.0、88.0、72.0、85.0、81.0、90.0、56.0,则输出为S
=11.730729。
doublefun(doublex[10])
doublex1=0.0,s=0.0;
10;
x1=x1+x[i];
x1=x1/10;
/*求10个数的平均值*/
s=s+(x[i]-x1)*(x[i]-x1);
returnsqrt(s/10);
/*求10个数的方差*/
二级C_第17套上机题
【参考答案】在形参ss所指字符串数组中,将所有串长超过k的字符串中
后面的字符删除,只保留前面的k个字符
(1)[M]
(2)N (3)'
【参考答案】当给指定精度的变量eps输入0.0005时,应输出Pi=
3.140578。
π/2=1+1/3+1/3×
2/5+1/3×
2/5×
3/7+1/3×
3/7×
4/9+
(1)t=1.0;
(2)return(s*2);
【参考答案】使字符串的前导*号不得多于n个,若多于n个,则删除多余
的*号;
若少于或等n个,则不做处理,字符串中间和尾部的*号不删除。
voidfun(char*a,intn)
inti=0;
intk=0;
char*p,*t;
p=t=a;
/*开始时,p与t同时指向数组的首地址*/
while(*t=='
)/*用k来统计前部星号的个数*/
{k++;
t++;
if(k>
n)/*如果k大于n,则使p的前部保留n个星号,其后的字符依次存入
数组a中*/
{while(*p)
{a[i]=*(p+k-n);
i++;
p++;
a[i]='
/*在字符串最后加上结束标识位*/
二级C_第18套上机题
【参考答案】把形参s所指字符串中下标为奇数的字符右移到下一个奇数
位置
(1)1
(2)s[k]或*(s+k) (3)c
【参考答案】表达式
s=aa…aa-…-aaa-aa-a
(1)longs=0,t=0;
(2)t=t/10;
【参考答案】统计在tt所指的字符串中'
到'
26个小写字母各自出现的
次数,并依次放在pp所指的数组
voidfun(char*tt,intpp[])
26;
pp[i]=0;
/*初始化pp数组各元素为0*/
*tt!
tt++)
if(*tt>
*tt<
)
pp[*tt-'
]++;
二级C_第19套上机题
【参考答案】查找含有形参substr所指子串的所有字符串,并输出,若没
找到则输出相应信息
(1)N
(2)substr (3)0
(1)fun(intx,inty,intz)或intfun(intx,inty,intz)
(2)returnj;
【参考答案】只删除字符前导和尾部的*号,串中字母间的*号都不删除。
voidfun(char*a,intn,inth,inte)
inti,j=0;
for(i=h;
n-e;
i++)/*第一个字母和最后一个字母之间的字符全不删
除*/
a[j++]=a[i];
a[j]='
/*在字符串最后加上结束标识*/
二级C_第20套上机题
【参考答案】首先从素数2开始,将所有2的倍数的数从数表中删去(把数
表中相应位置的值置成0);
(1)a[i]
(2)a[i] (3)0
【参考答案】为一个偶数寻找两个素数,这两个素数之和等于该偶数,并
将这两个素数通过形参指针传回主函数。
(1)y=1;
(2)d=a-i;
【参考答案】计算并输出n(包括n)以内所有能被5或9整除的自然数的倒数
之和。
doublesum=0.0;
if(i%5==0||i%9==0)
sum+=1.0/i;
二级C_第21套上机题
【参考答案】将形参s所指字符串中下标为奇数的字符取出,并按ASCII码
大小递增排序,将排序后的字符存入形参p所指字符数组中,形成一个新
串。
(1)while(fabs(t)>
=num)
(2)t=s/n;
【参考答案】用下面的公式求π的近似值,直到最后一项的绝对值小于指
定的数(参数num)为止。
(1)t=i
(2)i (3)'
或0
【参考答案】删除一个字符串中指定下标的字符。
voidfun(chara[],charb[],intn)
inti,k=0;
a[i]!
if(i!
=n)
/*将不是指定下标的字符存入数组b中*/
b[k++]=a[i];
b[k]='
/*在字符串最后加上结束标识*/
二级C_第22套上机题
【参考答案】直到
<10-6。
若x=2.5,函数值为12.182494。
(1)x
(2)n (3)t
【参考答案】计算n的5次方的值(规定n的值大于2且小于8)
(1)d=1;
(2)s=0;
(3)d=d/10;
【参考答案】计算并输出给定数组(长度为9)中每相邻两个元素的平均值
的平方根之和。
doublefun(doublex[9])
inti,j=1;
9;
=8)
sum+=sqrt((x[i]+x[i+1])/2.0);
j++;
/*相邻两个元素之
平均值的平方根之和*/
二级C_第23套上机题
【参考答案】若形参ch中是小写英文字母,则转换成对应的大写英文字母
;
若ch中是大写英文字母,则转换成对应的小写英文字母;
(1)&
(2)'
A'
(3)ch
【参考答案】例如,输入1、2、3、4,程序运行后输出以下方阵:
4 1 2 3
3 4 1 2
2 3 4 1
1 2 3 4
(1)voidfun(int*a)
(2)a[j]=a[j-1];
【参考答案】计算并输出给定整数n的所有因子(不包括1与自身)之和
intfun(intn)
ints=0,i;
for(i=2;
=n-1;
i++)/*将n减1累加*/
if(n%i==0)
s+=i;
二级C_第24套上机题
【参考答案】从三个形参a、b、c中找出中间的数,并作为函数值返回。
(1)a
(2)a (3)b
【参考答案】将大写字母转换为对应小写字母之后的第5个字母
(1)c=c+32;
(2)c=c+5;
【参考答案】计算并输出
S=1+(1+20.5)+(1+20.5+30.5)+…+(1+20.5+30.5+…+n0.5)
的值。
doubles=0.0,s1=0.0;
{s1=s1+pow(i,0.5);
/*求每一项*/
s=s+s1;
/*按公式求出s*/
二级C_第25套上机题
【参考答案】在形参s所指字符串中寻找与参数c相同的字符,并在其后插
入一个与之相同的字符,
(1)'
(2)0 (3)c
【参考答案】:
计算数组元素中所有值为正数的平均值(不包括0)。
(1)doublesum=0.0;
(2)sum/=c;
【参考答案】若n的值为11时,函数的值为1.833333
floatfun(intn)
inti,s1=0;
floats=0.0;
{s1=s1+i;
/*求每一项的分母*/
s=s+1.0/s1;
/*求多项式的值*/
二级C_第26套上机题
【参考答案】从形参ss所指字符串数组中,删除所有串长超过k的字符串
,函数返回剩余字符串的个数
(1)N
(2)k (3)ss[i]
【参考答案】逐个比较p、q所指两个字符串对应位置上的字符,并把
ASCII值大或相等的字符依次存放到c所指的数组中
(1)intk=0;
(2)while(*p||*q)
【参考答案】除了字符串前导的*号之外,将串中其它*号全部删除。
不得
使用C语言提供的字符串函数。
char*p=a;
while(*p&
*p=='
a[i]=*p;
while(*p)
if(*p!
{a[i]=*p;
a[i]='
二级C_第27套上机题
【参考答案】各位上为偶数的数取出,并按原来从高位到低位相反的顺序
组成一个新数,作为函数值返回。
(1)0
(2)10*x(3)n/10
【参考答案】将长整型数中各位上为奇数的数依次取出,构成一个新数放
在t中。
高位仍在高位,低位仍在低位。
(1)*t=0;
(2)if(d%2!
=0)或if(d%2==1)
【参考答案】实现两个字符串的连接(不要使用库函数strcat),