四川计算机二级c语言考试28次机试真题

  • 格式:doc
  • 大小:35.00 KB
  • 文档页数:3

一、程序调试题(40分)
磁盘上有一C程序test1-1.c,其功能是:将具有N个元素的数组的后m个元素移到前m个位置。

例如,若输入m=3,数组元素为:1 2 3 4 5 6 7 8 9 10,则输出结果为:8 9 10 1 2 3 4 5 6 7。

要求将结果显示在屏幕上并写入文件test1-1.dat中。

请更改程序中的错误,使程序能得出正确结果。

注意:不得增行或删行,也不得更改程序结构。

源程序如下:
# include "stdio.h"
# define N 10
void main()
{ int a[N],k,m,r,*t;
FILE *fp;
fp=fopen(test1-1.dat,"w");
if(fp==NULL)
{ printf("File can not open!\n");
exit(0);
}
printf("\nInput m:");
scanf("%d",m);
printf("\nInput 10 numbers:\n");
for(k=0;k<N;k++)
scanf("%d",a);
for(r=0;r<m;r++)
{ t=a[N-1];
for(k=N-1;k>0;k--)
a[k]=a[k-1];
a[k]=t;
}
for(k=0;k<N;k++)
{ printf("%4d",a[k]);
fprintf(fp,"%4d",a[k]);
}
fclose(fp);
}
二、编写程序test1-2.c(60分)
编写函数fun,函数fun的功能是:求出满足“百位减十位等于个位”的所有三位整数,并按降序存入形参数组a中,满足条件下的三位数总个数作为函数值返回。

main函数中调用函数fun,并按一行5个数输出结果。

一、程序调试题(40分)
磁盘上有一个名为test2-1.c的C程序,其功能是将一个文本文件test2-1.in逐行逆置复制到另一个文件test2-1.out中。

test2-1.out文件名在命令行中给出。

请改正程序中的错误,使程序能得出正确的结果。

注意:不得增行或删行,也不得更改程序结构。

源程序如下:
# include "stdio.h"
# include "conio.h"
void rev(void);
FILE *f1,*f2;
void main(int argc,char *argv[])
{ char ch;
if(argc>2)
{ printf("paramelers missing!\n");
exit(0);
}
if((f1=fopen(*argv[1],"w"))==NULL)
{ printf("cannot open file1!\n");
exit(0);
}
if((f2=fopen("test2-1.in","r"))==NULL)
{ printf("cannot open file2!\n");
exit(0);
}
while(!feof(f2))
{ void rev();
fputc('\n',f1);
}
fclose(f1);
fclose(f2);
}
void rev(void)
{ char c;
if(!feof(f2)||((c=fgetc(f2))!='\n'))
{ rev();
fputc(c,f2);
}
}
二、编写程序test2-2.c(60分)
从键盘上输入整数m和k,将大于且紧靠m的k个素数存入数组xx中,将结果显示在屏幕上。

要求:(1)在num函数中完成找出紧靠m的k个素数,并存入数组xx中。

函数num的定义形式为:void num(int m,int k,int xx[])
(2)main函数完成数据的输入和输出。

一、程序调试题(40分)
磁盘上有一个名为test3-1.c的C程序文件,其中函数fun的功能是:找出被2、3、5整除时余数均为1的最小的10个自然数,并存放到一个整型数组中。

在main函数中调用函数fun,输出最后结果,并将结果输出到文本文件test3-1.txt中。

请改正程序中的错误,使其能得到正确的结果。

注意:不得增行或删行,也不得更改程序结构。

源程序如下:
# include <stdio.h>
void fun(int a[])
{
int i;
int cnt=0;
for(i=1;cnt<10;i++)
if(i%2==1||i%3==1||i%5==1)
{ a[cnt]=i;
cnt++;
}
}
void main()
{
int a[10];
int i;
FILE *fp;
if((fp=fopen("test3-1.txt","w"))==null)
{ printf("Cannot open the file.\n");
exit(0);
}
fun();
for(i=0;i<10;i++)
{ printf("%4d",a[i]);
fprintf("%4d",a[i]);
}
fclose(fp);
}
二、编写程序test3-2.c(60分)
请编写函数fun,它的功能是:去掉数组a中的最大数和最小数,计算剩余数的平均值,并把平均值作为函数值返回。

在main函数中输入n个互不相同的整数,例如(n=10):95,89,70,65,82,56,60,80,66,74,调用函数fun,输出结果:73.25。