江苏省计算机等级考试二级C上机考试模拟试题
试题 1
一、改错题(18分)
【题目】
函数fun的功能是:输出M行M列整数方阵,然后求两条对角线上各元素之和,返回此和数。
含有错误的程序如下:
#include
#include
#define M 5
int fun(int n,int xx[][])
{ int i,j,sum;
printf("
The %d x %d matrix:
",M,M);
for(i=0;i");
}
for(i=0;iThe sum of all elements on 2 diagnals is %d.",fun(M,aa));
}
【要求】
1.将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。
2.改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译处理命令,但不能增加其他语句,也不能删去整条语句。
3.改正后的源程序(文件名myf1.c)必须放在考试软盘的根目录下,供阅卷用,否则不予评分。
二、编程题(22分)
【题目】
1.编写函数fun,函数的功能是:移动字符串中的内容,移动的规则如下:把第1到第m个字符平移到字符串的最后,把第m+1到最后的字符串移到字符串的前部。例如:字符串中原有的内容为:ABCDEFGHIJK,m的值为3,则移动后,字符串中的内容应该是:DEFGHIJKABC。
2.编写main函数,在main函数中初始化一个字符串,调用函数fun,将结果字符串及函数返回值写入到文件myf2.out中。
【要求】
1.源程序文件名必须取为myf2.c,输出结果文件名为myf2.out。
2.数据文件的打开、使用、关闭均用C语言标准库中缓冲文件系统的文件操作函数实现。
3.源程序文件和运行结果文件均需要保存在考试软盘的根目录中供阅卷使用。
4.不要复制扩展名为obj和exe的文件到考试软盘上
试题 2
一、改错题(18分)
【题目】
函数fun的功能是:将p所指字符串中的所有字符复制到b中,要求每复制三个字符之后插入一个空格。
例如,在调用fun函数之前给a输入字符串:ABCDEFGHIJK,
调用函数之后,字符数组b中的内容则为:ABC DEF GHI JK。
含有错误的程序如下:
#include
void fun(char *p, char *b)
{ int i, k=0;
while(*p)
{ i=1;
while( i<3 && *p )
{
b[k]=p;
k++; p++; i++;
}
if(*p)
{
b[k++]=" ";
}
}
b[k]= ''\0'';
}
main()
{ char a[80],b[80];
printf("Enter a string: "); gets(a);
printf("The original string: "); puts(a);
fun(a,b);
printf("
The string after insert space: ");
puts(b); printf("
");
}
【要求】
1.将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。
2.改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译处理命令,但不能增加其他语句,也不能删去整条语句。
3.改正后的源程序(文件名myf1.c)必须放在考试软盘的根目录下,供阅卷用,否则不予评分。
二、编程题(22分)
【题目】
1.编写main函数,将N名学生的成绩在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。并调用函数fun,将结果及函数返回值写入到文件myf2.out中。
2.请编写函数fun,它的功能是:求出这N个学生的平均分,由函数值返回。
例如,若学生的成绩是:85,76,69,85,91,72,64,87,则平均分应当是:78.625。
【要求】
1.源程序文件名必须取为myf2.c,输出结果文件名为myf2.out。
2.数据文件的打开、使用、关闭均用C语言标准库中缓冲文件系统的文件操作函数实现。
3.源程序文件和运行结果文件均需要保存在考试软盘的根目录中供阅卷使用。
4.不要复制扩展名为obj和exe的文件到考试软盘上。
试题 3
一、改错题(18分)
【题目】
N个有序整数列已放在一维数组中,下列给定程序中函数fun的功能是:利用折半查找算法查找整数m在数组中的位置。若找到,则返回其下标值,反之,则返回-1。
提示:折半查找的基本算法是:每次查找前先确定数组中待查的范围,low和high,然后把m与中间位置(mid)中元素的值进行比较,如果m的值大于中间位置元素中的值,则下一次的查找范围放在中间位置之后的元素中,反之,下一次的查找范围落在中间位置之前的元素中。直到low
#define N 10
void fun (int a[ ], int m)
{ int low=0, high=N-1, mid;
while (low<=high)
{ mid=(low+high)/2;
if(m<=a[mid])
high=mid-1;
else if (m>=a[mid])
low=mid+1;
return (mid);
}
return (-1);
}
main ()
{ int i, a[N]={-3,4,7,9,13,45,67,89,100,180}, k, m;
printf (“a数组中的数据如下:”);
for (i=0; i=0) printf(“m=%d,index=%d
”, m,k);
else printf (“Not be found!
”);
}
【要求】
1.将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。
2.改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译处理命令,但不能增加其他语句,也不能删去整条语句。
3.改正后的源程序(文件名myf1.c)必须放在考试软盘的根目录下,供阅卷用,否则不予评分。
二、编程题(22分)
【题目】
1.编写函数fun,它的功能是:将3行4列矩阵x乘以4行3列矩阵y,结果放在3行3列矩阵xy中。矩阵相乘的基本方法是:矩阵xy中行列下标分别为i,j的元素的值,是矩阵x中第i行上4个元素与矩阵y中第j列上4个元素对应相乘的和。
例如:矩阵x为,矩阵y为,则矩阵xy为。
2.编写main函数,初始化两个数组,调用函数fun,将结果矩阵及函数返回值写入到文件myf2.out中。
【要求】
1.源程序文件名必须取为myf2.c,输出结果文件名为myf2.out。
2.数据文件的打开、使用、关闭均用C语言标准库中缓冲文件系统的文件操作函数实现。
3.源程序文件和运行结果文件均需要保存在考试软盘的根目录中供阅卷使用。
4.不要复制扩展名为obj和exe的文件到考试软盘上
试题 4
一、改错题(18分)
【题目】
函数fun的功能是:将m(1≤m≤10)个字符连接起来,组成一个新串,放入pt所指字符串中。例如:把3个串:“abc”,“CD”,“EF”串连起来,结果是“abcCDEF”。
含有错误的程序如下:
#include
#include
#include
int fun(char str[][],int m, *pt)
{
int k,q,i;
for(k=0;kPlease enter m:");
scanf("%d",&m); gets(s);
printf("
Please enter %d string:
",m);
for(h=0;hThe result is :%s
",p);
NONO( ); /*本函数与考生答题无关,考生不得改动,否则后果自负。*/
}
【要求】
1.将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。
2.改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译处理命令,但不能增加其他语句,也不能删去整条语句。
3.改正后的源程序(文件名myf1.c)必须放在考试软盘的根目录下,供阅卷用,否则不予评分。
二、编程题(22分)
【题目】
1.编写一个函数void fun (int array[ ], int n),将array数组中的前n个整数按从大到小的顺序排序。
2.编写主函数main,从键盘上输入一个正整数,求出该位是几位数,按从左到右的顺序显示各位数字,用这些数字组成一个最小正整数(调用fun函数),将以上三项结果写入到文件myf2.out中。
【要求】
1.源程序文件名必须取为myf2.c,输出结果文件名为myf2.out。
2.数据文件的打开、使用、关闭均用C语言标准库中缓冲文件系统的文件操作函数实现。
3.源程序文件和运行结果文件均需要保存在考试软盘的根目录中供阅卷使用。
4.不要复制扩展名为obj和exe的文件到考试软盘上
答案部分
试题1
一、改错题(18分)
1.int fun(int n,int xx[ ][ ]) 改为 int fun(int n,int xx[ ][M])
2.int i,j,sum; 改为 int i,j,sum=0;
3.printf("%f",xx[i][j]); 改为 printf("%d",xx[i][j]);
4.sum+=xx[i][i]+xx[i][n-i]; 改为 sum+=xx[i][i]+xx[i][n-i-1];
二、编程题(22分)
#include
#include
#define N 80
void fun(char *w, int m)
{
char a[N];
int i,j,n=strlen(w);
for(i=0;i"); }
fprintf(fp,"The original string:");
fprintf(fp,"%s",a);
printf("
Enter m");
scanf("%d",&m);
fun(a,m);
fprintf(fp,"
The string after moving:");
fprintf(fp