计算机二级C语言上机题及答案汇总.docx
《计算机二级C语言上机题及答案汇总.docx》由会员分享,可在线阅读,更多相关《计算机二级C语言上机题及答案汇总.docx(37页珍藏版)》请在冰豆网上搜索。
![计算机二级C语言上机题及答案汇总.docx](https://file1.bdocx.com/fileroot1/2023-4/21/3ac9ee5d-a623-4318-a07a-e85ed9c4512b/3ac9ee5d-a623-4318-a07a-e85ed9c4512b1.gif)
计算机二级C语言上机题及答案汇总
2012年计算机二级C语言上机题及答案汇总
1、给定程序中,函数fun的功能是:
在任意给定的9个正整数中找出按升序排列时处于中间的数,将原数据序列中比该中间数小的数用该中间数替换,位置不变,在主函数中输出处理后的数据序列,并将中间数作为函数值返回。
例如,有9个正整数:
1572387582145
按升序排列时的中间数为:
8
处理后主函数中输出的数列为:
8882387882145
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
#defineN9
intfun(intx[])
{inti,j,k,t,mid,b[N];
for(i=0;i for(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;i for(i=0;i }
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__;j a[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("Theresultis:
");
for(i=0;i {for(j=0;j
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("Theoriginalstringis:
%s",s);
fun(s);
printf("Theresultis:
%s",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("Theoriginalarray:
");
for(i=0;i {for(j=0;j printf("");
}
fun(t);
printf("Theresultis:
");
for(i=0;i {for(j=0;j printf("");
}
}
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;j if(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("Theoriginalstringis:
%s",s);
fun(s,p);
printf("Theresultis:
%s",p);
}
31、给定程序中,函数fun的功能是:
在形参s所指字符串中的每个数字字符之后插入一个*号。
例如,形参s所指的字符串为:
def35adh3kjsdf7。
执行结果为:
def3*5*adh3*kjsdf7*。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
voidfun(char*s)
{inti,j,n;
for(i=0;s[i]!
=’\0’;i++)
/**********found**********/
if(s[i]>=’0’___1___s[i]<=’9’)
{n=0;
/**********found**********/
while(s[i+1+n]!
=___2___)n++;
for(j=i+n+1;j>i;j--)
/**********found**********/
s[j+1]=___3___;
s[j+1]=’*’;
i=i+1;
}
}
main()
{chars[80]="ba3a54cd23a";
printf("Theoriginalstringis:
%s",s);
fun(s);
printf("Theresultis:
%s",s);
}
32、函数fun的功能是:
输出a所指数组中的前n个数据,要求每行输出5个数。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
#include
voidfun(int*a,intn)
{inti;
for(i=0;i {
/**********found**********/
if(___1___==0)
/**********found**********/
printf("___2___");
/**********found**********/
printf("%d",___3___);
}
}
main()
{inta[100]={0},i,n;
n=22;
for(i=0;i fun(a,n);
printf("");
}
33、给定程序中,函数fun的功能是:
调用随机函数产生20个互不相同的整数放在形参a所指数组中(此数组在主函数中已置0)。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
#include
#defineN20
voidfun(int*a)
{inti,x,n=0;
x=rand();
/**********found**********/
while(n<__1__)
{for(i=0;i /**********found**********/
if(x==a[i])__2__;
/**********found**********/
if(i==__3__){a[n]=x;n++;}
x=rand();
}
}
main()
{intx[N]={0},i;
fun(x);
printf("Theresult:
");
for(i=0;i {printf("M",x[i]);
if((i+1)%5==0)printf("");
}
printf("");
}
34、函数fun的功能是进行数字字符转换。
若形参ch中是数字字符’0’~’9’,则’0’转换成’9’,’1’转换成’8’,’2’转换成’7’,……,’9’转换成’0’;若是其它字符则保持不变;并将转换后的结果作为函数值返回。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
/**********found**********/
___1___fun(charch)
{
/**********found**********/
if(ch>=’0’&&___2___)
/**********found**********/
return’9’-(ch-___3___);
returnch;
}
main()
{charc1,c2;
printf("Theresult:
");
c1=’2’;c2=fun(c1);
printf("c1=%cc2=%c",c1,c2);
c1=’8’;c2=fun(c1);
printf("c1=%cc2=%c",c1,c2);
c1=’a’;c2=fun(c1);
printf("c1=%cc2=%c",c1,c2);
}
35、给定程序中,函数fun的功能是:
求ss所指字符串数组中长度最长的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指变量中。
ss所指字符串数组中共有M个字符串,且串长 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
#include
#defineM5
#defineN20
/**********found**********/
intfun(char(*ss)___1___,int*n)
{inti,k=0,len=0;
for(i=0;i {len=strlen(ss[i]);
/**********found**********/
if(i==0)*n=___2___;
if(len>*n){
/**********found**********/
___3___;
k=i;
}
}
return(k);
}
main()
{charss[M][N]={"shanghai","guangzhou","beijing","tianjing","cchongqing"};
intn,k,i;
printf("Theoriginalstringsare:
");
for(i=0;i k=fun(ss,&n);
printf("Thelengthoflongeststringis:
%d",n);
printf("Thelongeststringis:
%s",ss[k]);
}
26、给定程序中,函数fun的功能是:
将N×N矩阵中元素的值按列右移1个位置,右边被移出矩阵的元素绕回左边。
例如,N=3,有下列矩阵
123
456
789计算结果为
312
645
978
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
#defineN4
voidfun(int(*t)[N])
{inti,j,x;
/**********found**********/
for(i=0;i<___1___;i++)
{
/**********found**********/
x=t[i][___2___];
for(j=N-1;j>=1;j--)
t[i][j]=t[i][j-1];
/**********found**********/
t[i][___3___]=x;
}
}
main()
{intt[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10},i,j;
printf("Theoriginalarray:
");
for(i=0;i {for(j=0;j printf("");
}
fun(t);
printf("Theresultis:
");
for(i=0;i {for(j=0;j printf("");
}
}
27、给定程序中,函数fun的功能是根据形参i的值返回某个函数的值。
当调用正确时,程序输出:
x1=5.000000,x2=3.000000,x1*x1+x1*x2=40.000000
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
doublef1(doublex)
{returnx*x;}
doublef2(doublex,doubley)
{returnx*y;}
/**********found**********/
__1__fun(inti,doublex,doubley)
{if(i==1)
/**********found**********/
return__2__(x);
else
/**********found**********/
return__3__(x,y);
}
main()
{doublex1=5,x2=3,r;
r=fun(1,x1,x2);
r+=fun(2,x1,x2);
printf("x1=%f,x2=%f,x1*x1+x1*x2=%f",x1,x2,r);
}
28、给定程序的主函数中,已给出由结构体构成的链表结点a、b、c,各结点的数据域中均存入字符,函数fun()的作用是:
将a、b、c三个结点链接成一个单向链表,并输出链表结点中的数据。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
typedefstructlist
{chardata;
structlist*next;
}Q;
voidfun(Q*pa,Q*pb,Q*pc)
{Q*p;
/**********found**********/
pa->next=___1___;
pb->next=pc;
p=pa;
while(p)
{
/**********found**********/
printf("%c",____2_____);
/**********found**********/
p=____3____;
}
printf("");
}
main()
{Qa,b,c;
a.data=’E’;b.data=’F’;c.data=’G’;c.next=NULL;
fun(&a,&b,&c);
}
29、给定程序中,函数fun的功能是:
对形参ss所指字符串数组中的M个字符串按长度由短到长进行排序。
ss所指字符串数组中共有M个字符串,且串长 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
#include
#defineM5
#defineN20
voidfun(char(*ss)[N])
{inti,j,k,n[M];chart[N];
for(i=0;i for(i=0;i {k=i;
/**********found**********/
for(j=___1___;j /**********found**********/
if(n[k]>n[j])___2___;
if(k!
=i)
{strcpy(t,ss[i]);
strcpy(ss[i],ss[k]);
/**********found**********/
strcpy(ss[k],___3___);
n[k]=n[i];
}
}
}
main()
{charss[M][N]={"shanghai","guangzhou","beijing","tianjing","cchongqing"};
inti;
printf("Theoriginalstringsare:
");
for(i=0;i printf("");
fun(ss);
printf("Theresult:
");
for(i=0;i }
30、给定程序中,函数fun的作用是:
统计整型变量m中各数字出现的次数,并存放到数组a中,其中:
a[0]存放0出现的次数,a[1]存放1出现的次数,……a[9]存放9出现的次数。
例如,若m为14579233,则输出结果应为:
0,1,1,2,1,1,0,1,0,1,
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
voidfun(intm,inta[10])
{inti;
for(i=0;i<10;i++)
/**********found**********/
__1__=0;
while(m>0)
{
/**********found**********/
i=___2___;
a[i]++;
/**********found**********/
m=___3___;
}
}
main()
{intm,a[10],i;
printf("请输入一个整数:
");scanf("%d",&m);
fun(m,a);
for(i=0;i<10;i++)printf("%d,",a[i]);printf("");
}
21、函数fun的功能是:
把形参a所指数组中的偶数按原顺序依次存放到a[0]、a[1]、a[2]、……中,把奇数从数组中删除,偶数个数通过函数值返回。
例如:
若a所指数组中的数据最初排列为:
9、1、4、2、3、6、5、8、7,删除奇数后a所指数组中的数据为:
4、2、6、8,返回值为4。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
#defineN9
intfun(inta[],intn)
{inti,j;
j=0;
for(i=0;i /**********found**********/
if(_