江西高校计算机二级C等级考试样题.docx
《江西高校计算机二级C等级考试样题.docx》由会员分享,可在线阅读,更多相关《江西高校计算机二级C等级考试样题.docx(17页珍藏版)》请在冰豆网上搜索。
江西高校计算机二级C等级考试样题
江西高校计算机二级C等级考试样题
2.程序改错题
gc369.c功能为:
找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。
也可能没有鞍点。
程序中有两处错误代码,请指出并改正之。
不得增加行或删除行,也不得更改程序结构。
/*Findthesaddlepoint*/
#include
#defineN5
#defineM5
main(){
inti,j,k,flag1,flag2,a[N][M],max,maxi,maxj;
for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);
flag2=0;
for(i=0;imax=a[0][0];
for(j=0;jif(a[i][j]>max){
max=a[i][j];
maxj=j;
}
for(k=0,flag1=1;kif(max>a[k][maxj])
flag1=0;
if(flag1){
printf("\nThesaddlepointis:
%d,%d,%d\n",i,maxj,max);
flag2=1;
}
}
if(flag2)
printf("\nThereisnosaddlepointintheMatrix\n");
}
1、程序填空题
tk369.c中有整形数组a[]。
通过调用子程序inv(),对a[]数组中的元素,反向交换存储位置。
请在括号[]处补充完整程序,并删除[],运行测试,实现上述要求。
不得增加行或删除行,也不得更改程序结构。
voidinv(intx[],intn)
{
inttemp,i,j,m=[];
for(i=0;i<=m;i++)
{j=n-i-1;
temp=x[i];
[];
x[j]=temp;
}
return;
}
main()
{
inta[10]={4,5,6,7,8,9,10,11,12,88};
inti;
printf("Theoriginalarray:
\n");
for(i=0;i<10;i++)
printf("%3d",a[i]);
printf("\n");
inv(a,10);
printf("Thereversearray:
\n");
for(i=0;i<10;i++)
printf("%3d",a[i]);
printf("\n");
}_
2.程序改错题(每错10分,共20分)
程序gc137.c中的sub函数的功能是:
将s所指字符串的反序和正序进行连接形成一个新串放在t所指的数组中。
例如,当s所指字符串的内容为“ABCD”时,t所指数组中的内容为“DCBAABCD”。
请改正函数sub中的两个错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得修改程序的结构。
#include"stdio.h"
#include"conio.h"
#include"string.h"
voidsub(char*s,char*t)
{
inti,d;
d=strlen(s);
for(i=1;it[i]=s[d-1-i];
for(i=0;it[d+i]=s[i];
t[2*d]='/0';
}
main()
{
chars[100],t[100];
clrscr();
printf("\nPleaseenterstringS:
");
scanf("%s",s);
sub(s,t);
printf("\nTheresultis:
%s\n",t);
}
1.程序填空题(每空10分,共20分)
若一个整数x除了能被1和其本身x除尽外,不能被2到x-1中的任何整数除尽,则此数即为素数(或质数)。
例如7是素数,而9不是素数。
程序tk137.c的功能是:
将任意输入的一个大偶数n分解为两个素数之和,并给出各种分解方法。
例如n=10时,分解后的结果为10=3+7和10=5+5。
请填空(替换掉下划线部分)。
程序中,函数check用来判断一个整数x是否是素数,若是,返回1,否则返回0。
#include"stdio.h"
main()
{
intn,i;
intcheck(intx);
do{
printf("Inputn:
");
scanf("%d",&n);
}while(n%2!
=0);
for(i=3;i<=n/2;i++)
if(check(i)&&_____________)
printf("%d=%d+%d\n",n,i,n-i);
}
intcheck(intx)
{
inti;
for(i=2;iif(___________)return(0);
return
(1);
}
试题一、程序改错题:
gc56.c程序用于将字符串中的小写字母转换为大写字母,程序中有两处错误,请调试改正
之,但不得增删语句.
#include
voidmain(void)
{
chars[255];
inti;
scanf("%s",s);
for(i=0;s[i];i++)
if(s[i]>='b'&&s[i]<='z')
s[i]=s[i]+'a'+'A';
printf("%s",s);
}
试题二、程序填空题
tk56.c程序用于计算×的整型数组中最大元素所在行和列的位置。
下面程序不完整,
请将其补充完整,以便得到正确答案,注意:
不得增行和删行,也不得修改程序的结构。
。
#include
voidmain(void)
{
inta[4][5]={{4,8,9,10,12},
{2,5,13,17,11},
{81,76,34,57,33},
{1,90,3,78,55}};
intmax,max_row,max_col;
inti,j;
max=________;
max_row=0;
max_col=0;
for(i=0;i<4;i++)
for(j=0;j<5;j++)
if(______)
{
max=a[i][j];
max_row=i;
max_col=j;
}
printf("%d%d",max_row,max_col);
}
2.程序改错题
gc274.c用于输出如下所示的图形。
请将源程序文件中的两个错误改正过来,注意在答题过程中不得对源程序增行或删行,也不得更改程序的结构。
1
121
12321
1234321
1
54321
7654321
1
321
1
7654321
54321
1
1234321
12321
121
1
#include
#include
main()
{
inti,j,n;
chars[20]="321";
printf("\n\n");
n=10;
for(i=-n/2;i<=n/2;i++)
{
for(j=0;j<=15+abs(i);j++)printf("%c",'');
for(j=0;j<=n/2-abs(i);j++)printf("%c",s[j]);
for(j=n/2-abs(i);j<19;j++)printf("%c",s[j]);
printf("\n");
}
}
1.程序填空题
tk274.c通过调用函数invert()将数组a中的元素头尾倒置过来。
例如:
若倒置前数组a中原来的元素为,3,5,2,4和,则头尾倒置后数组a的元素变为,4,2,5,3和。
假设数组a的初值就是,3,5,2,4,6这六个数,在程序运行时输入。
请将源程序补充完整,要求得到正确的结果。
注意在答题过程中不得对源程序增行或删行,也不得更改程序的结构。
#include
#defineN6
voidinvert(s,i,j)
int*s,i,j;
{
intt;
if(i{
t=*(s+i);
*(s+i)=*(s+j);
*(s+j)=t;
invert(s,_____
(1)_____,j-1);
}
}
main()
{
inta[N],i;
for(i=0;i_____
(2)_____;
for(i=0;iprintf("\n");
}
程序改错题
gc405.c中,函数fun的功能是:
'根据形参m的值(2≤m≤),在m行m列的二维数组中存放如下所示的数据,由main()函数输出。
例如,
若输入
则输出:
1
2
若输入
则输出:
1
2
3
4 16
程序有两处错误,请改正程序中的错误,使它能得出正确结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
#include
#defineM10
inta[M][M]={0};
fun(int**a,intm)
{intj,k;
for(j=0;jfor(k=0;ka[j][k]=(k+1)*(j+1);
}
main()
{inti,j,n;
clrscr();
printf("Entern:
");scanf("%d",&n);
fun(a,n);
for(i=0;i{for(j=0;jprintf("%4d",a[i][j]);
printf("\n");
}
}
_
程序填空题
tk405.c求a数组中的所有素数的和,函数fun用来判断自变量是否为素数。
素数是只能被和本身整除且大于的自然数。
请将程序补充完整,使它能得出正确的结果。
不得增行或删行,也不得更改程序的结构。
#include
main()
{inti,a[10],*p=a,sum=0;
printf("Enter10num:
\n");
for(i=0;i<10;i++)scanf("%d",&a[i]);
for(i=0;i<10;i++)
if(fun(*(p+____)==1)
{printf("%d",*(a+i));
sum+=*(a+i);
}
printf("\nThesum=%d\n",sum);
}