江苏省等级考试上机模拟题.docx
- 文档编号:3758367
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:26
- 大小:38.03KB
江苏省等级考试上机模拟题.docx
《江苏省等级考试上机模拟题.docx》由会员分享,可在线阅读,更多相关《江苏省等级考试上机模拟题.docx(26页珍藏版)》请在冰豆网上搜索。
江苏省等级考试上机模拟题
第一套C上机试卷1
第二套C上机试卷3
第三套C上机试卷5
第四套C上机试卷7
第五套C上机试卷9
第六套C上机试卷11
第一套C上机试卷
(本试卷上机时间为70分钟)
一、改错题(20分)
【题目】
下面的程序首先输入若干人员的姓名(不超过6个英文字母)及其电话号码(不超过7位数字),输入姓名为字符“#”时表示输入结束。
然后在其中查找某人的电话号码。
输入数据为wanghe1234567zhang3592123hanjun2345678,查找人名为zhang。
含有错误的源程序如下:
#include"stdio.h"
#definetel_length7
#definename_lengthtel_length-1
#include
structts{
charname[name_length];
chartel[tel_length];
};
voidreadin(structts*as,int*n)
{charname[name_length],tel[tel_length];
intj=1;
printf("Pleaseinputname(='#'toexit):
");
scanf("%s",name);
while(strcmp(name,‘#’))/*改为:
strcmp(name,"#")*/
{as[j].name=name;/*改为:
strcpy(as[j].name,name);*/
printf("Pleaseinputphone_number:
");
scanf("%s",as[j].tel);
j++;
printf("Pleaseinputname(='#'toexit):
");
scanf("%s",name);
}
*n=--j;
}
voidsearch(structts*b,char*x,intn)
{intj;
j=n;
while(strcmp(b[j].name,x)&&j)
j--;
if(j==0)/*改为:
j!
=0*/
printf("name:
%stel:
%s\n",b[j].name,b[j].tel);
elseprintf("Notfound!
\n");
}
voidmain()
{structtss[11];
intnum=0;
charname[name_length];
readin(s,&num);
printf("Inputanamefotsearch:
");
scanf("%s",name);
search(s,name,num);
}
【要求】
1.把上述程序录入到文件myfl.c中,然后根据题目的要求以及程序中语句之间的逻辑关系对程序中的错误进行修改。
2.改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其他语句,也不能删去整条语句。
3.改正后的源程序myfl.c必须放在考试盘的根目录下,供阅卷用。
二、编程题(20分)
【题目】
程序功能:
将一字符串做压缩处理。
编程要求如下:
1.编写一个函数intcompress(chars[]),对于s中的所有字母保持不变,其他字符若连续出现多次,则压缩为一个字符,统计被删除的字符个数并作为函数值返回。
2.编写主函数main。
从键盘上读入一行字符放入一个字符型数组中,调用compress函数对读入的该行字符做压缩处理,将压缩后的数据写入结果文件myf2.out中。
3.用以下数据测试程序:
----------Iamastudent,,,,,,,,andyoutoo!
!
!
!
!
!
【要求】
1.将源程序取名为myf2.c,输出结果文件取名为myf2.out。
2.数据文件的打开、使用和关闭均按‘TURBOC文件操作实现。
3.源程序文件和运行结果文件均须放在考试盘的根目录下,供阅卷用。
4.不要将myf2.0bj和myf2.exe保存到考试盘上。
【源程序】:
#include
#include
intcompress(chars[])
{inti,k,count=0,count_del=0;
charst[80];
k=strlen(s);
/*实现数据压缩,引入另一个数组。
即将不相同的数据存入另一数组中。
*/
for(i=0;i if(s[i]==s[i+1]) continue; else st[count++]=s[i]; st[count]='\0'; count_del=strlen(s)-strlen(st);/*求压缩的字符个数*/ strcpy(s,st);/*将压缩后的数组存入压缩前的数组中*/ returncount_del; returncount_del; } main() {FILE*fp;/*文件指针的定义*/ charstr[80]; intm; if((fp=fopen("myf2.out","w"))==NULL)/*以只读的方式打开文件myf2.out*/ {printf("can'topenfile"); exit(0); } gets(str); m=compress(str); printf("%d,%s",m,str); fprintf(fp,"%d,%s",m,str);/*将压缩后的数据写入结果文件myf2.out中*/ fclose(fp); } 第二套C上机试卷 (本试卷上机时间为70分钟) 一、改错题(20分) 【题目】 某数列的前两项是3和2,其后继项根据前面最后两项的乘积,按下列规则生成: (1)若乘积为一位数,则该乘积即为数列的后继项; (2)若乘积为两位数,则该乘积的十位数字和个位数字依次作为数列的两个后继项。 例如,该数列的前10项为: 3261224832。 函数sum按要求生成数列的前n(n<50)项,存入首指针为pa的数组中,计算并返回前n项的和。 含有错误的源程序如下: #include #defineN50 voidsum(intn,int*pa)/*改为sum(intn,int*pa)*/ { intcount,total,temp; *pa=3; *++pa=2; total=5; count=2; while(count++ {temp=*(pa-1)**pa; if(temp<10) {total+=temp; *(++pa)=temp;} else{ *++pa=temp/10; total+=*pa; if(count {count++; pa++=temp%10;/*改为*++pa=temp%10;*/ total+=*pa; } } } returntotal; } main() { inttol,n,i,num[n];/*改为inttol,n,i,num[N]*/ do { printf("Inputn=? (2 scanf("%d",&n); }while(n<=2||n>=50); tol=sum(N,num); for(i=0;i printf((i+1)%5? "%5d": "%5d\n",num[i]); printf("\n"); printf("%d",tol); } [要求] 1.把上述程序录入到文件myf3.c中,然后根据题目的要求以及程序中语句之间的逻辑关系对程序中的错误进行修改。 2.改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其他语句,也不能删去整条语句。 3.改正后的源程序myf1.c必须放在考试盘的根目录下,供阅卷用。 二、编程题(20分) [题目] 一个有符号整型数以字符串形式存放在字符数组a中,字符串中只会出现数字字符、“-”、“+”和空格。 约定“-”和“+”只能出现在a[0]位置。 若a[0]位置的字符是“-”,则表示该整型数为负数,否则为正数。 除a[0]外,其他位置还可能出现空格。 试按下列要求编写程序: 1.编写函数intchang(chara[],intb[],int*n),按下列规则转换字符数组a中的字符串: (1)整型变量sign存放数符,当整型数为正数时sign为0,为负数时sign为1,函数返回sign的值; (2)整型数组b依次存放字符串a中出现的所有数字字符转换为对应的整型数后的值(不包括数符); (3)n指向的变量保存放入b数组的整型数的个数; (4)字符串a中的空格忽略不计。 例如,字符串“20.3”转换后的结果是: sign=0,b=(2,0,3)。 字符串“-33740”转换后的结果是: sign=1,b=(3,3,7,4,0)。 2.在主函数中输入两个字符串: “-2351”、”+38246",分别调用函数chang做字符串转换,并将转换结果以例子给出的形式写入到文件myf2.out中。 [要求] 1.将源程序文件取名为myf4.c,输出结果文件取名为myf4.out。 2.数据文件的打开、使用和关闭等操作均用C标准库中缓冲文件系统的文件操作函数实现。 3.源程序文件和运行结果文件均须放在考试盘的根目录下,供阅卷用。 4.不要将myf4.obj和myf4.exe保存到考试盘上。 【源程序】: #include #include intchang(chara[],intb[],int*n) /*求sign值*/ {inti,j=0,sign; if(a[0]=='+')sign=1; elsesign=0; /*将字符串a中出现的所有数字字符转换为对应的整型数后的存入整型数组b中依次存放*/ for(i=1;a[i]! ='\0';i++) if(isdigit(a[i])) b[j++]=a[i]-'0'; *n=j;/*存入整型数组b中的个数*/ returnsign; } main() {FILE*fp; chara[2][10]={"-2351","+38246"}; inti,j,sign,b[10],count; if((fp=fopen("myf4.out","w"))==NULL) {printf("can'topenfile"); exit(0); } for(i=0;i<2;i++) {sign=chang(a[i],b,&count);/*分别调用函数chang做字符串转换*/ fprintf(fp,"sign=%d,b=(",sign); /*按题目中要求输出结果到文件myf4.out中*/ for(j=0;j fprintf(fp,"%d,",b[j]); fprintf(fp,"%d)\n",b[j]);} fclose(fp); } 第三套C上机试卷 (本试卷上机时间为70分钟) 一、改错题(20分) 【题目】 局部最大值定义: 若矩阵中一个元素的值比其上、下、左、右4个相邻元素的值都大,称该元素是局部最大值,位于矩阵拐角和边界的元素分别只有2个和3个相邻元素。 函数localmax的形参a存储输入矩阵,b存储输出矩阵,该函数的功能是: 找出a矩阵中所有局部最大值;若输入矩阵的某个元素为局部最大值,则将输出矩阵的相同位置处的元素置l,否则置O。 例如: 含有错误的源程序如下: #include #defineMIN-32768 voidlocalmax(int*a[7],int*b[7])/*改为(int(*a)[7],int(*b)[7])*/ {inti,j,k,m; for(i=1;i<=5;i++) for(j=1;j<=5;j++) {b[i][j]=1; for(k=-1;k<=1;k++) for(m=-1;m<=1;m++) {if((k==-1||k==1)&&(m==-1||m==1)) break;/*改为continue;*/ if(a[i][j]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 江苏省 等级 考试 上机 模拟