全国计算机等级考试二级C语言上机答题技巧20960.pdf

上传人:得****3 文档编号:83565723 上传时间:2023-03-31 格式:PDF 页数:14 大小:245.17KB
返回 下载 相关 举报
全国计算机等级考试二级C语言上机答题技巧20960.pdf_第1页
第1页 / 共14页
全国计算机等级考试二级C语言上机答题技巧20960.pdf_第2页
第2页 / 共14页
点击查看更多>>
资源描述

《全国计算机等级考试二级C语言上机答题技巧20960.pdf》由会员分享,可在线阅读,更多相关《全国计算机等级考试二级C语言上机答题技巧20960.pdf(14页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、上机编程题答题技巧 上机编程题的特点和说明 一、在二级 C 程序设计上机考试中,要求完成一个独立的函数的编程。目前教育部考试中心已出版了上机考试习题集,这些有助于学习编程,但考生应当在学习过程中理解基本的算法,通过实际上机操作积累经验,才能掌握基本的编程能力。二、进行编程测试时,建议按以下步骤进行 1 首先仔细审题,了解试题的要求,记下试题给出的输入和输出例示,以便检验在完成指定的函数后程序运行的结果是否正确。2 当在 Visual C+6.0环境下调出源程序后,应对照函数首部的形参,审视主函数中调用函数时的实参内容,以便明确在函数中需要处理的数据对象。3 理解试题的要求,审视主函数中调用函数

2、的方式,若在表达式中调用函数(如把函数值赋给某个对象),则要求有函数值返回,需注意函数的类型,并在函数中用 return语句返回函数值;若主函数中仅用语句形式调用函数,则需要通过形参间接地返回所得结果。4 选择适当的算法进行编程,输入程序语句。不要忘记及时存盘!5 编译程序,直到没有语法错误。6 调试程序,利用试题中给出的例示数据进行输入(若要求输入的话),运行程序,用例示的输出数据检验输出结果,直到结果相同。三、编程时常出现的错误 1.书写标识符时,忽略了大小写字母的区别。main()int a=5;printf(%d,A);编译程序把 a 和 A 认为是两个不同的变量名,而显示出错信息。C

3、 认为大写字母和小写字母是两个不同的字符。习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。2.忽略了变量的类型,进行了不合法的运算。main()float a,b;printf(%d,a%b);%是求余运算,得到 a/b的整余数。整型变量 a 和 b 可以进行求余运算,而实型变量则不允许进行“求余”运算。3.将字符常量与字符串常量混淆。char c;c=a;在这里就混淆了字符常量与字符串常量,字符常量是由一对单引号括起来的单个字符,字符串常量是一对双引号括起来的字符序列。C 规定以“”作字符串结束标志,它是由系统自动加上的,所以字符串“a”实际上包含两个字符:a和,而把它赋给一个字符

4、变量是不行的。4.忽略了“=”与“=”的区别。在许多高级语言中,用“=”符号作为关系运算符“等于”。如在 BASIC程序中可以写 if(a=3)then 但 C 语言中,“=”是赋值运算符,“=”是关系运算符。如:if(a=3)a=b;前者是进行比较,a 是否和 3 相等,后者表示如果 a 和3 相等,把 b 值赋给 a。由于习惯问题,初学者往往会犯这样的错误。5.忘记加分号。分号是 C 语句中不可缺少的一部分,语句末尾必须有分号。a=1 b=2 编译时,编译程序在“a=1”后面没发现分号,就把下一行“b=2”也作为上一行语句的一部分,这就会出现语法错误。改错时,有时在被指出有错的一行中未发现

5、错误,就需要看一下上一行是否漏掉了分号。z=x y;t=z/100;printf(%f,t);对于复合语句来说,最后一个语句中最后的分号不能忽略不写。6.多加分号。对于一个复合语句,如:z=x y;t=z/100;printf(%f,t);复合语句的花括号后不应再加分号,否则将会画蛇添足。又如:if(a%3=0);I;本是如果 3 整除 a,则 I 加 1。但由于 if(a%3=0)后多加了分号,则 if 语句到此结束,程序将执行 I 语句,不论3 是否整除 a,I 都将自动加 1。再如:for(I=0;I5;I);scanf(%d,&x);printf(%d,x);本意是先后输入 5 个数,

6、每输入一个数后再将它输出。由于 for()后多加了一个分号,使循环体变为空语句,此时只能输入一个数并输出它。7.输入变量时忘记加地址运算符“&”。int a,b;scanf(%d%d,a,b);这是不合法的。Scanf函数的作用是:按照 a、b 在内存的地址将 a、b 的值存进去。“&a”指 a 在内存中的地址。8.输入数据的方式与要求不符。scanf(%d%d,&a,&b);输入时,不能用逗号作两个数据间的分隔符,如下面输入不合法:3,4 输入数据时,在两个数据之间以一个或多个空格间隔,也可用回车键,跳格键 tab。scanf(%d,%d,&a,&b);C 规定:如果在“格式控制”字符串中除

7、了格式说明以外还有其它字符,则在输入数据时应输入与这些字符相同的字符。下面输入是合法的:3,4 此时不用逗号而用空格或其它字符是不对的。3 4 3:4 又如:scanf(a=%d,b=%d,&a,&b);输入应如以下形式:a=3,b=4 9.输入字符的格式与要求不一致。在用“%c”格式输入字符时,“空格字符”和“转义字符”都作为有效字符输入。scanf(%c%c%c,&c1,&c2,&c3);如输入 a b c 字符“a”送给 c1,字符“”送给 c2,字符“b”送给c3,因为%c 只要求读入一个字符,后面不需要用空格作为两个字符的间隔。10.输入输出的数据类型与所用格式说明符不一致。例如,a

8、 已定义为整型,b 定义为实型 a=3;b=4.5;printf(%2.1f%dn,a,b);编译时不给出出错信息,但运行结果将与原意不符。这种错误尤其需要注意。11.输入数据时,企图规定精度。scanf(%7.2f,&a);这样做是不合法的,输入数据时不能规定精度。12.switch语句中漏写 break语句。例如:根据考试成绩的等级打印出百分制数段。switch(grade)case A:printf(85100n);case B:printf(7084n);case C:printf(6069n);break;case D:printf(60);default:printf(error)

9、;由于漏写了 break语句,case只起标号的作用,而不起判断作用。因此,当 grade值为 A 时,printf函数在执行完第一个语句后接着执行第二、三、四、五个 printf函数语句。正确写法应在每个分支后再加上“break;”。例如 case A:printf(85100);break;13.在定义数组时,将定义的“元素个数”误认为是可使的最大下标值。main()static int a10=1,2,3,4,5,6,7,8,9,10;printf(%d,a10);C 语言规定:定义时用 a10,表示 a 数组有 10 个元素。其下标值由 0 开始,所以数组元素 a10是不存在的。14.

10、在不应加地址运算符&的位置加了地址运算符。scanf(%s,&str);C 语言编译系统对数组名的处理是:数组名代表该数组的起始地址,且 scanf函数中的输入项是字符数组名,不必要再加地址符&。应改为:scanf(%s,str);四、常用的算法,需花时间识记!1、编一个函数 fun(char*s),函数的功能是把字符串中的内容逆置。例子如:字符串中原有的内容为:abcdefg,则调用该函数后,串中的内容为:gfedcba fun(char*s)int i=0,t,n=strlen(s);for(;in/2;i+)t=si;si=sn-1-i;sn-1-i=t;注:该题的算法是先分别找出字符串

11、的两头,然后同时逐一往中间移动,每移动一次 都进行两字符的位置对换,直到中间字符(用 si,因此要注意把它的内容取出再进行换位。即先进行取内容运算)2、请编写函数 fun,对长度为 7 个字符的字符串,除首、尾字符外,将其余 5 个字符按降序排列。例如,原来的字符串为 CEAedca,排序后输出为 CedcEAa。int fun(char*s,int num)int i,j,t;for(i=1;inum-1;i+)for(j=i;jnum-1;j+)if(si=2)位的整数,函数求出 w 的后 n-1位的数作为函数值返回。例如:w 值为 5923,则函数返回 923;w 值为 923则函数返回

12、 23。unsigned fun(unsigned w)if(w=10000)return w%10000;if(w=1000)return w%1000;if(w=100)return w%100;if(w=10)return w%10;注:由于 unsigned型整数在 0-65535这间,只要它大于 10000则对 10000求余即得出后面 4 位,否则如果大于1000则对 1000求余得出后 3 位数,这样一层一层往小的判断。由于 return的作用除了返回值以外,还有当执行到return时就跳出该程序,所以可以连续的用 if()语句。4、请编一函数 void fun(int ttMN

13、,int ppN),tt 指向一个 M 行 N 列的二维数组,求出二维数组每行中最小元素,并依次放入 pp 所指一维数组中,二维数组中的数已在主函数中赋予。#define M 3#define N 4 void fun(int ttMN,int ppN)int i,j;for(i=0;iM;i+)ppi=tti0;for(j=0;jN;j+)if(ttijppi)ppi=ttij 5、请编一个函数 fun,其中 n 数组中元素的个数。函数的功能是:删除所有值为 y 的元素。数组元素中的值和 y的值由主函数通过健盘读入。试题程序。1 2 3 4 5 6 6 5 1 2 3 4 6 0 void

14、fun(int bb,int n,int y)int i,j=0;for(i=0;in;i+)if(bbi!=y)bbj+=bbi;bbj=0;6、请编写一个函数 int fun(int x),它的功能是:判断整数 x 是否是同构数。若是同构数,函数返回 1;否则返回 0。所谓“同构数”是指这样的数,它出现在它的平方数的右边。例如:输入整数 5,5 的平方数是 25,5 是 25 中右侧的数,所以 5 是同构数。x 的值由主函数从健盘读入,要求不大于 100。int fun(int x)int xx=x*x;if(xx%10=x|xx%100=x|xx%1000=x)return 1;else

15、 return 0;7、请编写函数 fun,它的功能是:求出 ss 所指字符串中指定字符的个数,并返回此值。例如:若输入字符串:123412132,输入字符为:1,则输出:3。int fun(char*ss,char c)int num=0;while(*ss!=0)if(*ss=c)num+;ss+;return num;8、请编写函数 fun,它的功能是:求出 1 到 1000之内能被 7 或 11 整除、但不能同时被 7 和 11 整除的所有整数,并将它们放在 a 所指的数组中,通过 n 返回这些数的个数。int fun(int*a,int n)int i,m=0;for(i=1;i1000;i+)if(i%7=0)|(i%11=0)&!(i%7=0)&(i%11=0)am+=i;n=m;return n;10、要求程序的功能是:把 20 个随机数存入一个数组,然后输出该数组中的最小值。确定最小值的下标并返回,请给出该函数的定义。试题程序。int fun(int list,int size)int i,j=0;for(i=1;ilisti)j=i;return j;/*注:该题的算法是用一个变量 j 来存储最小值元素的下标,在循环过程中让每个元素都与原最小值元素进行大小比较。=

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

当前位置:首页 > 应用文书 > 工作报告

本站为文档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