计算机二级C语言上机题及答案汇总50套.docx
《计算机二级C语言上机题及答案汇总50套.docx》由会员分享,可在线阅读,更多相关《计算机二级C语言上机题及答案汇总50套.docx(195页珍藏版)》请在冰点文库上搜索。
计算机二级C语言上机题及答案汇总50套
二级C语言上机预测题
目录
一、程序填空题1
二、程序修改题13
三、程序编写题22
参考答案31
二级C语言上机考试复习资料,共有50套题目
一、程序填空题
1、给定程序中,函数fun的功能是:
在任意给定的9个正整数中找出按升序排列时处于中间的数,将原数据序列中比该中间数小的数用该中间数替换,位置不变,在主函数中输出处理后的数据序列,并将中间数作为函数值返回。
例如,有9个正整数:
1572387582145
按升序排列时的中间数为:
8
处理后主函数中输出的数列为:
8882387882145
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
#defineN9
intfun(intx[])
{inti,j,k,t,mid,b[N];
for(i=0;ifor(i=0;i<=N/2;i++)
{k=i;
for(j=i+1;jb[j])k=j;
if(k!
=i)
{
/**********found**********/
t=b[i];b[i]=___1___;b[k]=t;
}
}
/**********found**********/
mid=b[___2___];
for(i=0;i/**********found**********/
if(x[i]___3___mid)x[i]=mid;
returnmid;
}
main()
{inti,x[N]={1,5,7,23,87,5,8,21,45};
for(i=0;iprintf("\nThemiddatais:
%d\n",fun(x));
for(i=0;iprintf("\n");
}
2、给定程序中,函数fun的功能是建立一个N×N的矩阵。
矩阵元素的构成规律是:
最外层元素的值全部为1;从外向内第2层元素的值全部为2;第3层元素的值全部为3,…依次类推。
例如,若N=5,生成的矩阵为:
11111
12221
12321
12221
11111
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
#defineN7
/**********found**********/
voidfun(int(*a)__1__)
{inti,j,k,m;
if(N%2==0)m=N/2;
elsem=N/2+1;
for(i=0;i/**********found**********/
for(j=__2__;ja[i][j]=a[N-i-1][j]=i+1;
for(k=i+1;k/**********found**********/
a[k][i]=a[k][N-i-1]=__3__;
}
}
main()
{intx[N][N]={0},i,j;
fun(x);
printf("\nTheresultis:
\n");
for(i=0;i{for(j=0;jprintf("\n");
}
}
3、给定程序中,函数fun的功能是:
将s所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符串和非数字字符串原有的先后次序。
例如,形参s所指的字符串为:
def35adh3kjsdf7。
执行结果为:
defadhkjsdf3537。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
voidfun(char*s)
{inti,j=0,k=0;chart1[80],t2[80];
for(i=0;s[i]!
='\0';i++)
if(s[i]>='0'&&s[i]<='9')
{
/**********found**********/
t2[j]=s[i];___1___;
}
elset1[k++]=s[i];
t2[j]=0;t1[k]=0;
/**********found**********/
for(i=0;i/**********found**********/
for(i=0;i<___3___;i++)s[k+i]=t2[i];
}
main()
{chars[80]="def35adh3kjsdf7";
printf("\nTheoriginalstringis:
%s\n",s);
fun(s);
printf("\nTheresultis:
%s\n",s);
}
4、给定程序中,函数fun的功能是:
有N×N矩阵,以主对角线为对称线,对称元素相加并将结果存放在左下三角元素中,右上三角元素置为0。
例如,若N=3,有下列矩阵:
123
456
789计算结果为
100
650
10149
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
#defineN4
/**********found**********/
voidfun(int(*t)___1___)
{inti,j;
for(i=1;i{for(j=0;j
{
/**********found**********/
___2___=t[i][j]+t[j][i];
/**********found**********/
___3___=0;
}
}
}
main()
{intt[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10},i,j;
printf("\nTheoriginalarray:
\n");
for(i=0;i{for(j=0;jprintf("\n");
}
fun(t);
printf("\nTheresultis:
\n");
for(i=0;i{for(j=0;jprintf("\n");
}
}
5、给定程序中,函数fun的功能是:
对形参s所指字符串中下标为奇数的字符按ASCII码大小递增排序,并将排序后下标为奇数的字符取出,存入形参p所指字符数组中,形成一个新串。
例如,形参s所指的字符串为:
baawrskjghzlicda,执行后p所指字符数组中的字符串应为:
aachjlsw。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
voidfun(char*s,char*p)
{inti,j,n,x,t;
n=0;
for(i=0;s[i]!
='\0';i++)n++;
for(i=1;i/**********found**********/
___1___;
/**********found**********/
for(j=___2___+2;jif(s[t]>s[j])t=j;
if(t!
=i)
{x=s[i];s[i]=s[t];s[t]=x;}
}
for(i=1,j=0;i/**********found**********/
p[j]=___3___;
}
main()
{chars[80]="baawrskjghzlicda",p[50];
printf("\nTheoriginalstringis:
%s\n",s);
fun(s,p);
printf("\nTheresultis:
%s\n",p);
}
6、程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的信息。
函数fun的功能是输出这位学生的信息。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
typedefstruct
{intnum;
charname[9];
charsex;
struct{intyear,month,day;}birthday;
floatscore[3];
}STU;
/**********found**********/
voidshow(STU___1___)
{inti;
printf("\n%d%s%c%d-%d-%d",tt.num,tt.name,tt.sex,
tt.birthday.year,tt.birthday.month,tt.birthday.day);
for(i=0;i<3;i++)
/**********found**********/
printf("%5.1f",___2___);
printf("\n");
}
main()
{STUstd={1,"Zhanghua",'M',1961,10,8,76.5,78.0,82.0};
printf("\nAstudentdata:
\n");
/**********found**********/
show(___3___);
}
7、给定程序中,函数fun的功能是:
计算N×N矩阵的主对角线元素和反向对角线元素之和,并作为函数值返回。
注意:
要求先累加主对角线元素中的值,然后累加反向对角线元素中的值。
例如,若N=3,有下列矩阵:
123
456
789fun函数首先累加1、5、9,然后累加3、5、7,函数的返回值为30。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
#defineN4
fun(intt[][N],intn)
{inti,sum;
/**********found**********/
___1___;
for(i=0;i/**********found**********/
sum+=___2___;
for(i=0;i/**********found**********/
sum+=t[i][n-i-___3___];
returnsum;
}
main()
{intt[][N]={21,2,13,24,25,16,47,38,29,11,32,54,42,21,3,10},i,j;
printf("\nTheoriginaldata:
\n");
for(i=0;i{for(j=0;jprintf("\n");
}
printf("Theresultis:
%d",fun(t,N));
}
8、给定程序中,函数fun的功能是:
计算形参x所指数组中N个数的平均值(规定所有数均为正数),作为函数值返回;并将大于平均值的数放在形参y所指数组中,在主函数中输出。
例如,有10个正数:
4630324061745154826,平均值为:
30.500000
主函数中输出:
4632404548
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
#include
#defineN10
doublefun(doublex[],double*y)
{inti,j;doubleav;
/**********found**********/
av=__1__;
/**********found**********/
for(i=0;ifor(i=j=0;i/**********found**********/
if(x[i]>av)y[__3__]=x[i];
y[j]=-1;
returnav;
}
main()
{inti;doublex[N]={46,30,32,40,6,17,45,15,48,26};
doubley[N];
for(i=0;iprintf("\n");
printf("\nTheaverageis:
%f\n",fun(x,y));
for(i=0;y[i]>=0;i++)printf("%5.0f",y[i]);
printf("\n");
}
9、给定程序中,函数fun的功能是:
计算形参x所指数组中N个数的平均值(规定所有数均为正数),将所指数组中小于平均值的数据移至数组的前部,大于等于平均值的数据移至x所指数组的后部,平均值作为函数值返回,在主函数中输出平均值和移动后的数据。
例如,有10个正数:
4630324061745154826,平均值为:
30.500000
移动后的输出为:
3061715264632404548
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
#include
#defineN10
doublefun(double*x)
{inti,j;doubleav,y[N];
av=0;
/**********found**********/
for(i=0;ifor(i=j=0;iif(x[i]/**********found**********/
y[j]=x[i];x[i]=-1;__2__;}
i=0;
while(i{if(x[i]!
=-1)y[j++]=x[i];
/**********found**********/
__3__;
}
for(i=0;ireturnav;
}
main()
{inti;doublex[N];
for(i=0;iprintf("\n");
printf("\nTheaverageis:
%f\n",fun(x));
printf("\nTheresult:
\n",fun(x));
for(i=0;iprintf("\n");
}
10、给定程序中,函数fun的功能是:
计算形参x所指数组中N个数的平均值(规定所有数均为正数),将所指数组中大于平均值的数据移至数组的前部,小于等于平均值的数据移至x所指数组的后部,平均值作为函数值返回,在主函数中输出平均值和移动后的数据。
例如,有10个正数:
4630324061745154826,平均值为:
30.500000
移动后的输出为:
4632404548306171526
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
#include
#defineN10
doublefun(double*x)
{inti,j;doubles,av,y[N];
s=0;
for(i=0;i/**********found**********/
av=__1__;
for(i=j=0;iif(x[i]>av){
/**********found**********/
y[__2__]=x[i];x[i]=-1;}
for(i=0;i/**********found**********/
if(x[i]!
=__3__)y[j++]=x[i];
for(i=0;ireturnav;
}
main()
{inti;doublex[N]={46,30,32,40,6,17,45,15,48,26};
for(i=0;iprintf("\n");
printf("\nTheaverageis:
%f\n",fun(x));
printf("\nTheresult:
\n",fun(x));
for(i=0;iprintf("\n");
}
11、函数fun的功能是:
把形参a所指数组中的奇数按原顺序依次存放到a[0]、a[1]、a[2]、……中,把偶数从数组中删除,奇数个数通过函数值返回。
例如:
若a所指数组中的数据最初排列为:
9、1、4、2、3、6、5、8、7,删除偶数后a所指数组中的数据为:
9、1、3、5、7,返回值为5。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
#defineN9
intfun(inta[],intn)
{inti,j;
j=0;
for(i=0;i/**********found**********/
if(a[i]%2==___1___)
{
/**********found**********/
a[j]=a[i];___2___;
}
/**********found**********/
return___3___;
}
main()
{intb[N]={9,1,4,2,3,6,5,8,7},i,n;
printf("\nTheoriginaldata:
\n");
for(i=0;iprintf("\n");
n=fun(b,N);
printf("\nThenumberofodd:
%d\n",n);
printf("\nTheoddnumber:
\n");
for(i=0;iprintf("\n");
}
12、给定程序中,函数fun的功能是:
求ss所指字符串数组中长度最短的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指变量中。
ss所指字符串数组中共有M个字符串,且串长请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
#include
#defineM5
#defineN20
intfun(char(*ss)[N],int*n)
{inti,k=0,len=N;
/**********found**********/
for(i=0;i<___1___;i++)
{len=strlen(ss[i]);
if(i==0)*n=len;
/**********found**********/
if(len___2___*n)
{*n=len;
k=i;
}
}
/**********found**********/
return(___3___);
}
main()
{charss[M][N]={"shanghai","guangzhou","beijing","tianjing","chongqing"};
intn,k,i;
printf("\nTheoriginalstringsare:
\n");
for(i=0;ik=fun(ss,&n);
printf("\nThelengthofshorteststringis:
%d\n",n);
printf("\nTheshorteststringis:
%s\