二级c语言上机题.docx
《二级c语言上机题.docx》由会员分享,可在线阅读,更多相关《二级c语言上机题.docx(63页珍藏版)》请在冰豆网上搜索。
二级c语言上机题
二级C语言上机考试复习资料
(前面为填空题题目,后面同序号依次为此套题的填空题、改错题、编程题答案)
1、给定程序中,函数fun的功能是根据形参i的值返回某个函数的值。
当调用正确时,程序输出:
x1=5.000000,x2=3.000000,x1*x1+x1*x2=40.000000
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
1、
(1)double
(2)f1(3)f2
1、
(1)char*fun(char*s,char*t)
(2)ss++;(3)tt++;
1、voidfun(char*w,intm)
{
chara[N];
inti;
for(i=0;iwhile(w[i]){w[i-m]=w[i];i++;}
i--;m--;
for(;m>=0;m--,i--)w[i]=a[m];
}
2、程序通过定义学生结构体数组,存储了若干名学生的学号、姓名和3门课的成绩。
函数fun的功能是将存放学生数据的结构体数组,按照姓名的字典序(从小到大)排序。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
2、
(1)structstudent
(2)n-1(3)a[i].name,a[j].name
2、
(1)q=p+i;
(2)while(q>p)
2.intfun(STREC*a,STREC*b,intl,inth)
{
inti,j=0;
for(i=0;i{
if(a[i].s>=l&&a[i].s<=h)
{
b[j]=a[i];
j++;
}
}
returnj;
}
3、给定程序中,函数fun的功能是:
计算形参x所指数组中N个数的平均值(规定所有数均为正数),作为函数值返回;并将大于平均值的数放在形参y所指数组中,在主函数中输出。
例如,有10个正数:
4630324061745154826,平均值为:
30.500000
主函数中输出:
4632404548
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
3、
(1)0
(2)x[i]/N(3)j++
3、
(1)doublefun(intm)
(2)for(i=100;i<=m;i~1+=0)
3.fun(STUa[],STU*s)
{
inti;
*s=a[0];
for(i=1;i{
if(a[i].ss)
{
*s=a[i];
}
}
}
4、给定程序中,函数fun的功能是:
将a所指4×3矩阵中第k行的元素与第0行元素交换。
例如,有下列矩阵:
123
456
789
101112
4、
(1)k
(2)N(3)a[k][i]
4、
(1)for(i=strlen(t)-1;i;i--)
(2)if(t[j]>t[j+1])
4.voidfun(char*ss)
{
inti=1;
while(ss[i-1]&&ss[i])
{
if(ss[i]>='a'&&ss[i]<='z')ss[i]+='A'-'a';
i+=2;
}
}
5、给定程序中,函数fun的功能是将a和b所指的两个字符串转换成面值相同的整数,并进行相加作为函数值返回,规定字符串中只含9个以下数字字符。
例如,主函数中输入字符串:
32486和12345,在主函数中输出的函数值为:
44831。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
5、
(1)'0'
(2)s++(3)ctod(a)+ctod(b)
5、
(1)voidfun(char*s,int*a,int*b)
(2)++(*a);(3)++(*b);
5.floatfun(floath)
{
longi=h*1000;
if(i%10<5)return(i/10)/100.0;
elsereturn(i/10+1)/100.0;
}
6、给定程序中,函数fun的功能是:
计算下式前n项的和作为函数值返回。
例如,当形参n的值为10时,函数返回:
9.612558。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
6、
(1)0
(2)n(3)(t*t)
6、
(1)for(i=0;str[i];i++)
(2)if(substr[k+1]==0)
6.doublefun(doubleeps)
{
doublei=1,a=1,b=1,c=1,s=0;
while(c>=eps)
{
s+=c;
a*=i;
b*=2*i+1;
c=a/b;
i++;
}
returns*2;
}7、给定程序中,函数fun的功能是:
在3×4的矩阵中找出在行上最大、在列上最小的那个元素,若没有符合条件的元素则输出相应信息。
例如,有下列矩阵:
12134
78106
3597
程序执行结果为:
find:
a[2][2]=9
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
7、
(1)j
(2)0(3)i++
7、
(1)for(i=2;i<=m;i++)
(2)y-=1.0/i/i;
7.intfun(intscore[],intm,intbelow[])
{
inti,j=0,s=0;
for(i=0;is/=m;
for(i=0;i{
if(score[i]
{
below[j]=score[i];
j++;
}
}
returnj;
}
8、给定程序中,函数fun的功能是:
在形参ss所指字符串数组中,删除所有串长超过k的字符串,函数返回所剩字符串的个数。
ss所指字符串数组中共有N个字符串,且串长小于M。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
8、
(1)N
(2)k(3)ss[i]
8、
(1)intk=0;
(2)while(*p||*q)
8.voidfun(char*a)
{
inti=0,j=0;
while(a[i])
{
if(j==0&&a[i]!
='*')
{
j=i+1;
}
elseif(a[i]!
='*')
{
a[j]=a[i];
j++;
}
i++;
}
a[j]=0;
}
9、程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。
函数fun的功能是将形参a所指结构体变量中的数据赋给函数中的结构体变量b,并修改b中的学号和姓名,最后输出修改后的数据。
例如:
a所指变量中的学号、姓名、和三门课的成绩依次是:
10001、"ZhangSan"、95、80、88,则修改后输出b中的数据应为:
10002、"LiSi"、95、80、88。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
9、
(1)a
(2)b.name(3)score[i]
9、
(1)s[j++]=s[i];
(2)s[j]=0;
9.voidfun(char*a)
{
inti=0,j=0;
while(a[i])
{
if(a[i]!
='*')
{
j=i;
break;
}
i++;
}
while(a[i])
{
a[i-j]=a[i];
i++;
}
i-=j;
for(;j>0;j--)
{
a[i]='*';
i++;
}
}
10、给定程序中,函数fun的功能是:
在形参ss所指字符串数组中,将所有串长超过k的字符串中右边的字符删除,只保留左边的k个字符。
ss所指字符串数组中共有N个字符串,且串长小于M。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
10、
(1)[M]
(2)N(3)0
10、
(1)t=1;
(2)return(2*s);
10.voidfun(char*a,intn)
{
inti=0,j=0;
while(a[i])
{
if(a[i]!
='*')
{
j=i;
break;
}
i++;
}
if(j>n)
{
while(a[i])
{
a[i-j+n]=a[i];
i++;
}
a[i-j+n]=0;
}
}
11、给定程序中,函数fun的功能是:
把形参s所指字符串中最右边的n个字符复制到形参t所指字符数组中,形成一个新串。
若s所指字符串的长度小于n,则将整个字符串复制到形参t所指字符数组中。
例如,形参s所指的字符串为:
abcdefgh,n的值为5,程序执行后t所指字符数组中的字符串应为:
defgh。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
11、
(1)t,s
(2)s[i](3)0
11、
(1)if(i%k==0)
(2)if(k>=i)
11.voidfun(intx,intpp[],int*n)
{
inti;
*n=0;
for(i=1;i<=x;i+=2)
{
if(x%i==0)
{
pp[*n]=i;
(*n)++;
}
}
}
12、给定程序中,函数fun的功能是:
将形参s所指字符串中的所有数字字符顺序前移,其他字符顺序后移,处理后新字符串的首地址作为函数值返回。
例如,s所指字符串为:
asd123fgh5##43df,
处理后新字符串为:
123543asdfgh##df。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
12、
(1)j
(2)k(3)p
12、
(1)while(i(2)if(*a)
12.voidfun(char*s,chart[])
{
inti=0,j=0;
while(s[i])
{
if(i%2!
=0||s[i]%2==0)
{
t[j]=s[i];
j++;
}
i++;
}
t[j]=0;
}
13、给定程序中,函数fun的功能是:
找出100~999之间(含100和999)所有整数中各位上数字之和为x(x为一正整数)的整数,然后输出;符合条件的整数个数作为函数值返回。
例如,当x值为5时,100~999之间各位上数字之和为5的整数有:
104、113、122、131、140、203、212、221、230、302、311、320、401、410、500。
共有15个。
当x值为27时,各位数字之和为27的整数是:
999。
只有1个。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
13、
(1)999
(2)t/10(3)x
13、
(1)voidfun(longs,long*t)
(2)while(s>0)
13.voidfun(inta,intb,long*c)
{
*c=a/10*100+a%10+b/10*10+b%10*1000;
}
14、给定程序中,函数fun的功能是:
将形参s所指字符串中的数字字符转换成对应的数值,计算出这些数值的累加和作为函数值返回。
퓴例如,形参s所指的字符串为:
abs5def126jkm8,程序执行后的输出结果为:
22。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
14、
(1)48
(2)s++(3)sum
14、
(1)if((k%13==0)||(k%17==0))
(2)}
14.doublefun(intn)
{
inti;
doubles=0;
for(i=1;i{
if(i%3==0&&i%7==0)s+=i;
}
returnsqrt(s);
}
15、给定程序中,函数fun的功能是将带头节点的单向链表结点数据域中的数据从小到大排序。
即若原链表结点数据域从头至尾的数据为:
10、4、2、8、6,排序后链表结点数据域从头至尾的数据为:
2、4、6、8、10。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
15、
(1)h->next
(2)p->next(3)>=
15、
(1)p=h->next;
(2)p=p->next;
15.voidfun(int(*s)[10],int*b,int*n,intmm,intnn)
{
inti,j;
*n=0;
for(i=0;ifor(j=0;j{
b[*n]=s[i][j];
(*n)++;
}
}
16、程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。
函数fun的功能是将形参a所指结构体变量s中的数据进行修改,并把a中地址作为函数值返回主函数,在主函数中输出修改后的数据。
例如:
a所指变量s中的学号、姓名、和三门课的成绩依次是:
10001、"ZhangSan"、95、80、88,修改后输出t中的数据应为:
10002、"LiSi"、96、81、89。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
16、
(1)structstudent*
(2)a->score[i](3)a
16、
(1)char*fun(char(*sq)[M])
(2)returnsp;
16.intfun(STRECa[])
{
inti,j;
STRECb;
for(i=0;ifor(j=i+1;jif(a[i].s{b=a[i];a[i]=a[j];a[j]=b;}
}
17、给定程序中,函数fun的功能是:
计算形参x所指数组中N个数的平均值(规定所有数均为正数),将所指数组中大于平均值的数据移至数组的前部,小于等于平均值的数据移至x所指数组的后部,平均值作为函数值返回,在主函数中输出平均值和移动后的数据。
例如,有10个正数:
4630324061745154826,平均值为:
30.500000
移动后的输出为:
4632404548306171526
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
17、
(1)s/N
(2)j++(3)-1
17、
(1)#include"stdio.h"
(2)upfst(char*p)
17.doublefun(intw[][N])
{
doubles=0;
inti;
for(i=0;is+=w[0][i]+w[N-1][i]+w[i][0]+w[i][N-1];
s-=w[0][0]+w[0][N-1]+w[N-1][0]+w[N-1][N-1];
returns/(N*4-4);
}
18、给定程序中,函数fun的功能是:
计算出形参s所指字符串中包含的单词个数,作为函数值返回。
为便于统计,规定各单词之间用空格隔开。
例如,形参s所指的字符串为:
ThisisaClanguageprogram.,函数的返回值为6。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
18、
(1)n++
(2)0(3)s++
18、
(1)t+=s[k];
(2)*aver=ave;
18.intfun(int*s,intt,int*k)
{
inti;
*k=0;
for(i=0;iif(s[i]>s[*k])*k=i;
}
19、给定程序中,函数fun的功能是:
在形参ss所指字符串数组中查找与形参t所指字符串相同的串,找到后返回该串在字符串数组中的位置(下标值),未找到则返回-1。
ss所指字符串数组中共有N个内容不同的字符串,且串长小于M。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
19、
(1)N
(2)i(3)-1
19、
(1)a2=k/10;
(2)returni;
19.voidfun(char*a)
{
inti=0,j=0;
while(a[i])
{
if(a[i]!
='*')j=0;
elsej++;
i++;
}
a[i-j]=0;
}
20、给定程序中,函数fun的功能是:
找出N×N矩阵中每列元素中的最大值,并按顺序依次存放于形参b所指的一维数组中。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
20、
(1)a[0][i]
(2)<(3)x,y
20、
(1)intfun(int*x,int*y)
(2)t=*x;*x=*y;*y=t;
20.intfun(intlim,intaa[MAX])
{
inti,j,k=0;
for(i=2;i<=lim;i++)
{
for(j=2;j
if(i%j==0)break;
if(j==i)
{
aa[k]=i;
k++;
}
}
returnk;
}
21、给定程序中,函数fun的功能是:
判断形参s所指字符串是否是"回文"(Palindrome),若是,函数返回值为1;不是,函数返回值为0。
"回文"是正读和反读都一样的字符串(不区分大小写字母)。
例如,LEVEL和Level是"回文",而LEVLEV不是"回文"。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
21、
(1)s
(2)--(3)return0
21、
(1)doublefun(intn)
(2)c=a;a+=b;b=c;
21.voidfun(intm,intk,intxx[])
{
inti,j=m+1,n=0;
while(n{
for(i=2;iif(j%i==0)break;
if(j==i)
{
xx[n]=i;
n++;
}
j++;
}
}
22、程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。
所有学生数据均以二进制方式输出到student.dat文件中。
函数fun的功能是从指定文件中找出指定学号的学生数据,读入此学生数据,对该生的分数进行修改,使每门课的分数加3分,修改后重写文件中该学生的数据,即用该学生的新数据覆盖原数据,其它学生数据不变;若找不到,则什么都不做。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
22、
(1)feof(fp)
(2)==sno(3)sizeof(STU)
22、
(1)n=strlen(aa);
(2)ch=aa[i];
22.doublefun(STREC*h)
{
doublea=0;
STREC*p=h->next;
while(p)
{
if(as)a=p->s;
p=p->next;
}
returna;
}
23、程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。
函数fun的功能是对形参b所指结构体变量中的数据进行修改,最后在主函数中输出修改后的数据。
例如:
b所指变量t中的学号、姓名、和三门课的成绩依次是:
10002、"ZhangQi"、93、85、87,修改后输出t中的数据应为:
10004、"LiJie"、93、85、87。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
23、
(1)->sno
(2)->name(3)&t
23、
(1)doublefun(doublea,doublex0)
(2)if(fabs(x1-x0)>0.00001)
23.doublefun(STREC*a,STREC*b,int*n)
{
inti;
doubles=0;
for(i=0;is+=a[i].s;
s/=N;
*n=0;
for(i=0;iif(a[i].s>s)
{
b[*n]=a[i];
(*n)++;
}
returns;
}
24、给定程序中,函数fun的功能是:
计算形参x所指数组中N个数的平均值(规定所有数均为正数),将所指数组中小于平均值的数据移至数组的前部,大于等于平均值的数据移至x所指数组的后部,平均值作为函数值返回,在主函数中输出平均值和移动后的数据。
例如,有10个正数:
4630324061745154826,平均值为:
30.500000
移动后的输出为:
3061715264632404548
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
24、
(1)x[i]/N
(2)j++(3)i++
24、
(1)num[k]=0;
(2)switch(*s)
24.intfun(inta[M][N])
{
inti,s=0;
for(i=0;is+=a[0][i]+a[M-1][i];
for(i=1;is+=a[i][0]+a[i][N-1];
returns;
}
25、给定程序中,函数fun的功能是计算下式
例如,若形参e的值为1e-3,函数的返回值2.735678。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
25、
(1)0
(2)i++(3)2.*i
25、
(1)voidfun(char*s,char*t)
(2)t[2*d]=0;
25.voidfun(char*s,chart[])
{
inti=0,j=0;
while(s[i])
{
if(i%2==1&&s[i]%2==1)
{
t[j]=s[i];
j++;
}
}
t[j]=0;
}
26、给定程序中,函数fun的功能是建立一个N×N的矩阵。
矩阵元素的构成规律是:
最外层元素的值全部为1;从外向内第2层元素的值全部为2;第3层元素的值全部为3,…依次类推。
例如,若N=5,生成的矩阵为:
11111
12221
12321
12221
11111
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
26、
(1)[N]
(2)i(3)i+1
26、
(1)aa[i]=m%k;
(2)printf("%d",aa[i-1]);
26.fun(char(*a)[81],intnum,char**max)
{
inti,j,k=strlen(a[0]);
*max=a[0];
for(i=1;i{
j=strlen(a[i]);
if(k{
k=j;
*max=a[i];
}
}
}
27、给定程序中,函数fun的功能是用函数指针指向要调用的函数,并进行调用。
规定在__2