2015年计算机二级C语言上机操作题及答案(60)
发布时间:2011/7/20 13:08:26 来源:城市学习网 编辑:ziteng
第一题:请补充fun函数,该函数的功能是把数组bb中的数按从大到小排列。数组的值及元素个数从主函数中输入。
例如,输入2 1 3 5 4,结果为1 2 3 4 5。
请勿改动函数main和其他函数中的任何内容,仅在fun函数的横线上填和所编写的若干表达式或语句。
#include
#define N 100
void fun(int bb[], int n)
{
int i, j, t;
for (i=0; ___1___; i++)
for (j=0; ___2___; j++)
if (bb[j] > bb[j+1])
{
t = bb[j];
bb[j] = bb[j+1];
bb[j+1] = t;
}
}
main()
{
int i = 0, n = 0;
int bb[N];
printf("\nInput n:\n");
scanf("%d", &n);
printf("\nInput data:\n");
while (i < n)
{
printf("bb[%d]=", i);
scanf("%d", &bb[i]);
i++;
}
fun(bb, n);
printf("\n******** the result *********\n");
for (i=0; i printf("M", bb[i]);
}
答案:
ii 2、jj [NextPage] 第二题:下列给定程序中,函数fun的功能是:找出一个大于给定整数m且紧随m的素数,作为函数值返回。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
#include
int fun(int m)
{
int i, k;
for (i=m+1; ; i++)
{
for (k=2; k /********found********/
if (i%k != 0)
break;
/********found********/
if (k < i)
return(i);
}
}
main()
{
int n;
printf("\nplease enter n: ");
scanf("%d", &n);
printf("%d\n", fun(n));
}
答案:
第一处应改为:if(i%k==0)
第二处应改为:if(k>=i)[NextPage] 第三题:请编写函数fun,该函数的功能是:删去一维数组中所有相同的数,使之只乘一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。
例如,若一维数组中的数据是:
2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10
删除后,数组中的内容应该是:
2 3 4 5 6 7 8 9 10
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
# include
# define N 80
int fun(int a[], int n)
{
}
main()
{
int a[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10}, i,n=20;
FILE *out ;
printf("The original data :\n");
for(i=0; i printf("=",a[i]);
n=fun(a,n);
printf("\n\nThe data after deleted :\n");
out=fopen ("out.dat","w");
for(i=0;i {
printf("=",a[i]);
fprintf(out, "%d\n", a[i]);
}
fclose (out );
printf("\n\n");
}
答案:
int i,t,j=0,*p=a;
t=p[0];
for(i=0;i<=n;i++)
if(t==p[i])
;
else
{
a[j]=t;
t=p[i];
j++;
}
if(i>=n)
a[j]=t;
return j;