开发工具:
文件大小: 1mb
下载次数: 0
上传时间: 2019-08-24
详细说明:二级C语言 机考 总结
填空题填空题是计算机等级考试中的难点,占有的分值为30分。做填空题时注意掌握答题技巧。排序时使用的是大于符号。
维数组中的题目类型以及解决的技巧:4、7、26、34、39、40
二维数组的题目,填空的时候一般是填在涵数调用,函数在调用时候写的应该是而为数
组的名字;在定义函数的时候使用的是函数的类型和由m各元素组成一行的指针变量,
假设二维数组的名字是s,那么填写的内容是:(*sM];如果调用的是普通变量则填写的
内容为:intn;
2、二维数组遍历时,使用的是两个循环,使用的是循环的揿套使用,第个循环的仗用的
时候填写的内容为:j0:(特殊的特姝处理)
3、交换两个变量的值的使用的格式为
t-a: a=b: b=t
记住交换变量的格式和顺序
4、如果二维数组是字符串的题目的时候,要记住字符串中函数的使用的格式;即: strIen
strcmp、 strcpy、sieo、 strcat的使用格式。注意里面的格式中使用的都是和指针
、特殊的特殊处理。第7题的填空的内容记住。
二改错题分类总结
改错题总的出错分为两大类:语法出错和逻辑出错,此类题目是比较简单的题型,因此
也是最容易把握的知识点。
注意:错误都是出现在/*****fond*事*/下面的这一行。只是下面的这一行,其
他行都没有错误。不能修改其他行。
做题方法
1.首先拿到题目,先将题目详细看看,看清题目对做题时很有帮助的,特别是一些逻辑性较
强的题目很有用。有的同学可能会觉得题目太难了不想去读,其实在做改错题目时即使你不
会也能把题目做对。
2.按照以下的步骤解决题目中的错误的内谷,对应着修改。修改完之后保存即可。
语法错误
关键字出错:在二级C语言考试中仅仅考査学生对基杺的关键字掌握情况,比如:整型就
是int不是In,知识点简单
(1)6题第二个空:I应该改为i
(2)12题第二个空:I应该改为i;
(3)23题第一空: doune应该改为 double;
(4)35题第二空:If应该改为i;
(5)36题第二空: Double应该改为 double
(6)2题第二空: wihle应该改为whle
2格式出错:在考试中主要考查学生细心的程度,最喜欢考简单的知识点。
(1)少分号:2题第一空、28题第一空、29题第一空、34题第二空、37题第二空、48题
第二空。考查的知识点:分号是语句结束的标志
(2)for语句的格式:for(;;)中间用分号隔开不是用逗号隔开。3题第二空、6题第一空、
14题第二空都是出现了for语句格式出错的问题
(3)I语句的格式:i(表达式),辽后面必须加上小括号。37题第一空讧后面必须加上小括
(4)命令行格式出错:17题第空中 include命令少了#,止确的形式应该是# include
“ stdio. h”
(5)常用函数格式:
A22题第一空中n= strlen aa]应该改为n= strlen(a),记住函数名后面一定是花括号,不
能是方括号,方括号只有在数组下标中用到
B49题第一空intj,c, float xa=0.0;应该改为 lnt 1, c; float xa=0.0;记住:要同时定义两种以
上不同的数据类型的时候必须在不同类型的数据中间加上分号。
C4题第二空 scanf("%d”,a[jj;应该改为scan(%od”,&ajj)。考查 Scanf输入函数
的格式。
(6)数组:所有老师讲到数组时候必须统一将此知识点给学生回顾一遍!
A数组下标引用时候只能用反括号。28题第二空t(k)=b(j应该改为tk]=bj
B二维数组中的列下标不能省略。46题第一空必须将数组列下标衤充完整
(7)常用符号出错
AC语言中大于等于符号是“>”,但是在考试的吋候可能出现将它写为“→”,49题
第二空就是这样的错误。
B当题目中需要比较某个字符是否是大写字母或是小写字母、数字时,必须将“与”
或”、“非”记住
判断某个字符是否是大写字母: char ch: if(ch>=A&&ch<=z) printf(%c”,ch)
判断某个字符是否是小写字母: char ch;fch>='al&&ch<=2z) printf("%oc”,ch);
判断某个字符是否是数字: char ch itch>=0&&hx=9)pin%c”h);
判断某个数字是否能同时被5和7整除
inti=35;if(i%5=0&&1%07—0) printf(%od”,i);
判断某个数字是否能被5或7整除:
int 1=35; if(1%05==0 1%07==0)printf( od, 1)
判断某个数字是否是偶数或奇数:
nti-35;i(i%2-0 printf(%d是一个偶数”,i);
else print.(6d是个奇数”));
逻辑错误
1.使用了没有定义过的变量:这种题目可以通过编译查找出出错的地方并改之
(1)0(零)和o(字母欧)的区别:19题第一空、23题第二空、43题第二空
(2)P(大)和p(小)的区别:33题第一空。
(3)普通变量大小写的区别:
A有的变量在定义的时候是小写但是在使用的时候是大写,或是在定义的时候是大写
在使用的时候却是小写
B大小写没有出错,程序中直接使用了没有定义过的变量,要求学生更加细心的读题
目。45题第二空使用到了i这个变量,但是我们在定义行中没有找到i的定义,因此在做题
时侯要上下结合来分析题目。22题第二空c=a中的c没有定义过,参看定义的语句不能
发现应该是ch-a]。38题第空要求将后面用到的变量sl定义完整。
2运算符号出错:
(1)C语言中除号是“/”不是“\”
(2)赋值号(=)和等号(==)混淆,记住在辽语句中出现赋值号(=)一般是讲它改为
等号(==)。14题第一空和29题第二空都是这样的错误。
3.表达式的取值沱围出错:
当遇到计算表达式的累加或是累减时,一定用到循环来完成相应的操作。例如:改错题
第七题中要求计算t=1-12*2-/3*3-1/m*m这个表达式,在这个题目中第一空有这样的for
语句:for(i-2;i)、小于(<)等符号的变化,当你查
找出错的地方没有语法错误,也没有使用了未定义的变量时,记住这个口诀:将大于改为小
于,将小于改为大于!11题第二空、12题第一空和13题第二空、4题第二空都可以用这样
的方法
6数的返回值及其参数:重点
int fun(int x, int y)
main
f(x>return x:
nt a b c
else return
scanf(%dod”,&a,&b);
n(a, b);
printi(“最人值为:%d”,c);}
(1)函数的返回类型:在上面的例子中imn函数的返回值是int,如果将in改为 double,很
明显是错误的。从两个地方来看,首先 return X;中x的类型必须和fiun函数中的返回值
相同,ⅹ是整型。其次c=fin(a,b)中fun函数将一个返冋值赋值给了变量C,说明函数返
回的值一定是整型。记住:函数调用、函数的返回值和 ruturn中数据类型必须一致!1.1
3.1、16.1、19.2、341、36.1、40.1、48.1都死这样的错误,(注1.1表示第一题第一空)
(2) retur后面的表达式及其类型:19.2、30.,2、39.2
3)函数传递的参数:
int fun (int *x, int *y)
main
ifx>return *X
int a b.c.
eIse return米
scant(d%od”,a,&b);
c=lun(&a, &b:
printi(“:最大值为:%d”,c);}
定注意:传递的是值还是地址。比较上面两个例了大家很容易区别传递的是值还是地址
第一个例子调用函数的时候传递的是值,因此在fun函数的形参中x和y仅仅是普通的变量,
而第二个例子中调用函数的时候传递的是地址,因此在fn函数的形参中x和y就是两个指
针变量。5.1、13.1、17.2、20.1、25.2依据刚刚讲的方法很快就能找出出错点
(4)指针的使用:
fun(int *x,int
x>y)return
else return *y
在比例中fun函数的形参是ⅹ和y,它们的类型是整型的指针,那么在fun函数的函数体中
使用到x和y的值时一定要区分:xy比较的是x和y所存变量地址的大小,*x>*y才是比
较值的大小。如果存在*x=x+y的类似情况一定是错误的,必须要将赋值号的左右两边的类
型变为一致。52、53、20.2、242、35.1、441定特别注意!
7数组
(1)数组下标的初始值:数组下标从零开始,到长度减一结束。考试技巧:当出错行在定
义部分时,先检查该定义语句有没有语法错误,再看定义语句中的变量有没有赋初始值,
最后看变量赋的初始值有没有正确。定义初始值有窍门,遇到累加时,用来存放累加和的
变量般赋值为零,遇到求阶乘时,用来存放阶乘值的变量般赋值为。8.1中的变量k
赋佰为1,但是我们说了数组的下标只能从0开始,因此将1改为0就行了。
(2)普通变量的初始值:依照上面的技巧,我们同样可以将亡延伸到晋通变量中。41.1中
需要将变量的值进行初始化,题目中有这样的要求:“输出主对角线元素之和”,既然这样我
们很肯定初始佰应该为零,接着我们看看是给哪个变量赋值?看 printf(“sm-=%d”,sum);输出
的是sum的值,说明sum就是我们要补充在横线上的变量。10.I也可以用同样的方法来分
(3)数组和字符串长度减一:当使用数组中的元素时,最大值只能到数组长度减一。字符
串以”0作为字符串的结束标志,因此取值最大也只能到字符串长度减·。25.2中输出
printf(od’ai):分析程序知道i在此时就是数组的长度,我们要输出数组中的元素,最大
就只能到a[i-1],因此改为 printf(" %od,aa[i-]);就行了。4.1和38.2中考查的是字符串长度
减一的问题
(4)数组下标往后走:当题目要求将一个数组中的元素直接赋值或是以某种方式复制到另
个数组中时,接受数据的数组中的下标要自增。9.1中s-s[i;将s[中的值复制给sli
联系上下函数段发现i是一个变量被for语句控制,从0开始直到遇到ˆ0’结束。i一直在加
但是j没有变化因此改为S计+=[j即可。类似的题目有:252、26.2、32.1、50.2。
8.特例:
部分题目的解答很特殊,需要根据上下文中的内容来解答题目;例如10.1,在此题目中,定
义了变量t-0;根据下面程序中的循环,s=0.0,首先加的是变量t的值,即s的值是从0.0开
始的,s待到的值是:s-0.0+0.0+1.0/3+…,观察表达式的值,这个少加了第一项1.0的值,
所以变量t的初值不能是0.0,只能是1.0,或者是1
21.2中的这个题目中,衣达式的值是从2/1+3/2+5/3…即表达式的规律是从第·项开始,
以后的每一项的分子是前一项的分子和分母的和,分母为前一项的分子。所以该题目的第二
个空中的内容应该是:c=a;a|=b;b=c;这一条语句中a代表的变量的分子,b代表的是变量
的分母,执行第一个表达式的值,把a的值赋值给变量c,第二个表达式是把分子和分时的
和相加复制给变量a,第三个表达式是把原来a的值和变量b的值相加之后得到的值赋值给
变量b,则变量b得到的值也为分了分母的和,不满足题意,而分丹应该为原来分了的值。
第三表达式的值应该改为:b=c
类似的题目有:33.2、40.2、43.1、47.1、50.1
9.素数11.1、29
掌握求素数的格式
判断个数是否是素数的方法很多,的是只用掌握种即可,首先掌握判断一个素数的方
法
素数的定义:1、是自然数2、只能被1和本身整除,2到本身减一之间的数不能整除该
数
判断m是否为素数的格式
for(1=2;next;第二个空改为:p=p→next
2、不带头结点的链表
带头结点的链表的第一个空的改为:ph;第二个空改为:p=p>next;
上机编程题目的总结
编程题目分类:
(一)、数学题目:5、6、1l、14、34、48、49
编程的题目中,如果是数学题目,编程时用到阶乘或者是奇数项的积,则首先给变量
赋初值为1,不能赋初值为0,同时把变量的类型定义为实型而不是整型。数学题目中结果
都需要返回,如果说函数的类型是void则是通过指针返回,如果不是void,则必须用 return
返回。
如果是表达式中的值为1,则在编写程序时用去1.0而不能用1。C语言中的除法的运
算原则是整数除以整数,结果还是整数。
数组中存储数据时以下标来存储的,在数组中下标从0开始。
解题详解:
6、观察表达式,左边求出的是p的值的一半,所以右边的表达式的值的计算好后应该乘以2
才能得到p的值,观察表达式的右边,右边表达式中有分子、分母以及各表达式的值的和
分了是阶乘、分母是奇数项的积,分了除以分母得到项的值。由此定义三个变量:sl代
表分子,s2代表分母、s3代表各项的和,定义一个舉型变量i,让变量i从1开始。知道循
环的结束
Int
double sl-=1.0,s2-1.0,s3-0.0
for(i-l; sI/52>-eps 1+
S3t=sI/s2.
s2*(2*计+
return 2*s
注意:此题目中要特别注意,循环语句的表达式2的判断条件是s/2>=eps,而不是i<=n,
循环语句的语句的顺寻不能颠倒,即先加之后再计算。
11、此题中要求能正处x,那么x应该为分子,而不是分母,把满足条件的数组放到pp所
指的数组中,即pp数组应用一个整型的变量米做pp下标,数组下标从0开始,所以定义
个整形变量k并且赋初值为0;满足条件的个数通过形参传回
int Lk=0
if(x%i==0&&i92==1)
ppk++F=i
n
备注:此题日中不能把i初佰定义为0,否则程序运行时得不到结果。
14、首先看清题意,题目中要求是小丁形参n,不包括n,能被3与7整除,两者用逻辑与连
接,平方根用平方根的函数sqrt;此题中要求的是自然数的和的平方根,而不是平方根的和,
所以要先把满足条件的数加起来后再开方。定义个整型变量i,让该变量由1直到n-1,用
循环实现,一个整形变量s,让该变量存放的是满足条件的数的和,由于s为全局变量,故
应该赋初值为0;
L
f(i%3—0&&%7=0)
grt(s)
34、观察表达式,表达式的分子为x的n次冥,分母为数字的阶乘,s为表达式的累加和,
定义三个变量s1为分子,s2为分母,s为分子除以分母的和。
float sl=1.0,2=1.0,s=1.0:
for(i=1;i<=n; 1++)
return S
备注:此时s的值不能赋初值为0:如果s得初值为0,此时表达式的值中没有第一项的值。
并且必须用 return返回。
48、该表达式的分子均为1,分母为该项和下一项的积,s为最后表达式的累加和,定义
个整形变量I用于代表某一项的序号,则i1到表达的是下一项的序号
s=0.0;
for(i=l; i<=n; i+t)
s+=1.0/(i*(i+1)
return s
备注
分子为1.0,而不能是1:因为c语言中规定,整型除以整型,得到的值仍然为整型,
i艹丨必须用括号括起来,如果没冇用括号括起来,根据乘法运算规则,则先运算ⅰi
再运算ii+1的值
49、在该表达式中,分子分母都是阶乘,可以看做是三个数之间的运算,其中的每一个数都
是另外一个数的阶乘,定义三个交量,其中s1代表的是m的阶乘,s2代表的n的阶乘,s3
代表的是mn的阶乘,表达式的值可以计算为:s(s2*s3);
个变量都是代表的是阶乘,所以在赋初值时应该赋初值为1或者是1.0;
float sl=1.0,s2-1.0,3=1.0
int 1
for(i=l; 1<=m; 1++)
for(i=1;i<=n;i++)S2*=i;
for(i=1; i<=m-n; 1++)
(二)、把满足条件的数放到数组中4、12、25、35、37
在做该类题目时,看清题目的要求,根基题目的要求解题,若只是把满足条件的删除
或者是保留,则该类题目首先要定义一个整型变量并且赋初值0,根据题目意思把满足条件
的存放到数组中,数组的下标同时加一往后走一个位置,如果是字符串类型的题目,在最
后还要加上字符串的结束符”0;如果是把字母的大小写进行改变,则根据原则:小写改大写,
减32,大写改小写,加32只要涉及到数组的题目,都要定义一个整型变量i访问数组中的
元素
在循环语句中,如果是字符串时,循环的条件是判断字符是否是结束符,而不是i=n;
判断一个字母是否是大写字母s[}=A。&&[]~=z
判断是否是小写字母spi=a&&s<=2
判断一个字符是数字字符s>=0&&s=9;
4、定义一个整型变量i来访问字符数组中的元素。把小写字母改写成大写字母,只用把小
字母的ASCI值减去32即可
int ig
for(=0;s]!=米0i++)
if(%2=1&&sf|>=a&&sil=”)
s]-32
代码中:i代表的是访问数组下标的变量。循环的条件是ss[]!=”0”这事字符串是否结束的
判断条件。从第一个字符开始,一直到遇到结束符为止。当取出一个字符后,对该字符进
行判断,如果该字符满足条件的时候,执行s]-=32;语句,即将小写字母改变成大写字
母。
12、先定义一个整型变量k并且赋初值0,作为数组的下标,一个整型变量i用来访问数组
中的元素的下标
inti.ke0
for(=0;[!=”0’i++)
if((%2=0&&s[i%2=1)
tk++}=s[
备注:近条件中的内容是先将删除的写出来,再前面加上一个!,用来否定,则剩下的就是
要保留的内容。把满足条件的存放到数组t中,t也是一个字符数组,所以要够吃呢个字符
串,必须在后面赋值结束符。
三)、素数20、21
判断一个数是否是素数的方法很多,的是只用掌握一种即可,首先掌握判断一个素数的
方法
素数的定义:1、是自然数2、只能被1和本身整除,2到本身减一之间的数不能整除该
数
判断m是否为素数的格式:
for(i=2; i
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.