二级C语言上机题库参考答案.docx
《二级C语言上机题库参考答案.docx》由会员分享,可在线阅读,更多相关《二级C语言上机题库参考答案.docx(24页珍藏版)》请在冰豆网上搜索。
![二级C语言上机题库参考答案.docx](https://file1.bdocx.com/fileroot1/2023-1/31/1ec2ad39-db78-48ea-b9cd-70962e6ed9a5/1ec2ad39-db78-48ea-b9cd-70962e6ed9a51.gif)
二级C语言上机题库参考答案
1、程序填空题
给定的程序的功能是调用fun函数建立班级通讯录。
通讯录中记录
每位学生的编号、姓名和电话号码班级的人数和学生的信息从键盘
读入,每个人的信息作为一个数据块写到名为myfile5.dat的二进
制中。
填空:
(1)STYPE
(2)FILE(3)fp
改错:
(1)for(i=0;i<=sl;i++)
(2)t[2*sl]='\0'或t[sl+sl]='\0'
编程:
*c=(a/10)*1000+(b/10)*100+(a%10)*10+(b%10);
2、程序填空题
给定程序的功能是:
从键盘输入若干文本(每行不超过80个字符),写到文件myfile4.txt中,用-1作为字符串输出输入的标志。
然后将文件的内容读出显示在屏幕上。
文件的读写分别由自定义函数ReadText和Writetext实现。
填空:
(1)*fw
(2)str(3)str
改错:
(1)voidfun(longs,long*t)
(2)s1=s1*10;
编程:
inti,j=0,min=a[0].s;
for(i=0;i{
if(a[i].s{
j=0;b[j++]=a[i];min=a[i].s;
}
elseif(min==a[i].s)
b[j++]=a[i];
}
returnj;
3、程序填空题
给定程序中,函数fun的功能是:
讲自然数1~10以及它们的平方根写到名为myfile3.txt的文本中,然后再按顺序读出显示在屏幕上。
填空:
(1)fp
(2)fclose(fp)(3)myfile3.txt
改错:
(1)for(i=j+1;i(2)p=i;
编程:
*c=(b%10)*1000+(a%10)*100+(b/10)*10+a/10;
4、程序填空题
给定程序中,函数fun的功能是:
找出形参s所指字符串出现频率最高的字母(不区分大小写),并统计出其出现的次数,例如,形参s所指的字符串为:
abcAbsmaxiess,程序执行后的输出结果为:
letter'a':
3times
letter's':
3times
填空:
(1)"r"
(2)fs(3)ft改错:
(1)if(d%2==0)
(2)s/=10;编程:
inti=0,j=0;while(s[i]){if(i%2==0&&s[i]%2==0)t[j++]=s[i];i++;}t[j]=0;
5、程序填空题
给定程序中已经建立一个带有头结点的单向链表,链表中的各结点数据域中的数据递增有序链接,函数fun的功能是:
把形参x的值放入一个新结点并插入到链表中,插入后各结点数据域的值仍保持递增有序。
填空:
(1)x
(2)p(3)s
改错:
(1)longk=1;
(2)num/=10;
编程:
inti;
floataver=0.0;
for(i=0;iaver=aver/n;
returnaver;
6、程序填空题
给定程序中已建立一个带有头结点的单向链表,在main函数中将多次调用fun函数,每调用一次fun函数,输出链表尾部节点中的数据,并释放该节点,使链表缩短。
填空:
(1)next
(2)t->data(3)t
改错:
(1)voidfun(char*a)
(2)print("%c",*a);
编程:
inti;
char*p=s,*q=t;
intn=0,m=0;
while(*p)/*计算串s的长度n,其中p为临时指针*/
{
n++;
p++;
}
while(*q)/*计算串t的长度m,其中q为临时指针*/
{
m++;
q++;
}
if(n>=m)/*比较m和n的值,设置p指向较大的指针*/
p=s;
else
p=t;
returnp;
7、程序填空题
给定程序中建立一个带有头结点的单向链表,链表中的各节点按数据域递增有序链接。
函数fun的功能是:
删除链表中数据域值相同的节点,使之只保留一个。
填空:
(1)q
(2)next(3)next
改错:
(1)缺分号
(2)p=i;
编程:
*n=0;inti;
for(i=1;i<=m;i++)
if(i%7==0||i%11==0)
a[*n++]=i;
8、程序填空题
给定的程序中,函数fun的功能是:
在带有头结点的单向链表中,
查找数据域中值为ch的结点。
找到后通过函数值返回该结点在
链表所处的顺序号;如不存在值为ch的结点,函数返回0值。
填空:
(1)0或NULL
(2)n(3)head,ch
改错:
(1)for(i=0,t=0;p[i];i++)
(2)c[t]='\0';
编程:
inti;
for(i=1;i{
If((ss[i]>='a'&&ss[i]<='z')ss[i]-=32;
9、程序填空题
给定程序中,函数fun的功能是:
统计出带有头结点的单向链表中节点的个数,存放在形参n所指的存储单元中。
填空:
(1)*n
(2)next(3)head
改错:
(1)a=NULL;
(2)if(*r==*p)
编程:
inti,j=0;
for(i=0;iif(s[i]%2==0)t[j++]=s[i];
t[j]='\0';
10、程序填空题
给定程序中,函数fun的功能是:
计算出带有头结点的单向链表中各节点数据域中值之和作为函数值返回。
填空:
(1)data
(2)next(3)head
改错:
(1)while(*r)
(2)*a=*r;a++;r++;
编程:
inti,j=0;
for((i=0;it[j++]=s[i];
t[j]='\0';
11、程序填空题
给定程序中,函数fun的功能是:
求ss所指字符串数组中长度最短的字符串所在的行下标,作为函数数值返回,并把其串长放在形参n所指变量中。
Ss所指字符串数组中共有M个字符串,且串长填空:
(1)M
(2)<(3)k
改错:
(1)if(('a'<=tt[i])&&(tt[i]<='z'))
(2)tt[i]-=32;
编程:
inti,j;
intt=0;
for(i=2;i{j=2;
while(j
{if(i%j==0)
{xx[t]=i;
t++;
break;
}
j++;
}
*k=t;
12、程序填空题
给定程序中,函数fun的功能是:
将s所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符串和非数字字符串原有的先后次序。
例如:
形参s所指的字符串为:
def35adh3kjsdf7。
执行结果为:
defadhkjsdf3537
填空:
(1)j++
(2)s[i]=t1[i](3)j
改错:
(1)for(j=i+1;j<6;j++)
(2)*(pstr+i)=*(pstr+j);
编程:
intcnt=0;
char*p=ss;
while(*p)
{if(*p==c)
cnt++;
p++;}
returncnt;
13.程序填空题
给定程序中,函数fun的功能是:
在形参s所指字符串中的每个数字字符之后插入一个*号。
例如,形参s所指的字符串为:
def35adh3kjsdf7.执行结果为:
def3*5adh3*kjsdf7*。
填空:
(1)&&
(2)0(3)s[j]
改错
(1)for(i=2;i<=m;i++)
(2)y+=1.0/(i*i);
编程题:
intc[3][3];
for(i=0,i<3;i++)
for(j=0;j<3;j++)
{c[i][j]=a[j][i];
b[i][j]=a[i][j]+c[i][j];}
14、程序填空题
给定的程序中,函数fun的功能是:
统计形参s所指字符串中数字字
符出现的次数,并存放在形参t所指的变量中,最后在主函数中
输出,例如,形参s所指的字符串为abcdef35adgh3kjsdf7。
输出
结果为:
4。
填空:
(1)s[i]
(2)'9'(3)*t=n;
改错:
(1)t=*x;*x=y;
(2)return(t);
编程:
inti;
*n=0;
for(i=7;i<1000;i++)
if(((i%7)==0)||((i%11)==0)&&((i%77)!
=0)
a[(*n)++]=i;
15、程序填空题
给定的程序中,函数fun的功能是:
把形参s所指字符串中下标为奇数的字符右移到下一个奇数的位置,最右边被移出的字符串的字符绕回放到第一个奇数位置,下标为偶数的字符不动(注:
字符串的长度大于等于2)
例如:
形参s所指字符串为:
abcdefgh,执行结果为:
ahcbedgf
填空:
(1)1
(2)s[k](3)c
改错:
(1)longs=0,t=0;
(2)t=t/10;
编程:
char*p=tt;
inti;
for(i=0;i<26;i++)
pp[i]=0;
while(*p)
{if(*p>='a'&&p<='z')
pp[*p-'a']+=1;
p++;
}
16、程序填空题
在给定程序中,函数fun的功能是:
对形参s所指字符串下标喂奇数的字符按ASCII码大小递增排序,并将排序后下标为奇数的字符取出,存入形参p所指字符数组中形成一个新串。
例如,形参s所指的字符串为baawrskjghzlicda,执行后p所指字符数组中的字符串应为:
aachjlsw。
填空:
(1)t=i
(2)i(3)0
改错:
(1)while(fabs(t)>=num)
(2)t=s/n;
编程:
intp,m=0;
for(p=0;pif(p!
=n)
{b[m]=a[p];m++;}
b[m]='\0';
17、程序填空题
给定程序中,函数fun的功能是:
在形参s所指字符串中寻找与参数c相同的字符,并在其后插入一个与之相同的字符,若找不到相同的字符则函数不做任何处理。
例如:
s所指字符字符串为:
baacda,c中得字符为:
a,执行后所指字符串为:
baaaacdaa。
填空:
(1)0或'\0'
(2)0(3)c
改错:
(1)doublesum=0.0;
(2)sum/=c;
编程:
intk;
floatstr=1.0,sum=1.0;
for(k=2;k<=n;k++)
{
sum=sum+k;
str=str+1/sum;
}
returnstr;
18、程序填空题
给定程序中,函数fun的功能是:
N×N矩阵,根据给定的m(m<=N)值,将每行元素中的值均右移m个位置,左边值为0.例如,N=3,m=2,有下列矩阵
123
456
789
程序执行结果为
001
004
007
填空:
(1)i++
(2)m(3)m
改错:
(1)while((high>=2)&&(n<10))
(2)缺分号
编程:
floatx1=0.0,x0;
do
{
x0=x1;
x1=cos(x0);
}while(fabs(x0-x1)>0.000001);
returnx1;
19、程序填空题
给定程序中,函数fun的功能是:
将N*N矩阵中元素的值按列右移1个位置,右边被移出矩阵的元素绕回左边。
例如,N=3,有下列矩阵
123
456
789
计算结果为
312
645
978
填空:
(1)N
(2)N-1(3)0
改错:
(1)s=s+(n+1.0)/n;
(2)returnt;
编程:
intf0=0,f1=1,f;
do
{f=f0+f1;
f0=f1;
f1=f;
}while(freturnf;
20、程序填空题
给定程序中,函数fun的功能是:
由NxN矩阵,将矩阵的外围元素顺时针旋转。
操作顺序是:
首先将第一行元素的值存入临时数组r,然后使第一列成为第一行,
最后一行成为第一列,最后一列成为最后一行,临时数组中的元素成为最后一列
列。
例如:
而N=3,有以下矩阵:
123
456
789
计算结果为
741
852
963
填空:
(1)0
(2)j--(3)j
改错:
(1)doublef(doublex)
(2)缺分号
编程:
doubles=0.0;
inti;
for(i=1;i<=m;i++)
s=s+log(1.0*i);
s=sqrt(s);
returns;
21、程序填空题
给定程序中,函数fun功能是:
找出100至x(x想<999)之间各位上的数字之和为15的所有整数,然后输出;符合条件的整数个数作为函数值返回。
例如,当n值为500时,个各位数字之和为15的整数有
159,168,177,186,195,249,258,267,276,285,294,339,348,357,366,375,384,393,429,438,447,456,465,474,483,492,共有26个。
填空:
(1)0
(2)x(3)t++
改错:
(1)inti,s1;
(2)t[i]=s[s1-1-i];
编程:
*c=(b/10)*1000+(a/10)*100+(b%10)*10+a%10;
22、程序填空题
给定的程序中,函数fun的功能是:
找出100~999之间(含有100和999)所有整数各位上的数字之和为x(x为以正整数)的整数,然后输出;符合条件的整数个数作为函数值返回。
例如:
当x值为5时,100~999之间各位上数字之和为5的整数有:
104,113,122,131,140,203,212,230,302,311,320,401,410,500.共有15个。
当x的值为27时,各位数字之和为27的整数是:
999。
只有1个。
填空:
(1)999
(2)t/10(3)x
改错:
(1)voidfun(longs,long*t)
(2)while(s>0)
编程:
STRECtmp;
inti,j;
for(i=0;ifor(j=i+1;jif(a[i],s{tmp=a[i];
a[i]=a[j];
a[j]=tmp;
23、程序填空题
给定程序中,函数fun的功能是:
将形参n中,各位上为偶数的数取出,并按原位从高位到低位的顺序组成一个新的数,并作为函数值返回。
例如,从主函数输入一个整数:
27638496,函数返回值为:
26845.
填空:
(1)1
(2)s(3)i*10
改错:
(1)intfun(intn,intxx[][M])
(2)printf("%d",xx[i][j]);
编程:
*c=(a/10)*1000+(b%10)*100+(a%10)*10+(b/10);
24程序填空题
给定程序中,函数fun的功能是:
将形参n中,各位上为偶数的数取出,并按原来从高位到低位相反的顺序组成一个新的数,并作为函数返回.
例如,输入一个整数:
27638496,函数返回值为:
64862.
填空:
(1)0
(2)10*x(3)n/10
改错:
(1)*t=0;
(2)if(d%2!
=0)
编程:
char*p=p1;
while(*p)
p++;
while(*p2)
{*p++=*p2++;
*p=0;
}
25.程序填空(与教材18题对应))
给定的程序中,函数fun的功能是:
将形参n所指变量中,各位上为
偶数的数去除..剩下的数按原来从高位的顺序组成一个新的数,并
通过形参兆时指针n传回所指变量.
例如:
输入一个数:
27638496,新的数:
739.
填空
(1)10
(2)0(3)x
改错
(1)if(n==0)
(2)缺分号
编程:
longs=0,t;
inti=0,j,n=strlen(p),k,s1;
if(p[0]=='-')
i++;
for(j=i;j<=n-1;j++)
{t=p[j]-'0';
s1=10;
for(k=j;kt*=s1;
s+=t;}
if(p[0]=='-')
return–s;
elsereturns;
26,程序填空题
给定程序中,函数fun的功能是:
计算下式前n项的和作为函数值返回。
S=(1*3)/(2*2)+(3*5)/(4*4)+(5*7)/(6*6)+……+(2n-1)(2n+1)/(2n*2n)
例如:
当形参n的值为10时,函数返回9.612558.
填空:
(1)0
(2)n(3)(t*t)
改错:
(1)for(i=0;str[i];i++)
(2)for(i=0;str[i];i++)
编程:
doubles;
floatn,t,pi;
t=1;pi=0;n=1.0;s=1.0;
while((fabs(s))>=eps)
{pi+=s;
t=n/(2*n+1);
s*=t;
n++;}
pi=pi*2;
returnpi;
27、程序填空题(与22题对应)
给定程序中,函数fun的功能是:
计算下式前n项的和
S=(1*3)/(2*2)-(3*5)/(4*4)+(5*7)/(6*6)-…+(-1)^(n-1)*(2n-1)(2n+1)/(2n*2n)
作为函数植返回。
例如,当形参n的值为10时,函数返回:
-0.204491
填空:
(1)1
(2)2*i(3)(-1)
改错:
(1)缺分号
(2)if(m==k)
编程:
inti;
*max=a[0];
*d=0;
for(i=0;iif(*max{*max=a[i];
*d=i;}
28、程序填空题
给定程序中,函数fun的功能是计算下式
s=3/(2*2)-5/(4*4)+7/(6*6)-…+(-1)^(n-1)(2n+1)/(2n*2n)
直到|(2n+1)/(2n*2n)|<10*e(-3)
并把计算结果作为函数值返回。
例如:
若形参e的值为1e-3,函数的返回值为0.551690。
填空:
(1)3.0
(2)>(3)(2*i+1)
改错:
(1)doublefun(intn)
(2)s=s+(double)a/b;
编程:
inti,j,max=a[0][0];
for(i=0;i<2;i++)
for(j=0;jif(maxmax=a[i][j];
returnmax;
29、程序填空题
给定程序中,函数fun的功能是计算下式
s=1/(2*2)+3/(4*4)+5/(6*6)+....(2n-1)/(2n*2n)
直到|(2n-1)/(2n*2n)|<=10e-3,并把计算结果作为函数值返回。
例如,若形参e的值为1e-3,函数的返回值2.985678.
填空:
(1)0
(2)i++(3)2.0*i
改错:
(1)voidfun(char*s,char*t)
(2)t[2*d]='\0';
编程:
inti,j=o;
for(i=1;iif(i%2==0&&s[i]%2)t[j++]=s[i];
t[j]='\0';
30程序填空题
给定程序中,函数fun的功能是,将形参s所指字符串的所有字母
字符顺序前移,其他字符顺序后移,处理后新字符串的首地址作
为函数值返回。
例如,s所指字符串为:
asd123fgh543df处理后新字符串为
asdfghdf123543.
填空:
(1)s[i]
(2)k(3)0
改错:
(1)while(*w)
(2)if(*r==*p)
编程:
inti,j=0;
for(i=1;iif(s[i]%2)t[j++]=s[i];
t[j]='\0';
31、程序填空题
给定程序中,函数fun的功能是:
将a所指4×3矩阵中第k行的元素与第0行元素交换。
例如。
有下列矩阵:
123
456
789
101112
若k为2,程序执行结果为:
789
456
123
101112
填空:
(1)k
(2)N(3)a[k][i]
改错:
(1)for(i=strlen(t)-1;i;i--)
(2)if(t[j]>t[j+1])
编程:
char*p=ss
inti=0;
while(*p)
{
if((i%2)&&(*p>='a'&&*p<='z'))
*p-=32;
p++;
i++;
}
32、程序填空题
给定程序中,函数fun的功能是:
将a所指3*5矩阵中第k列的元素左移到第0列,第k列以后的每列元素依次左移,原来左边的各列依次绕道右边。
例如,有以下矩阵:
12345
12345
12345
若结果为,程序执行结果为:
34512
34512
34512
填空:
(1)k
(2)N-1(3)temp
改错:
(1)voidfun(inta[][M],intm)
(2)a[j][k]=(k+1)*(j+1);
编程:
*c=(a%10)*1000+(b%10)*100+(a/10)*10+b/10;
33、程序填空题
给定程序中,函数fun的功能是:
在3*4的矩阵中代出在行上最大、在列上最小的那个元素,若没有符合条件的元素则输出相应信息。
例如:
有下列矩阵
12134
78106
3597
程序执行的结果为:
find:
a[2][2]=9
填空:
(1)j
(2)0(3)i++
改错:
(1)for(i=2;i<=m;i++)
(2)y-=1.0/(i*i);
编程:
floatav=0.0;
inti,j=0;
for(i=0;iav+=score[i];
av/=m;
for(i=0;iif(av>score[i])below[j++]=score[i];
returnj;
10;
34、程序填空题
给定程序中,函数fun的功能是:
把形参s所指字符串中最右边的n个字符复制到形参t所指字符数组中,形成一个新串。
若s所指字符串的长度小于n,则将整个字符串复制到形参t所指字符数组中。
例如,形参s所指的字符串味:
abcdefgh,n的值为5,程序执行后t所指字符串数组中的字符串为:
defgh.
填空:
(1)t,s
(2)s[i](3)0
改错:
(1)if(i%k==0)
(2)if(k>=i)
编程:
inti=0;
*n=0;
for(i=1;i<=