ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:23.21KB ,
资源ID:24024411      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/24024411.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(二级c上机.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

二级c上机.docx

1、二级c上机上机考试考点总结注意事项:1.上机:改错18分+编程22 70分钟(占总成绩的40%)一、改错题设错类型: 语法错误,语义错误,算法错误江苏省c语言改错题目有四个错误点。其中两个语法错误,两个逻辑错误。启动Turboc2.0,按F10,选中File-new,首先按照试卷上的格式将改错题目录入到turbo c中,按F10,然后选中compile-compile to obj,如果有Error那么说明有错误,要看错误点是自己输入错误还是本身试题语法的问题。另外不要把时间浪费到改错题目中,如果改几处语法错误后。要转移到编程题目中,首先写出c编程题目中的大框架。c语言改错题目一定要理解题意,

2、把题目中给的参数直接带到程序中去试验一下,题目中给的参数一定要带到函数中,去看每个for或while循环的含义。二、编程题题目类型:以实用性为主我们学习的根本是要操纵计算机,让他给我们做事情。计算机就是一台机器,我们必须按照他理解的方式操纵他。我们实际上学习的就是一个C语言用户手册。在上机中,编写的程序要具有通用性。编写好框架后首先要保存下来。要多读好程序用计算机解决一个具体问题:首先要从具体问题抽象出一个数学模型,然后设计一个解此数学模型的算法,最后编写程序、进行测试、调整直到最终解答。寻找数学模型的实质是分析问题,从中提取操作的对象,并找出这些对象之间含有的关系,然后用数学的语言加以描述。

3、从熟悉基本语法到熟练操作需要有一个时间过程。第一步熟悉常用的语法与函数。第二步做典型题目来强化与理解。c语言编程题目首先要搭大的框架,要不断调试。通过题目看本质(1)程序可读性:主要是为了人的阅读与交流,其次才是计算机的执行,可读性好有助于人对算法的理解,晦涩难懂的程序易于隐藏较多错误难以调试和修改。上机操作改错题目要严格按照题目格式输入,编程题目要首先把main()函数写出来,然后想出一个解决问题的算法。千万别写垃圾代码,要象写诗一样优美。(2)程序是调试出来的:程序不是写出来,是调试出来的,一个程序编写好后,要经过若干次的调试、修改从能从代码变成可用的程序,那种想一次编写就运行结果正确的,

4、还没有人做得到。(3)常用标准库函数: #include 作用:包含所有的输入输出函数如:printf,putchar,scanf,fprint等函数一定要熟练掌握printf、scanf函数与显示格式,上机必考 #include 作用:用getch()函数实现从键盘上读入一个字符,目的是使程序执行完后显示窗口不会立即关闭,可以查看浏览结果。clrscr()用于清除屏幕显示 #include 作用:包含字符串处理函数,例如:strcmp(),strcpy(),strlen(char *str),strcat() #include 作用:包括检查类型函数。例如:isdigit(int ch)判断

5、是否为数字,isalpha(char c)是否是字母 #include 作用:包含对数值处理的函数,例如;sqrt()求平方根,pow(x,y)求xy 在turboc2.0操作,在键盘上有一个特殊的insert键,如果按了这个键后会出现按enter不换行,按空格键会删除其他字符的情况。改错题常见错误:(1) 宏定义出错:#define (2) 传递函数中数组出错 是常见错误(3) 主函数中缺少函数声明(4) 对字符型二维数组赋值用strcpy,而不是用= 常见错误(5) for或do循环结束条件问题(6) 定义二维数组出错本资料对上机考试中编程部分题目划分为6大类,对每种类型的题目进行了分析。

6、1. 对一维数组(排序)和字符串(指针)操作该类型的题目在以往的机试中占有比例较大,约40%,考生应该对该知识点做全面的复习和掌握,一维数组可以分成数值型和字符型,其中数值型数组的数据类型为整型和实型,字符串数组的数据类型为字符型,我们通常会把字符型数组叫做字符串,但是应该注意字符型数组与字符串之间是存在区别的,也就是0结束标识符问题。 在复习该部分时,考生应该注意掌握以下两个问题:(1) 对一维数组的操作对一维数组操作时,不可避免的要访问相关的数组元素,在C语言中访问数组元素一般采用单层循环的方法进行遍历,假设数组长度为n,数组下标是在0到(n-1)之间的,考生应该牢固掌握在一维数组中求最大

7、值、最小值、移动元素、查找特定值(通过具体数值或通过下标)、存储数组元素等的方法。其中一个非常重要的操作一定要重视:两种排序算法,冒泡排序额和选择排序,具体的过程和实现代码要求考生必须掌握。(2) 对字符串的操作(指针) 该类问题是每次考试的重点和难点,特别是将字符串同指针结合起来以后,难度就更大了。考生在解决此类问题时应特别注意字符串的结束标志0,它不仅用来作为字符串的结束标志,而且对字符串进行操作时,它也是循环的结束标志。考生在复习该部分的时候应该注意这样几个基本问题:大小写字母的转换、奇偶数判别、添加或删除指定的字符和字符的移动。此外,考生应该牢固掌握指针的特性及字符串操作函数的使用和实

8、现方法,曾出现过考题要求考生自己编程完成字符串操作函数,特别是字符串连接函数和求子串函数,应当引起足够重视。另外对于指针应该清楚指针的建立、遍历、添加或删除一个结点的操作代码。2. 数值计算该类型的题目在历年的机试中占20%,考查的机率也非常高。该类题目一般给定一个数列计算公式,然后要求考生编写一个函数实现求数列的前n项的值、累加和或积,在解决该类问题时,首先重要的找到给定数列的变化规律,然后其变化规律来编写一个单层或者双层的循环来求相应的值。在编写程序的过程中,往往还会用到一些数学函数,如sqrt()、fabs()、pow()等,考生应该牢固掌握math.h中一些常用的数学函数的用法和使用方

9、法。另外还应注意数据类型之间的区别,特别是float和int类型,不同的数据类型产生的运算结果是不一样的。3. 对结构体的操作这部分对非计算机专业的学生来说是个难点,但以往的机试中,有17%的题目是属于该类型。考生在复习这部分的时候,首先应该注意结构体成员的两种不同的引用方法:结构体变量和指向结构体的指针,也就是结构体成员运算符.和指向运算符-,在编程的过程中,往往会涉及到结构体数组,其实这类数组除了数据类型是结构体外,其他的特性和普通数组是一样的,结构体除了定义、赋值和初始化以外,其他的操作和普通变量也是一样的,包括在结构体数组(记录)中进行查找、删除、求最大最小值等操作,我们应该用对待普通

10、变量的方法来解决结构体的问题,这样的话,难度就大幅度的降低。4. 对二维数组的操作该类问题在历年的机试中占16%,考生应该对二维数组的元素遍历方法、存储方式、矩阵转换等问题做重点掌握。在C语言中,访问二维数组的数组元素一般采用双层循环的方法实现,因为二维数组具有两个下标:行下标和列下标;二维数组可以按行或者按列转化成一维数组进行存储;对二维数组进行行列转换的时候,要将行下标和列下标进行互换。考生还应该掌握上三角矩阵、下三角矩阵的特性,在考试中,矩阵的表达形式经常考到二维数组的坐标转换。5. 数制转换该部分在以往的机试中占11%,包括两类问题:一是整数合并,而是类型转换,例如对一个数的各位进行一

11、系列的变化。在复习该部分时,考生应该注意C语言中int、long、float、double类型数据所占的存储空间大小和精度,注意%(模)运算和/(整除)运算的特点,特别应该灵活的使用模运算与除法运算求数据相应位数上的数值,掌握强制类型转换的方法以及按规定的位数保留小数的方法。6. 素数该部分在历年机试中占6%,考生应该牢固掌握素数的基本概念和判断素数的方法,特别要求考生注意整数1不是素数,所以在判断素数时应该从2开始,到(n-1)结束,能够除尽的不是素数,不能除尽的是素数。判断素数是C语言中的一个基本算法,不仅会在程序填空和程序改错中也会有所涉及,应该重点复习。 上机改错题常见错误1. 书写标

12、识符时,忽略了大小写字母的区别。main() int a=5; Printf(“%d”,A);2. 忽略了变量的类型,进行了不合法的运算。main() float a,b; printf(“%d”,a%b);3. 将字符常量与字符串常量混淆。char c;c=“a”;4. 忽略了“=”与“=”的区别。 if(a=3) if(a=3)5. 忘记加分号。a=1 b=16. 多加分号。 z=x+y; t=z/100; printf(“%f”,t);int a10;for(i=0;i10;i+);s+=ai;7. 输入变量时忘记加地址运算符“&”。int a,b;scanf(“%d%d”,a,b);8

13、. 输入数据的方式与要求不符。scanf(“%d%d”,&a,&b);输入3,49. 输入字符的格式与要求不一致。在用%c格式输入字符时,空格字符和转义字符都将作为有效字符输入scanf(“%c%c%c”,&c1,&c2,&c3); 输入a b c10. 输入输出的数据类型与所用格式说明符不一致。int a=3; float b=4.5;printf(“%f%d”,a,b);11. 输入数据时,企图规定精度。scanf(“%7.2f”,&a);12. switch语句中漏写break语句。switch(grade)caseA: printf(“85100n”);caseB: printf(“7

14、084n”);caseC: printf(“6069n”);caseD: printf(“60n”);default : printf(“errorn”); 13. 定义数组时误用变量int n;scanf(“%d”,&n);int an; 14. 在定义数组时,将定义的“元素个数”误认为是可使的最大下标值int a10=1,2,3,4,5,6,7,8,9,10;printf(“%d”,a10);15. 在不该加地址运算符&的未知加了地址运算符。scanf(“%s”,&str); 一、改错题 【程序功能】 函数HolandFlag的功能是:已知在flag指向的有n个元素的字符数组中,每个元素的

15、值是字符R、W或B中的一个。函数按照R、W、B的顺序重新排列flag数组中所有元素的值。 算法提示: 若flag数组初始值为RBWBRWRBW,则在flag数组中出现数据交换的步骤与效果为: 第1步:flag1与flag8交换后数据为RWWBRWRBB 第2步:flag3与flag6交换后数据为RWWRRWBBB 第3步:flag1与flag4交换后数据为RRWRWWBBB 第4步:flag2与flag3交换后数据为RRRWWWBBB 【测试数据与运行结果】 测试数据:RBWBRWRBW 运行结果:RRRWWWBBB 【含有错误的源程序】 #include #include #define 1

16、0 N void HolandFlag(char flag,int num) int i,j,k,m; char c,color3=B,W,R; m=num; for(k=0;k2;k+) for(i=0;ii;j-) if(flagj=colork) c=flagi; flagi=flagj; flagj=c; m-; break; if(i=j) m=i; void main() char flagN=RBWBRWRBW; int i,k,n=strlen(flag); HolandFlag(flagN,n); for(i=0;in;i+) printf(%c,flagi); 【要求】 将

17、上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。 改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或者编译预处理命令,但不能增加其他语句,也不能删去整条语句。 将改正后的源程序myf1.c保存在考试盘的根目录下,供阅卷用,否则不予评分。答案:#define N 10 /#define 10 Nchar c,color3=B,W,R; /char c,color3=B,W,R;if(flagj!=colork) /if(flagj=colork)HolandFlag(flag,n); /HolandFlag(flagN,n);2

18、.【程序功能】 根据转换说明字符的含义将以某一进制表示的数字字符串转换为一个整型数。转换说明字符与数字字符串中数字的进制表示规定如下:d表示十进制;o(小写字母)表示八进制;x(小写字母)表示十六进制。 在函数void convert(char y,char type,int *x)被调用时,type中存储转换说明字符,y指向的数组中存储一个以某一进制表示的数字字符串,x指向的变量中存储转换后的整型数。若y字符串中出现与type规定的进制不相符合的非法字符时,只取非法字符之前的字符作转换。 主函数接收并保存键盘输入的一个转换说明字符和一个以某种进制表示的数字字符串,调用convert函数根据转

19、换说明字符将数字字符串转换为整型数,输出转换后的整型数。【测试数据与运行结果】 输入d 31时应输出31,输入d -31时应输出 -31. 输入o 37时应输出31,输入o -37时应输出 -31,输入o 378时应输出 31. 输入x 1f时应输出31,输入x -1f时应输出 -31,输入x 1fg时应输出31.【含有错误的源程序】#include #include #include void convert(char y,char type,int *x) int i=0,flag,base,xx,sign; if(yi=-) sign=-1; i+; else sign=1; xx=0;

20、 flag=1; for(;yi!=0&flag;i+) switch() case d:if(isdigit(yi) xx=xx*10+yi-0; else flag=0; break; case o:if(yi=0&yi=a&yi=f) xx=xx*16+yi+a-10; else flag=0; x=sign*xx;void main() int number; char t,str7=0; puts(input conversion type and number string:); scanf(%c%s,&t,str); number=convert(str,t); printf(%

21、d,number); getch();【要求】 将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。 改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或者编译预处理命令,但不能增加其他语句,也不能删去整条语句。 将改正后的源程序myf1.c保存在考试盘的根目录下,供阅卷用,否则不予评分。改错:switch(type)/switch()xx=xx*16+yi-a+10;/xx=xx*16+yi+a-10;*x=sign*xx;/x=sign*xx;convert(str,t,&number);/number=convert(str

22、,t);3.【程序功能】 函数void yanghui(int yN,int xN,int n)生成n行杨辉三角形数据构成的矩阵,并将其存放到y指向的二维数组中,再将y数组中的矩阵顺时针旋转90度后存储到x指向的二维数组中。主函数中分别输出n行杨辉三角形及顺时针旋转90度后的n行杨辉三角形。【测试数据与运行结果】 n=4时应输出 1 1 1 1 2 1 1 3 3 1 1 1 1 1 3 2 1 3 1 1【含有错误的源程序】#include #include #define N=10void yanghui(int yN,int xN,int n);void main() static in

23、t i,j,n,aNN,bNN; printf(input n (n%d):,N); scanf(%d,&n); yanghui(a,b,n); for(i=0;in;i+) for(j=0;j=i;j+) printf(%3d,aij); printf(n); printf(n); for(i=0;in;i+) for(j=0;jn-i;j+) printf(%3d,bij); printf(n); getch();void yanghui(int yN,xN,n) int i,j; y00=1; for(i=1;in;i+) yi0=yii=1; for(j=1;ji;j+) yij=yi

24、-1j+1+yi-1j; for(i=0;in;i+) for(j=0;ji;j+) xij=yn-1-ji;【要求】 将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。 改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或者编译预处理命令,但不能增加其他语句,也不能删去整条语句。 将改正后的源程序myf1.c保存在考试盘的根目录下,供阅卷用,否则不予评分。改错:#define N 10/#define N=10void yanghui(int yN,int xN,int n)/void yanghui(int yN,xN,n)

25、yij=yi-1j-1+yi-1j;/yij=yi-1j+1+yi-1j;for(j=0;jn-i;j+)/for(j=0;ji;j+)4.【程序功能】 查找并输出同时出现的两个一维数组中的整数,每个一维数组中的元素均已按值升序排列,并且每个数组中的元素没有相同的值。 函数int coincidence_count(int a,int b,int m,int n,int c)按上述要求在a指向的数组前m个元素和b指向的数组前n个元素中查找,将找到的整数保存到c指向的数组中。【测试数据与运行结果】 测试数据: a数组中的数据:1,2,4,8,10,12,13,14,16,18 b数组中的数据:3

26、,4,7,8, 9,10,12,13,16,19 运行结果: No. Array 1 Array 2 0 1 3 1 2 4 2 4 7 3 8 8 4 10 9 5 12 10 6 13 12 7 14 13 8 16 16 9 18 19【含有错误的源程序】#include #include int coincidence_count(int a,int b,int m,int n,int c) int count,ia,ib; count=ia=ib=0; while(iam|ibn) if(aiabib) ib+; else ccount=aia; ia+; ib+; return c

27、ount;void main() int a=1,2,4,8,10,12,13,14,16,18,b=3,4,7,8,9,10,12,13,16,19; int c10,i,na,nb,n; na=sizeof(a)/sizeof(int); nb=sizeof(b)/sizeof(int); printf(n Coincidence Count of two Increasing Arraysn); printf(n No. Array 1 Array 2); for(i=0;ina;i+) printf(n%3f%10f%10f,i,ai,bi); printf(n There are %d equal numbers:,n=coincidence_count(a,b,na,nb,c); for(i=0;in;i+) printf(%5d,ci); getch();【要求】 将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。 改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或者编译预处理命令,但不能增加其他语句,也不能删去整条语句。 将改正后的源程序myf1.c保存在考试盘的根目录下,供阅卷用,否则不予评分。改错:whil

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1