春江苏省计算机二级考试c语言上机试题.docx
《春江苏省计算机二级考试c语言上机试题.docx》由会员分享,可在线阅读,更多相关《春江苏省计算机二级考试c语言上机试题.docx(7页珍藏版)》请在冰豆网上搜索。
春江苏省计算机二级考试c语言上机试题
2011年(春季)江苏省计算机二级考试
C语言上机部分试卷
上机试卷(01)
一、改错题(16分)
【程序功能】
对存储在string数组内的英文句子中所有以a开始并以e结尾的单词做加密处理。
加密规则:
若单词长度为偶数个字符,则将组成该单词的所有字母循环左移一次。
否则循环右移一次。
例如,单词able经循环左移一次后变为blea。
单词abide经循环右移一次后变为eabid。
【测试数据与运行结果】
测试数据:
sheisabletoabideher.
屏幕输出:
sheisbleatoeabidher.
【含有错误的源程序】
#include
#include
voidwordchange(charstr[])
{inti,j,k,m。
charc。
for(i=0。
str[i]。
i++)
{for(j=i,k=i。
isalpha(str[k])。
k++)。
if(str[j]=='a'||&&str[k-1]=='e')
{if((k-j)%2=0)==
{c=str[j]。
for(m=k-1。
m>j。
m--)
str[m]=str[m+1]。
str[k-1]=c。
}
else
{c=str[k-1]。
for(m=k-1。
m>j。
m--)
str[m]=sty[m-1]。
str[j]=c。
}
}
i=k。
}。
}
voidmain()
{charstring[80]="sheisabletoabideher."。
wordchange(string[80])。
(string)
puts(string)。
}
【要求】
1.将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程
序中的错误进行修改。
2.改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其他语句,也不能删去整条语句。
3.改正后的源程序(文件名myf1.c)保存在T盘根目录中供阅卷使用,否则不予评分。
二、编程题(24分)
【程序功能】
矩阵数据生成及排序。
【编程要求】
1.编写函数voidcresort(inta[][3],intn)。
函数功能是先根据a指向的二维数组中第1列(列下标为0)和第2列(列下标为1)的值按下表所列规则生成第3列各元素的值,再以行为单位重排a数组的各行,使得所有行按第3列元素值从小到大排列。
第3列生成规则:
对任意的i(0<=i<=n-1)有:
2.编写main函数。
函数功能是声明5行3列二维数组a并用测试数据初始化,用数组a作为实参调用cresort函数,将a数组中的数据输出到屏幕及文件myf2.out中。
最后将考生本人的准考证号字符串输出到文件myf2.out中。
【测试数据与运行结果】
测试数据:
27160
11120
690
7130
850
屏幕输出:
27161
691
852
11123
7134
【要求】
1.源程序文件名为myf2.C,输出结果文件名为myf2.out。
2.数据文件的打开、使用、关闭均用C语言规范库中缓冲文件系统的文件操作函数实现。
3.源程序文件和运行结果文件均需保存在T盘根目录中供阅卷使用。
4.不要复制扩展名为obj和exe的文件到T盘中。
2011年(春季)江苏省计算机二级考试
C语言上机部分试卷
上机试卷(02)
一、改错题(16分)
【程序功能】
统计一个字符串中包含的字母串个数并找出其中最长的字母串。
所谓字母串是指一个连续的字母序列(不区分大小写),字母串之间用非字母字符分隔。
函数count的功能是统计p指向的字符串中包含的字母串个数,找出的最长字母串存放在pmax指向的数组中,函数返回字母串的个数。
【测试数据与运行结果】
测试数据:
youareteaeher234too.
屏幕输出:
a=youareteacher234too.
numberis4
maxstringis:
teacher
【含有错误的源程序】
#include
#include
#include
intcount(charp[],charpmax[]){intj=0,k,m=0。
chartemp[100]。
while(*p)
{while((!
isalpha(*p))&&*p)p++。
k=0。
if(*p!
='\0')m++。
while(isalpha(*p))
temp[k++]=*p++。
temp[k]="\0"。
if(k{j=k。
pmax=temp。
strcpy(pmax,temp)。
}
}
returnm。
}
voidmain()
{chara[100]="youareteacher234too.",max[100]。
inti。
i=count(a[],max[])。
(a,max)
if(i==0)
printf("a=%S:
Noletterstrings!
\n",a)。
else
prinff("a=%s\nnumberis%d\nmaxstringis:
%s\n",a,i,max)。
}
【要求】
1.将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。
2.改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其他语句,也不能删去整条语句。
3.改正后的源程序(文件名myf1.c)保存在T:
盘根目录中供阅卷使用,否则不予评分
二、编程题(24分)
【程序功能】
将一个二维数组中的若干行数据按要求插入到另一个二维数组中。
【编程要求】
1.定义符号常量N代表4
2.编写函数intinsert_row(inta[][N],intn,intb[][N],intm)。
已知形参a指向的二维数组(简称a数组)前n行数据已按每行数据之和升序排列,形参b指向的二维数组中有m行数据。
insert_row函数实现将b数组中m行数据插入到a数组中,完成插入操作后a数组中所有行的数据仍按每行数据之和升序排列。
函数返回a数组中有效数据的行数。
3.编写main函数。
函数功能是声明两个二维数组x和y并用测试数据初始化,用x和y
数组作为实参调用insert_row函数将y数组中的两行数据插入到x数组中。
输出x数组中全部数据到屏幕及文件myf2.out中。
最后将考生本人的准考证号字符串输出到文myf2.out中。
【测试数据与运行结果】
测试数据:
x数组原数据:
2234
9101112
y数组数据:
1357
5101520
屏幕输出:
2234
1357
9101112
5101520
【答案】
改错1:
将第13行"temp[0]="\0"修改为temp[0]='\0'
改错2:
将第14行if(kj)
改错3:
将第16行pmax=temp,修改为strcpy(pmax,temp)。
改错4:
将第24行i=count(a[],max[])修改为i=count(a,max)。
2011年(春季)江苏省计算机二级考试
C语言上机部分试卷解读
上机试卷(01)
一、改错题
if(str[j]=='a'||str[k-1]=='e')改为&&
if((k-j)%2=0)改为==
for(m=k-1。
m>j。
m--)改为m=j。
mm++
wordchange(string[80])。
改为string
二、编程题
#include
#defineN5
intisprime(intm)
{inti。
for(i=2。
i<=m/2。
i++)
if(m%i==0)return0。
retum1。
}
voidcresort(inta[][3],intn)
{inti,j,k,m,c,t。
for(i=0。
ii++)
{c=isprime(a[i][0])+isprime(a[i][1])。
switch(c)
{case0:
a[i][2]=1。
break。
case2:
a[i][2]=4。
break。
case1:
if(isprime(a[i][0]))a[i][2]=3。
elsea[i][2]=2。
break。
}
}
for(i=0。
ii++)
{k=i。
for(j=i+1。
jj++)
}
2011年(春季)江苏省计算机二级考试
C语言上机部分试卷解读
上机试卷(02)
一、改错题
【答案】
改错1:
将第13行"temp[0]="\0"修改为temp[0]='\0'
改错2:
将第14行if(kj)
改错3:
将第16行pmax=temp,修改为strcpy(pmax,temp)。
改错4:
将第24行i=count(a[],max[])修改为i=count(a,max)。