四川省计算机二级C语言30次笔试和机试试题_参考答案
四川省计算机二级C语言30次
笔试和机试试题_参考答案
30-1套 参考答案:
一、程序调试题(文件名为 test1-1.c)( 40 分 )
# include
# define N 4
void fun(int a[][N])
{
int i,t;
for(i=0;i
{ t=a[i][i];
a[i][i]=a[i][N-i];/* 改为:n-i-1 */
a[i][N-i]=t;/* 改为:n-i-1 */
}
}
void main()
{
int a[N][N],i,j;
FILE *fp;
fp=fopen("test1-1.dat","r");
if(fp==NULL)
{ printf("test1-1.dat can not open.\n");
exit(0);
}
for(i=0;i
for(j=0;j
fscanf("%d",&a[i][j]); /* 改为:fp,”%d”,&a[i][j] */
fclose(fp);
fun( );/* 改为:fun(a) */
printf("output:\n");
for(i=0;i
{ for(j=0;j
printf("%5d",&a[i][j]);/* 改为:a[i][j] */
printf("\n");
}
}
评分标准:每改对一处得8分
二、编程题(程序文件取名为 test1-2.c)(60分)
评分标准:
1.fun函数编写40分。其中: 2. main函数20分。其中:
1)函数定义、形参书写正确(5分) 1)正确定义各种变量,能正确按行进行输出(10分)
2)数组前两项赋值正确(5分)2)能正确调用fun函数(10分)
3)for循环正确(10分)
4)奇数下标项计算正确(10分)
5)偶数下标项计算正确(10分)
参考程序:
# include
# include
# define N 20
void fun(int *a)
{
int i;
a[0]=1;
a[1]=2;
for(i=2;i
if(i%2==0)
a[i]=(int)abs(a[i-1]-a[i-2]);
else
a[i]=a[i-1]+a[i-2];
}
void main()
{
int a[N];
fun(a);
printf("Output:\n");
for(i=0;i
{ printf("%4d",a[i]);
if((i+1)%4==0) printf("\n");
}
}
30-2套 参考答案:
一、程序调试题(文件名为 test2-1.c)( 40 分 )
# include "stdio.h"
void main()
{
int i;
FILE *fp; /*增行: void itoa(int); */
fp=fopen("test2-1.dat","r");
if(fp==NULL)
{ printf("test2-1.dat can not open.\n");
exit(0);
}
fscanf(fp,"%d",&i);
itoa(i);
fclose();/* 改为:fclose(fp) */
}
void itoa(int k)
{ int n=0;
char ch1,ch2,ch3,ch4,ch5;
ch5=k%10000;/* 改为:ch5=k/10000 */
if(ch5>0) n++;
ch5+='0';
ch4=(k%10000)/1000;
if(ch4>0) n++;
ch4+='0';
ch3=(k%1000)/100;
if(ch3>0) n++;
ch3+='0';
ch2=(k%100)/10;
if(ch2>0) n++;
ch2+='0';
ch1=k%10/10;/* 改为:k%10 */
n++;
ch1+='0';
switch ( k )/* 改为:n */
{ case 5: printf("%c",ch5);
case 4: pri