2022年江苏省高校计算机等级考试二级C语言上机真题的答题要点.docx

上传人:H****o 文档编号:12924671 上传时间:2022-04-26 格式:DOCX 页数:30 大小:89.14KB
返回 下载 相关 举报
2022年江苏省高校计算机等级考试二级C语言上机真题的答题要点.docx_第1页
第1页 / 共30页
2022年江苏省高校计算机等级考试二级C语言上机真题的答题要点.docx_第2页
第2页 / 共30页
点击查看更多>>
资源描述

《2022年江苏省高校计算机等级考试二级C语言上机真题的答题要点.docx》由会员分享,可在线阅读,更多相关《2022年江苏省高校计算机等级考试二级C语言上机真题的答题要点.docx(30页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、精品学习资源【上机题命题及答题要点】1、 近年来江苏省高校上机题目难度有所下降;本轮上机命题的难度系数与全国电脑等级考试二级C 语言接近;2、 改错题通常有 34 个错误;错误分为两大类,一类是语法出错,这类错误比较查错和简洁修改,即在编译时报的错误;另一类是结果出错,即程序的算法出错,这类错误需仔细审题;3、 编程题必需把握 C 语言的文件,应熟识文件指针的定义,文件的打开及文件的输入输出;编程题的固定框架;必需记忆;以C01 的编程为例;#include /* 库函数 exit0 需要 */#include /* 定义文件指针时需要的头文件*/ .欢迎下载精品学习资源int palindr

2、omechar *str, char *rvoid mainFILE *fp;全部数据类型的说明和定义iffp=fopent:myf2.out,w=NULL函数编程,按【编程要求】1.编写函数 int palindromechar *str, char *r;.要点:函数首部完整照抄;参数为指针时,假设对指针不熟识,在函数体内可以按数组编程;欢迎下载精品学习资源printfnCant open the file.; exit 0;函数调用详细问题详细分析结果输出printfnMy number is:120992340n; fprintffp,nMy number is:1292340n; f

3、closefp;4、 必需熟识常用算法;5、 江苏省高校电脑二级C 语言上机编程题常考问题:字符串相关问题、素数相关问题、回文数相关问题、矩阵二维数组相关问题、特别数问题如, 合数、真因子或质因子之和、水仙花数、亲热数、完数、数制转换、哥德巴赫猜想等;6、把握文件输出操作标准形式;【2021 年 3 月江苏省等考上机真题解析】欢迎下载精品学习资源江苏省高等学校非电脑专业同学C01电脑基础学问和应用才能等级考试上机试卷二级C 语言试卷代号 C01本试卷完成时间70 分钟一、 改错题16 分【程序功能】判定一个 NN 方阵 N 为奇数是否为魔方阵;魔方阵的判定条件是:方阵中每行、每列、主对角线及副

4、对角线上的数据之和均相等;例如,以下方阵中,主对角线的数据是8、 5、2 之和是 15,副对角线上的数据6、5、4 之和也是 15,并且每行、每列数据之和15,因此该项方阵是魔方阵;816357492【测试数据与运行结果】屏幕输出:816357492The Array x is a magic square.123564987The Array x isn t a magic square.【含有错误的源程序】以下源程序已储存在T 盘 myf1.c 文件内,考生可直接打开该文件测试程序;#include #include #include #define N 3void funint *aN

5、int i,j,m1,m2,row,colum; m1=m2=0;fori=0; iN; i+ m1+=aii;m2+=aiN-i-1;ifm1.=m2 return 0; fori=0; iN; i+row=colum=i;forj=0; jN; j+row+=aij;colum+=aji;ifrow.=colum|row.=m1 return 0;欢迎下载精品学习资源return 1;void printint xNint i,j;fori=0; iN; i+forj=0; jN; j+ printf%3d,xij;printfn;int mainint xN,N=8,1,6,3,5,7,

6、4,9,2,yN,N=1,2,3,5,6,4,9,8,7;printx;iffunx printfThe Array x is a magic square.n; else printfThe Array x isnt a magic square.n; printy;iffuny printfThe Array y is a magic square.n; else printfThe Array y isnt a magic square.n; getch;return 0;【要求】1. 打开 T 盘中 myfl.c 文件或将上述程序录入到myf1.c 文件中,依据题目要求及程序中语句之间

7、的规律关系对程序中的错误进行修改;2. 改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其它语句,也不能删去整条语句;3. 改正后的源程序文件名myfl.c 储存在 T 盘的根目录中供阅卷使用,否就不予评分;【解析】#include #include /* 该头文件是调用getch函数需要的 */ #include #define N 3int funint *aN/1、函数要求调用有返回值,void funint *aN函数类型设置错误int i,j,m1,m2,row,colum; m1=m2=0;fori=0; iN; i+m1+=aii;

8、m2+=aiN-i-1;ifm1.=m2 return 0; fori=0; iN; i+row=colum=i;欢迎下载精品学习资源forj=0; jN; j+row+=aij;colum+=aji;ifrow.=colum&row.=m1/2、规律表达式出错: row.=colum|row.=m1 return 0;return 1;void printint xNint i,j;fori=0; iN; i+forj=0; jN; j+printf%3d,xij;/3、输出格式出错:printf%3d,xij ; printfn;int mainintxNN=8,1,6,3,5,7,4,9

9、,2,yNN=1,2,3,5,6,4,9,8,7;/4、数组下标定义出错: xN,N 和 yN,Nprintx;iffunx printfThe Array x is a magic square.n; else printfThe Array x isnt a magic square.n; printy;iffuny printfThe Array y is a magic square.n; else printfThe Array y isnt a magic square.n; getch;return 0;二、 编程题24 分【程序功能】检查一个字符串中中全部数字字符所对应整数例如

10、,字符1所对应的整数为 1,其他依次类推之和是否为 3 的倍数; 判定该字符串是否回文字符串回文字符串: 正序和倒序相同的字符串;例如, ab121ba 是回文字符串 ;【编程要求】1、编写函数 int palindromechar *str, char *r;函数功能: 检查 str 指向的字符串中全部数字字符所对应的整数之和是否为3 的倍数,假设是就将 yes 储备到 r 指向的数组中,否就将 no 储备到 r 指向的数组中 . 判定 str 指向的字符串是否是回文字符串,假设是就函数返回1,否就返回 0;2、编写函数 main ;函数功能:声明字符型数组a 和 r,输入一个字符串到a 数

11、组,用 a、 r 作实寻调用 palindrome 函数,假设字符串中全部数字字符所对应的整数之和是3 的倍数且字符串双是回文字符串,就输出该字符串及yes 到屏幕及数据文件myf2.out中,否就输出 no 到屏幕及数据文件myf2.out 中;最终将考生本人的准考证号字符串输出到文件myf2.out 中;欢迎下载精品学习资源【测试数据与运行结果】 测试数据: 33abbba66 屏幕输出: no测试数据: 12abcba21屏幕输出: yes【要求】1. 源程序文件名为 myf2.c ,输出结果文件名为myf2.out ;2. 数据文件的打开、使用、关闭均用C 语言标准库中文件操作函数实现

12、;3. 源程序文件和运行结果文件均需储存到T 盘上,供阅卷使用;4. 不要复制扩展名为obj 和 exe 的文件到 T 盘上;【编程题解题思路】编程的关键是 知道库函数所需要的相应的头文件名; 除主函数和函数 palindrome 外,依据 C 语言模块化设计特点,增加了能判定一串字符串是否是回文字符串的自编函数int Judgerchar a ,其中判定回文字符串的函数必需要熟记之,与此同时也要记住判定回文数 data_palindrome 和回文素数的通用函数:#include int data_palindromelong slong k=s,h=0; whilekh=h*10+k%10

13、,k/=10;ifh=s return 1;return 0;int mainlong a; scanf%ld,&a;ifdata_palindromea printf%ld is palindrome,a;elseprintf%ld isnt palindrome,a;【编程题解答: myf2.c】#include #include /库函数 strlen 需要#include /库函数 isdigit 、strcpy 需要,书 P386 int Judgerchar a/ 判定字符串 a 是否是回文字符串的通用函数欢迎下载精品学习资源int n=0,i,j; n=strlena;fori=

14、0,j=n-1;ij;i+,j-ifai.=ajreturn 0;return 1;int palindromechar *str, char *rint i=strlenstr-1,j=0,m=0;whilestri.=-1/运算字符串 str 中数字字符的数字量值之和ifisdigitstrim+=stri-48;i-;ifm%3=0&Judgerstr/ 满意字符串的数字量之和是3 的倍数和回文字符串时返回1,并将yes 存入数组元素strcpyr,yes;j+;return 1;else /不满意字符串的数字量之和是3 的倍数和回文字符串时返回0,并将 no 存入数组元素strcpyr

15、,no; j+; return 0;void mainFILE *fp; int i;char a210=33abbba66,12abcba21,r210;iffp=fopent:myf2.out,w=NULLprintfnCant open the file.; exit 0; fori=0;i2;i+ifpalindromeai,ri printfn%sn%s,ai,ri,fprintffp,n%sn%s,ai,ri;elseprintfn%sn%s,ai,ri,fprintffp,n%sn%s,ai,ri;printfnMy number is:120992340n; fprintffp

16、,nMy number is:1292340n; fclosefp;/* 操作终止,关闭文件fp*/蓝色的内容需记忆,并且 printf函数与 fprintf函数写在一起,用逗号分隔, 这样程序不简洁欢迎下载精品学习资源一、 改错题16 分【程序功能】子串查找并替换;江苏省高等学校非电脑专业同学C04电脑基础学问和应用才能等级考试上机试卷二级C 语言试卷代号 C04本试卷完成时间70 分钟欢迎下载精品学习资源函数 substition 的功能是在 s 指向的字符串简称 s 串中查找 t 指向的子串简称 t 串, 并用 g 指向的字符串简称 g 串替换 s 串中全部的 t 串;【测试数据与运行结

17、果】测试数据:s: aaacdaaaaaaaefaaaghaat: aaa g: 22屏幕输出: 22cd2222aef22ghaa【含有错误的源程序】以下源程序已储存在T 盘 myf1.c 文件内,考生可直接打开该文件测试程序;#include #include #include void substitutionchar*,char*,char*; int mainchar s80= aaacdaaaaaaaefaaaghaa,t2=aaa,g=22; putss;substitutions,t,g; putss;getch;void substitutionchar *,char *,c

18、har * ;int i,j,k;char temp80; fori=0;si=0;i+forj=i,k=0;sj=tk&tk.=0;j+,k+; iftk=0temp=s+j; strcpys+i,g; strcats,temp; i+=strleng-1;【要求】1. 打开 T 盘中 myfl.c 文件或将上述程序录入到myf1.c 文件中,依据题目要求及程序中语句之间的规律关系对程序中的错误进行修改;2. 改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但欢迎下载精品学习资源不能增加其它语句,也不能删去整条语句;3. 改正后的源程序文件名myfl.c

19、 储存在 T 盘的根目录中供阅卷使用,否就不予评分;二、 编程题24 分【程序功能】在一组数值不全全的整数中查找次大数;【编程要求】1、编写函数 int findsecmaxint data, int count;函数功能:在 data 数组的前 count 个整数中查找次大数;2、编写函数 main ;函数功能:声明一个整型数组a 并用测试数据初始化,用数组a 及数组元素个数作实参调用 findsecmax函数找出次大数,然后将原数组及次大数输出到屏幕及数据文件myf2.out 中;最终将考生本人的准考证号字符串输出到文件myf2.out 中;【测试数据与运行结果】测试数据: 1,9,2,8

20、,3,7,4,6,10,10屏幕输出:192837461010Sec_max: 9【要求】1. 源程序文件名为 myf2.c ,输出结果文件名为myf2.out ;2. 数据文件的打开、使用、关闭均用C 语言标准库中文件操作函数实现;3. 源程序文件和运行结果文件均需储存到T 盘上,供阅卷使用;4. 不要复制扩展名为obj 和 exe 的文件到 T 盘上;【改错题解答: myf1.c】此题比较简洁;依据标准,原程序存在6 个错误,所以每个错误,假设改正,就得3 分;实际命题老师只认 4 个错误: 1、 2、5、6,此时每题 4 分;#include #include #include void

21、substitutionchar*s,char*t,char*g;/1、 自 定 义 函 数 的 声 明 语 句 出 错voidsubstitutionchar*,char*,char*; int mainchar s80=aaacdaaaaaaaefaaaghaa,t4=aaa,g3=22; /2、字符串数组下标填写为大于或等于字符数加 1putss; substitutions,t,g; putss;getch;return 0;/3、主函数有类型定义,在TC30 编译时必需有返回语句voidsubstitutionchar*s,char*t,char*g/4 、 自 定 义 函 数 的

22、函 数 头 出 错void substitutionchar*,char*,char*;int i,j,k;欢迎下载精品学习资源char temp80; fori=0;si.=0;i+/5 、循环语句终结条件出错:si=0 ;否就不执行循环语句forj=i,k=0;sj=tk&tk.=0;j+,k+; iftk=0strcpytemp,s+j;strcpys+i,g;strcats,temp; i+=strleng-1;/6、字符串赋值用库函数strcpy: temp=s+j;【编程题解答: myf2.c】解题思路:;编程的关键是需要知道库函数所需要的相应的头文件名;此题较简洁;#includ

23、e int findsecmaxint data, int countint i, j=0,secmax=0,max=data0,b10;fori=1;imax max=datai;fori=0;icount;i+/排除最大值后的整数数据放入暂时数组b ifdatai.=max bj+=datai;fori=0;isecmax secmax=datai; return secmax;void mainFILE *fp;int i,a20=1,9,2,8,3,7,4,6,10,10,count=10,sec_max;iffp=fopenmyf2.out,w=NULLprintfnCant ope

24、n the file.; exit 0; sec_max=findsecmaxa,count; fori=0;icount;i+printfi+1%5=0.%4dn:%4d,ai,fprintffp,i%5=0.%4dn:%4d,ai; printfnsec_max:%4d,sec_max,fprintffp, nsec_max:%4d,sec_max; printfnMy number is:120992340n;fprintffp,nMy number is:1292340n; fclosefp;/* 操作终止,关闭文件fp*/欢迎下载精品学习资源江苏省高等学校非电脑专业同学C05电脑基础

25、学问和应用才能等级考试上机试卷二级C 语言试卷代号 C05本试卷完成时间70 分钟一、改错题16 分【程序功能】找出找出全部符合条件的数列: 由 6 个素数组成; 数列中每一项的值在 7360 之间;数列是一个公差为 30 的等差数列;简称这样的数列为等差素数数列; 例如,7376797127157 就是符合上述条件的一个等差素数数列;函数 series 将 xy 范畴内全部符合上述条件的等差素数数列依次储存到a 指向的二维数组中一行储存一个数列 ;【测试数据与运行结果】屏幕输出: 73767127157107137167197227257【含有错误的源程序】以下源程序已储存在T 盘 myf1

26、.c 文件内,考生可直接打开该文件测试程序;#include #include #include int primeint n; int i; fori=2;i=intsqrtn;i+ifn%i=0return 0;return 1;int seriesint a6,int x,int yint d=30,i=0,n=x,j,f; whilen=2|primenn+;whileny-5*df=1;forj=0;j6; j+ ifprimen+j*d=0f=0;break; iffforj=0;j6;j+aij=n+j*d; i+; n+=2;return i;int main欢迎下载精品学习资

27、源int a306,i,j,count; count=seriesint a6,7,360; fori=0;icount;i+ forj=0;j6;j+printf%5d,aij; printfn;getch; return 0;【要求】1. 打开 T 盘中 myfl.c 文件或将上述程序录入到myf1.c 文件中, 依据题目要求及程序中语句之间的规律关系对程序中的错误进行修改;2. 改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其它语句,也不能删去整条语句;3. 改正后的源程序文件名myfl.c 储存在 T 盘的根目录中供阅卷使用,否就不予评

28、分;二、 编程题24 分【程序功能】将一个字符串中全部数字字符次序交移,其他字符次序后移,生成一个新的字符串;【编程要求】1、编写函数 void movechar *s ;函数功能:将 s 指向的字符串中全部数字字符次序前移,其他字符次序后移,所生成的新字符串仍旧存放在s 指向的数组中;2、编写函数 main ;函数功能: 声明一个字符型数组s 并用测试数据初始化,用 s 作实参调用 move 函数,将结果字符串输出到屏幕及数据文件myf2.out中;最终将考生本人的准考证号字符串输出到文件 myf2.out 中;【测试数据与运行结果】测试数据: asd123fgh5#43df屏幕输出: 12

29、3543asdfgh#df【要求】1. 源程序文件名为 myf2.c ,输出结果文件名为myf2.out ;2. 数据文件的打开、使用、关闭均用C 语言标准库中文件操作函数实现;3. 源程序文件和运行结果文件均需储存到T 盘上,供阅卷使用;4. 不要复制扩展名为obj 和 exe 的文件到 T 盘上;【改错题解答: myf1.c】依据标准,原程序存在3 个错误,所以每个错误,假设改正,就得4、8、4 分;第 2 个错误是本改错题关键所在;其分值较高;该段程序的目的是确保初始值n 是素数;读者也可用实参a,4,360 去试验, 同样可得相同结果;但考生一般会修改为whilea=0&primen,

30、这样用实参a,4,360 去试,就使下面程序为死循环,对此要扣8 分的;欢迎下载精品学习资源#include #include #includeint primeint n/1、函数的形参出错int n;int nint i; fori=2;i=intsqrtn;i+ifn%i=0return 0;return 1;int seriesint a6,int x,int yint d=30,i=0,n=x,j,f;while.primen/2、规律表达式出错n=2|primen .primen,不改就造成下面程序死循环 n+;/其实这段循环目的是确保n 是素数;whileny-5*df=1;fo

31、rj=0;j6; j+ ifprimen+j*d=0f=0;break; iffforj=0;j6;j+aij=n+j*d; i+; n+=2;return i;int mainint a306,i,j,count;count=seriesa,7,360;/3、函数调用的实参出错:int a6,7,360 a,7,360 fori=0;icount;i+ forj=0;j6;j+printf%5d,aij; printfn;getch; return 0;【编程题解题思路】欢迎下载精品学习资源此题解题思路是挑字符串s 中数字字符存入数组a;其余数字存入数组b,最终将其合并,再由合并后的字符串复

32、制入形参数组s;其次是,需要知道库函数所需要的相应的头文件名,下面一一予以注释;【编程题解答: myf2.c】#include #include / 库函数 strcat 和 strcpy 需要#include /库函数 isdigit 需要#include /库函数 exit0 需要#include / 库函数 getch 需要void movechar *sint i=0, j=0,k,m=strlens; char a20,b20; fork=0;km;k+ifisdigitsk ai+=sk;/数字串 s 中数字字符次序存入数组aelse bj+=sk;/ 其余字符次序存入数组b ai

33、=0; bj=0;/加字符串的截止符strcata,b;/ 变化后字符全部存入数组a strcpys,a;void mainchar s20=asd123fgh5#43df;FILE *fp; iffp=fopenmyf2.out,w=NULLprintfnCant open the file.; exit 0;moves;printfn%s,s,fprintffp, n%s,s;printfnMy number is:120992340n; fprintffp,nMy number is:1292340n; fclosefp;/* 操作终止,关闭文件fp 书 P334 */getch;欢迎下

34、载精品学习资源一、改错题16 分【程序功能】江苏省高等学校非电脑专业同学C06电脑基础学问和应用才能等级考试上机试卷二级C 语言试卷代号 C06本试卷完成时间70 分钟欢迎下载精品学习资源任何一个合数都可以成假设干个质因数相乘的形式,例如,120=22235;以下程序实现将输入的一个合数分解成质因数相乘的形式,其中,函数 fun 的功能是分解num 的质因数,将得到的全部质因数存放在a 指向的数组中,质因数的个数通过指针count 带回主函数;【测试数据与运行结果】测试数据: n=120屏幕输出: 120=22235【含有错误的源程序】以下源程序已储存在T 盘 myf1.c 文件内,考生可直接

35、打开该文件测试程序;#include #include int primeint nint i; fori=1;i=n/2;i+if n%i=0return 0;return 1;void funint a, int num, int *countint b50=2,k=1,i=0,j=0,n;forn=3;n50;n+=2/*将 50 以内的质数按值从小到大次序存放到b 数组 */ ifprimen=1 bk+=n;whilenum.=1&j0funa20,n,&count;printf%d=%dn,n,a0; fori=1;icount;i+欢迎下载精品学习资源printf*%d ,ai;

36、else printf%d error,n; getch;return 0;【要求】1. 打开 T 盘中 myfl.c 文件或将上述程序录入到myf1.c 文件中, 依据题目要求及程序中语句之间的规律关系对程序中的错误进行修改;2. 改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其它语句,也不能删去整条语句;3. 改正后的源程序文件名myfl.c 储存在 T 盘的根目录中供阅卷使用,否就不予评分;二、 编程题24 分【程序功能】将已按课程成果升序排列的两个数组中的同学信息合并到另一数组中,结果数组中的同学信息仍按课程成果升序排列;【编程要求】1

37、、定义符号常量 M 为 3、N 为 4;2、定义结构类型如下: struct sudentchar num20,name20;/* 学号、 */float score;/* 课程成果 */3、编写函数 void mergestruct studen a, int ma, struct student b, int mb, struct student c;函数功能: 已知 a 指向的长度为 ma 数组简称 a 数组和 b 指向的长度为 mb 的数组简称 b 数组中数据均已按课程成果升序排列;将a 数组和 b 数组中的数据合并到c 指向的数组简称c 数组中, c数组中的数据仍按课程成果升序排列;

38、4、编写函数 main ;函数功能:声明长度为M 的 a 数组及长度为 N 的 b 数组并用测试数据初始化, 声明适当大小的 c 数组,用 a、M 、b、N 和 c 作实参调用 merge 函数,将结果数组 c 中的同学信息依次输出到屏幕及数据文件myf2.out中;最终将考生本人的准考证号字符串输出到文件myf2.out 中;【测试数据与运行结果】测试数据:a 数组: 2,Li,81,1,Ma,83, 4,Zhao,85b 数组: 7,Zhang,80,3,Guo,84, 5,Wu,86, 6,Ye,88屏幕输出:7Zhang802Li811Ma833 Guo844 Zhao855 Wu86欢迎下载精品学习资源6Ye88【要求】1.源程序文件名为 myf2.c

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com