春江苏省计算机二级考试c语言上机试题.docx
- 文档编号:7598297
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:8
- 大小:53.82KB
春江苏省计算机二级考试c语言上机试题.docx
《春江苏省计算机二级考试c语言上机试题.docx》由会员分享,可在线阅读,更多相关《春江苏省计算机二级考试c语言上机试题.docx(8页珍藏版)》请在冰豆网上搜索。
春江苏省计算机二级考试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数组中的数据输
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(k 改错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;m 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;i {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;i {k=i; for(j=i+1;j } 2011年(春季)江苏省计算机二级考试 C语言上机部分试卷解析 上机试卷(02) 一、改错题 【答案】 改错1: 将第13行"temp[0]="\0"修改为temp[0]='\0' 改错2: 将第14行if(k 改错3: 将第16行pmax=temp,修改为strcpy(pmax,temp); 改错4: 将第24行i=count(a[],max[])修改为i=count(a,max);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 江苏省 计算机 二级 考试 语言 上机 试题