一、C语言基础:
对于完全不懂C语言的考生,先需要学习C语言基础。
1. 仔细阅读知识兔专属教材。
在阅读教材时,结合知识兔视频课堂,认真的读懂每个知识点。其中第2、3、4、5、6、7、8、9、11、13章是重点,应当稍微放慢速度。必要时做笔记。
2. 练习课后习题 。
每章知识点学习后,练习教材提供习题。做题时不要着急看答案,先自己做,再结合提供的答案和解析,分析自己对知识点的掌握是否牢固。高手课专注帮你学习,高手课承包了你大学时光职业生涯所需要的学习资料、考试资料、课程教程、培训网课、素材模板、软件下载、电子书等等。卫星公主号“超乎想象”领取全套考试资料。
3. 敲代码。
也可以理解为抄代码,抄写书上例题。自己敲进去(不要复制代码),保存、编译、运行。编译、执行、输出都跟书上一致才算学完了一个例子。如果不一致,要仔细找原因。在抄的过程中,熟悉c语言语法,通过抄写代码培养自己对这门语言的感性认识。
4. 编代码。
为了更好得掌握C语言语法、语句、逻辑和规律,我们需要独立编写程序。如果说第3步是增加感性的理解,第4步就是增加理性的认识。在编写程序时,记得在代码上适当注释,以便以后复习时,能理解当时的思路。高手课专注帮你学习,高手课承包了你大学时光职业生涯所需要的学习资料、考试资料、课程教程、培训网课、素材模板、软件下载、电子书等等。卫星公主号【超乎想象】领取全套考试资料。
5.代码的规范。
编写代码时注意代码的规范,规范的格式是入门的基础。真正的商业程序绝对是规范的,张三写的程序和李四的程序格式大致相同,各种标识符的命名规则一样,否则谁也看不懂你写的程序。如果写出来的代码谁也看不懂,那就是垃圾。这样的程序不如不要,还不如重新写过,这样,思路会更清楚一点。
二、选择题特点:
选择题共40分,其中公共基础知识10分;C语言基础知识30分。
1. 二级公共基础知识:专业性强且相对独立,考核重点为数据结构与算法、数据库设计基础,其中涉及到的难点是进制之间的转换(一般为2进制与10进制之间的转换)以及关系代数运算,这部分要灵活掌握。
2. C语言基础知识:选择题几乎涉及了所有C语言考点,从第1章到第13章几乎都可能涉及。需要掌握C语言基础知识。
三、操作题特点
操作题共60分,其中程序填空题18分,程序修改题 18分,程序设计题24分。
Ⅰ、程序填空题
一、程序填空题答题技巧
1. 程序填空题占18分,一般有3个空需要填写;
2. 填空题做题之前必须弄清题目含义,抓住关键字,例如:要求对数组进行从小到大排序, 则将会出现大于符号,如果是从大到小排序则出现小于符号;
3. 填空题中出现频率最高的就是函数的调用、函数的首部、函数的返回值等和函数相关的问题,因此必须牢牢掌握函数的基本特征;
4. 填空题中有的“空”比较难,考生除了掌握必须的C语言知识之外,还需要很好的逻辑思路,如果一个空将花很多时间来解决,那么建议使用“死记硬背”的方法来缩短复习时间;(不建议所有题死记答案)
5. 上机考试题库中100多题,有部分题目是重复的或是相似的题目很多,同学们要使用比对的方法尽量去理解;
6. 多练习,多思考,多总结。高手课专注帮你学习,高手课承包了你大学时光职业生涯所需要的学习资料、考试资料、课程教程、培训网课、素材模板、软件下载、电子书等等。
二、填空题的分类
1.数学题目
(1)如果在函数中定义变量,但是没有定义成静态存储变量,即变量前面没有static,应给变量赋初值,如果以后用到的是加减运算,则赋初0或值者为是0.0;如果以后用到的是乘除运算,则赋值为1或者是1.0;
(2)循环条件的填空,分析表达式的规律,看表达式中的最后一项的值是否到了第m项或者是第n项,如果到了第m或者第n项,则在循环中的第二个表达式中用到的是i<=m或者是i<=n;
(3)循环条件中如果用的是while语句,则循环变量的初值应该在while的外面定义和赋初值,在循环语句中必须给变量自加或者是自减。如果没有则一般填的是i++;
(4)看表达式中的每一项运算规则,按照运算规则把每一项中的n值替换为i,特殊情况例外。如果是表达式中用到的是间隔相加减的运算时,注意给中间变量赋初值为1或者是1.0;在后面的运算中给变量乘以一个-1,以改变中间变量的符号。高手课专注帮你学习,高手课承包了你大学时光职业生涯所需要的学习资料、考试资料、课程教程、培训网课、素材模板、软件下载、电子书等等。
2. 字符串题目
(1)循环的条件是判断该字符是否和结束符相等,如果相等,说明该字符串结束,否则说明没有结束,继续循环。
(2)把一个数字字符转变成对应的数值的格式是:ch=ch-‘0’;
把大写字母转变为小写字母的格式:ch=ch+32
把小写字母转变为大写字母的格式为:ch=ch-32
(3)区分好字符数组中的指针和指针所指的值的关系。在循环语句中,当指针往后走一个位置的时候,用的是指针的自加,而不是指针所指的值的自加。高手课专注帮你学习,高手课承包了你大学时光职业生涯所需要的学习资料、考试资料、课程教程、培训网课、素材模板、软件下载、电子书等等。
(4)掌握字符数组中函数的使用格式。即:strlen、strcmp、strcpy、sizeof、strcat等函数。
(5)字符数组结束时都有一个结束符:’\0’;在字符数组中的题目中的结束后要加上一个结束符。
3.结构体题目
(1)看清题目的意思。
(2)定义结构体变量时的格式。
(3)注意结构体中成员的调用格式。结构体中的成员分为多种类型,调用结构体成员,使用的是“.”或者是“—>”运算符。
(4)如果返回的是结构体的话,函数的返回类型必须是结构体类型。调用函数的格式中,调用的若是结构体数组,则只用写结构体数组名。
4.函数题目(重点)
(1)看函数的返回类型,函数的返回类型必须和return语句返回的表达式的类型一致。
(2)函数的调用的情况,函数调用时只用写函数的名称,以及函数的参数。
(3)函数指针的调用格式,类型名(*f)();
(4)函数参数传递时的调用格式,如果函数传递的是二维数组,则在函数的传递过程中形式参数使用的是由m个元素组成一行的指针变量。
5. 链表题目
链表题目的步骤(参考):
(1)首先看清楚题目要求和意思。看清楚链表有没有带头结点,如果带有头结点,第一空填的内容是p=h->next;如果是不带有头结点,则第一个空填写的是p=h;
(2)如果第二个空是在循环语句while的括号内,里面的内容填写的是p或者是q,以最近出现的为主;如果是在循环语句内,填写的是q=p->next
(3)如果是排序的时候,从小到大的时候是大于号,从大到小的时候是小于号。高手课专注帮你学习,高手课承包了你大学时光职业生涯所需要的学习资料、考试资料、课程教程、培训网课、素材模板、软件下载、电子书等等。
6.文件类型的填空(重点,绝对重点!)
(1)文件类型的题目,看清楚题目意思,定义一个文件的指针,第一个位置出现fp的时候要填FILE*;并且是大写!
(2)掌握文件中fopen、fprintf、fscanf、fputs、fputc、fgets、fgetc、fseek、fwrite、fread、rewind函数的使用格式。
(3)文件打开之后要注意关闭文件,关闭文件的函数fclose(文件指针);
(4)在循环语句中如果使用到的是while(!feof()),填写的一般是文件指针,表明判断的是文件指针是否已经指到了文件的末尾。
备注:如果文件指针指到了文件的末尾,则feof返回的是非零值,如果没有指在文件的末尾,返回的是0值。
7.数组题目(重点)
数组填空题在C语言考试中出现的频率很高,数组分为一维数组和二维数组。一维数组较二维数组来说简单一些。
一维数组中的题目类型:
(1)求一个数值数组中,所有值的平均值和把大于或者小于平均值的数复制到另外一个数组中。在计算机平均值时,首先定义一个变量来存放平均分,平均分一般用av变量来代替,如果av已经定义但是没有赋初值,那么这个空填写的内容的为:av=0;
(2)求算平均值值时有两种方法:
第一种方法:算出总的分数,再除以总的个数即可,如算1到6之间的数的平均值,首先算出1到6的和,其次用和除以个数6,即可以得到平均值;
第二种方法:用每一个数除以6再把所有的和加起来。即1/6+2/6+3/6+4/6+5/6+6/6;所以在执行的一维数组中算平均值时存在这种情况:如果在for语句的后面有av =av/N;
则第二个空一般的填写时av+=s[i];如果说没有av=av/N;则填写的是:av+=s[i]/N;
(3)对数组进行排序时:如果是从大到小的排序的时候,用的是小于符号,如果是从小到大排序时使用的是大于符号。高手课专注帮你学习,高手课承包了你大学时光职业生涯所需要的学习资料、考试资料、课程教程、培训网课、素材模板、软件下载、电子书等等。
二维数组中的题目类型:
(1)二维数组的题目,填空的时候一般是填在函数调用。函数在调用时,填空一般为数组的名字;
(2)二维数组遍历时,使用循环的嵌套
(3)交换两个变量的值的使用的格式为:t=a;a=b;b=t; 记住交换变量的格式和顺序。
(4) 如果二维数组是字符串题目时,要记住字符串中函数的使用的格式;即:strlen、strcmp 、strcopy 、sizeof 、strcat 的使用格式。
Ⅱ、程序修改题
一、程序修改题解题技巧
1. 程序修改题占18分,一般有3个地方有错误,题型简单
2. /***************found***************/称为错误栏,每道题的错误处就在这个错误栏的下面。
3. 做改错题时先看出错的地方,分析语法错误,如果能用C语言的语法判断出错误,改之即可
4. 没有语法错误即分析逻辑错误,逻辑错误可以从几个方面分析:
(1) 从题目的要求中找到错误,例如:题目要求计算s=1+1/2+1/3+,……,+1/n,那么循环的范围就应该是for(i=0;i<=n;i++),但是考试中经常将其写为:for(i=0;i
(2) 根据题目中的关键字改错,例如:题目中要求从小到大排序,则“从小到大”就是关键字
(3) 重点注意函数的调用、函数的返回值类型,函数的形参,这个是上机考试中的重点
(4) 注意细节,请参考以下为考生总结的知识
5.多练习,多思考,多总结
二、程序修改题总结
1.关键字出错
指的是C语言中的关键字出错。C语言的关键字都是小写字母,并且在VC++6.0中以蓝色字体显示,如果常见的关键字是黑色字体,可以断定关键字出错;
例如:If(substr[k+1]=='\0')
2.格式出错
(1)C语言中的语句、基本结构、函数等都有相应的规范格式,程序中将这些格式书写错误,将导致编译器无法识别程序,因此导致出错;
(2)语句末尾少分号
(3)for结构格式出错
for结构的格式:for(表达式1;表达式2;表达式3){ 循环体语句},for结构体中表达式必须以分号隔开,改错题中经常出现将for结构中分号错写为逗号的情况;
(4)if结构格式出错
if结构的格式:if(表达式),if后面必须加上小括号。
(5) 数组格式出错
一维数组的定义形式:类型名 数组名[常量表达式],谨记[]是数组的独有特征
(6) 函数格式出错
记住函数名后面一定是小括号,不能是方括号,方括号只有在数组下标中用到
(7) 命令行格式错误
#include “stdio.h”,include和define前面都必须有#
3. 使用了未定义的变量:变量必须先定义后执行
(1) 0(零)和o(字母欧)的区别
区别:零像鸡蛋,字母欧像乒乓球
(2) P(大)和p(小)的区别
区别:一般在定义时候p为小写,但是在使用的时候变为大写P,做题时候一定要细心。
(3) 普通变量大小写的区别
定义时候和使用时候变量的大小写不一致,违背了变量必须“先定义后执行”的原则。
三、 改错题之逻辑错误
1. 运算符号出错:
(1) C语言中除号是“/”不是“\”
(2) 赋值号(=)和等号(= =)混淆
记住在if语句中出现赋值号(=)一般是讲它改为等号(= =)。
2. 表达式的取值范围出错
当遇到计算表达式的累加或是累减时,一定用到循环来完成相应的操作。
3. C语言中的除法运算
这个考点同样考查表达式的相关知识。
记住:1/2的值为零,只有1.0/2或是1.0/2.0的值为0.5。
4. 找最大值和排序问题
遇到这种题目在改错题中最容易考查的是大于(>)、小于(<)等符号的变化,当你查找出错的地方没有语法错误,也没有使用了未定义的变量时,记住这个口诀:将大于改为小于,将小于改为大于!
5. 函数的返回值及其参数:重点
int fun(int x,int y)
{
if(x>y)return x;
else return y;
}
main()
{
int a,b,c;
scanf(“%d%d”,&a,&b);
c=fun(a,b);
printf(“最大值为:%d”,c);
}
(1) 函数的返回类型:
在上面的例子中fun函数的返回值是int,如果将int改为double,很明显是错误的。 从两个地方来看,首先return x;中x的类型必须和fun函数中的返回值相同,x是整型。其次c=fun(a,b);中fun函数将一个返回值赋值给了变量c,说明函数返回的值一定是整型。 记住:函数调用、函数的返回值和return中数据类型必须一致!高手课专注帮你学习,高手课承包了你大学时光职业生涯所需要的学习资料、考试资料、课程教程、培训网课、素材模板、软件下载、电子书等等。
(2) 函数传递的参数:
int fun(int *x,int *y)
{
if(*x>*y)return *x;
else return *y;
}
main()
{
int a,b,c;
scanf(“%d%d”,&a,&b);
c=fun(&a,&b);
printf(“最大值为:%d”,c);
}
一定注意:传递的是值还是地址。比较上面两个例子大家很容易区别传递的是值还是地址,第一个例子调用函数的时候传递的是值,因此在fun函数的形参中x和y仅仅是普通的变量,而第二个例子中调用函数的时候传递的是地址,因此在fun函数的形参中x和y就是两个指针变量。
(3) 指针的使用:
int fun(int *x,int *y)
{
if(*x>*y)return *x;
else return *y;
}
在此例中fun函数的形参是x和y,它们的类型是整型的指针,那么在fun函数的函数体中使用到x和y的值时一定要区分:x>y比较的是x和y所存变量地址的大小,*x>*y才是比较值的大小。如果存在*x=x+y;的类似情况一定是错误的,必须要将赋值号的左右两边的类型变 为一致。
6. 数组
(1)数组下标的初始值:数组下标从零开始,到长度减1结束。
考试技巧:当出错行在定义部分时,先检查该定义语句有没有语法错误,再看定义语句中的变量有没有赋初始值,最后看变量赋的初始值有没有正确。定义初始值有窍门,遇到累加时,用来存放累加和的变量一般赋值为零,遇到求阶乘时,用来存放阶乘值的变量一般赋值为1。
(2) 普通变量的初始值:
依照上面的技巧,我们同样可以将它延伸到普通变量中。
(3) 数组和字符串长度减1:
当使用数组中的元素时,最大值只能到数组长度减1。字符串以’\0’作为字符串的结束标志,因此取值最大也只能到字符串长度减1。
(4) 数组下标往后走
当题目要求将一个数组中的元素直接赋值或是以某种方式复制到另一个数组中时,接受数据的数组中的下标要自增。
7. 素数
(1) 判断一个数是否是素数的方法很多,掌握一种即可,首先掌握判断一个素数的方法;
(2) 素数的定义:是自然数;只能被1和本身整除,2到本身减1之间的数不能整除该数。
(3) 判断m是否为素数的格式:
for(i=2;i
if(m%i= =0)
break;
if(m==i)表明m是素数;
(4) 素数只能被1和m,那么用2到m-1之间的数除m,如果有一个数能整除m,说明m不是一个素数,就不用再判断后面的数值了,用一条break语句提前结束函数;如果一直都不能整除,则说明m是一个素数。那么用循环语句表示2到m-1之间的数的语句为:for(i=2;i
(5) 求素数的题目只要把格式给带进去就可以了。
8. 链表
(1) 链表的题目分为带头结点的和不带头结点的链表;
(2) 带头结点的链表:带头结点的链表的第一个空的改为:p=h->next;第二个空改为: p=p->next;
(3) 不带头结点的链表:不带头结点的链表的第一个空的改为:p=h;第二个空改为: p=p->next;
Ⅲ、程序设计题
一、程序编程题解题技巧
1.首先仔细审题,了解题目的要求,记下题目给出的输入和输出例示,以便检验在完成指定的函数后,程序运行的结果是否正确。
2.调出源程序后,应对照函数首部的形参,审视主函数中调用函数时的实参内容,以便明确在函数中需要处理的数据对象。
3.理解试题的要求,审视主函数中调用函数的方式,若在表达式中调用函数(如把函数值赋给某个对象),则要求有函数值返回,需注意函数的类型,并在函数中用return语句返回函数值;若主函数中仅用语句形式调用函数,则需要通过形参间接地返回所得结果。
4.选择适当的算法进行编程,输入程序语句。不要忘记及时存盘!
5.编译程序,直到没有语法错误。
6.调试程序,利用试题中给出的例示数据进行输入(若要求输入的话),运行程序,用例示的输出数 据检验输出结果,直到结果相同
二、编程题的基本算法
1. 求和问题
(1)(循环控制变量)计数器的范围。
(2)和变量的初值一般为0。
(3)如是分数求和,请注意整除问题。
(4)在确保前三个条件的情况下,按编程的思路,一步步完善。
2. 求乘积问题
(1)积变量
(2)乘积表达式作分母的时候,是一个整体,请加括号。
3. 找最大值、最小值问题
(1)首先将首元素(行首、列首等)的值赋给保存最大值(或最小值)的变量,如max(或min)
(2)然后将max(或min)和后面的元素一一比较,如果出现更大的值(或更小的值),则将该值赋给max(或min),直到全部比完为止,利用一个临时变量j记录max所在位置。
(3)一维数组的首元素为a[0],二维数组的首元素为a[0][0],二维数组的行首元素为a[i][0],二维数组的列首元素为a[0][i]。
例:找出2×M整型二维数组中最大元素的值
int fun (int a[][M])
{
int i,j,max=a[0][0];
for(i=0;i<2;i++)
for(j=0;j
if(max
max=a[i][j];
return max;
}
4. 求素数问题
(1)判断一个素是否为素数。
(2)求某个范围内素数的个数、和、平方根和等。
5. 求最小公倍数、最大公约数问题
最小公倍数求法:用从1开始的数去整除,若能同时整除,则此数为最小公倍数,否则继续加1再整除,直到找到为止。
for(k=1; k++)
{
if(k%a==0&&k%b==0) break
};
最大公约数求法(碾转相除法)
(1)将两数中的大数去除以小数,如果除不断,转入(2),若能整除,转入(3)。
(2)将小数变成被除数,它们的余数为除数,再相除。如果除不断,转入(2)。若能整除,转入(3)。
(3)则此除数为最大公约数。
int a(int x,int y)
{
int temp;
temp=x%y;
if(temp==0)
{
return y;
}
else
{
return a(y,temp);
}
}
6. 字符串问题
(1)串重新组合问题。
①原串中去掉(或添加)一部分组成成分(如数字、*号)
②奇数或偶数重排
(2)在串中查找字符或字符串问题。
(3)前两个问题中涉及到的字符移动问题(前移、后移)
(4)将串中的某些前移,某些后移,实质是先选出来,存在不同的数组中,再重新合并。
(5) 逆序。
(6)字符型的数字转换为成其面值相同的整数,并进行相关运算。如‘5’转换为数值5怎么转换?‘5’-‘0’=5 或‘5’-48=5
(7)字符大小写转换。如‘A’转换为‘a’怎么转换? ‘A’-‘a’=-32 或‘a’-32=‘A’。
7. 排序问题(假定有n个元素)
(1)冒泡排序。
从数组的首元素开始,依次对相邻的两个元素进行比较,当发现前面的数字大于(或小于)后面时就进行依次交换,从头到尾比较完一遍就挑出一个最大(或最小)的数,将其排在最后面,n个数要比较n-1遍,其中第j遍要两两相比n-j遍。
主要参数说明:
i (循环次数n-1次): 0----n-2
如果a[i]
{t=a[i];a[i]=a[j];a[j]=t; }则为降序
如果a[i]>a[i+1]
{t=a[i];a[i]=a[j];a[j]=t; }则为升序.
(2)选择排序。
选择排序分升序和降序,其中降序排序,首先从数组中挑选一个最大的元素,把它和第一个元素交换,接着从剩下的n-1个元素中再挑出一个最大的元素,把它和第二个元素交换,不断重复以上过程,直到比较完最后两个元素。
主要参数说明:
i (循环次数n-1次): 0----n-2
j (被比较元素的下标):i+1 -----n-1
如果a[i]
{t=a[i];a[i]=a[j];a[j]=t; }则为降序。
如果a[i]>a[j]
{t=a[i];a[i]=a[j];a[j]=t; }则为升序
8. 逻辑与(&&)和逻辑或(||)的应用
例如:求100以内能被5整除或7整除,但不能被11整除。if((i%5==0||i%7==0)&&i%11!=0)
9. 算术运算符%与/的应用
求商用/
求余数用%
(1)截尾数问题,取一个数的后n-1位。
(2)求一个数的每一位上的数字。
(3)奇数:X%2==1;偶数:X%2==0;
10. 结构体编程问题
请区分b.score[i]与b[i].score
11. 结点引用问题
12. 两个数重新合并成一个新数
13. 统计字符串中单词的个数,单词中间用若干个空格隔开
请掌握指针文件相关函数及字符串相关函数的使用方法。FILE *fp;fopen(fp)与fclose(fp)对称。
三、 C编程时常犯的错误。
1. 书写标识符时,忽略了大小写字母的区别
main()
{
int a=5;
printf("%d",A);
}
编译程序把a和A认为是两个不同的变量名,而显示出错信息。C认为大写字母和小写字母是两个不同的字符。习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。
2. 忽略了变量的类型,进行了不合法的运算
main()
{
float a,b;
printf("%d",a%b);
}
%是求余运算,得到a/b的整余数。整型变量a和b可以进行求余运算,而实型变量则不允许进行“求余”运算。
3. 将字符常量与字符串常量混淆
char c; c="a";
在这里就混淆了字符常量与字符串常量,字符常量是由一对单引号括起来的单个字符,字符串常量是一对双引号括起来的字符序列。C规定以“\0”作字符串结束标志,它是由系统自加上的,所以字符串“a”实际上包含两个字符:‘a'和‘\0',而把它赋给一个字符变量是不行的。
4. 忽略了“=”与“==”的区别
C语言中,“=”是赋值运算符,“==”是关系运算符
5. 忘记加分号
分号是C语句中不可缺少的一部分,语句末尾必须有分号。
例如: a=1
b=1
编译时,编译程序在“a=1”后面没发现分号,就把下一行“b=2”也作为上一行语句的一部分,这就会出现语法错误。改错时,有时在被指出有错的一行中未发现错误,就需要看一下上一行是否漏掉了分号。
6. 多加分号
(1)对于一个复合语句,
例如{
z=x+y;
t=z/100;
printf("%f",t);
};
复合语句的花括号后不应再加分号,否则将会画蛇添足。
(2)对于if语句
例如:
if(a%3==0);
i++;
本是如果3整除a,则i加1。但由于if (a%3==0)后多加了分号,则if语句到此结束,程序将执行i++语句,不论3是否整除a,i都将自动加1。
(3)对于for语句
for(i=0;i<5;i++);
{
scanf("%d",&x);
printf("%d",x);
}
本意是先后输入5个数,每输入一个数后再将它输出。由于for()后多加了一个分号,使循环体变为空语句,此时只能输入一个数并输出它。
7. 输入变量时忘记加地址运算符“&”
int a,b;
scanf("%d%d",a,b);
这是不合法的。scanf函数的作用是:按照a、b在内存的地址将a、b的值存进去。“&a”指a在内存中的地址。但有字符数组 char str[10];写成scanf("%s",&str);就是错误的。C语言编译系统对数组名的处理是:数组名代表该数组的起始地址,且scanf函数中的输入项是字符数组名,不必要再加地址符&。应改为:scanf("%s",str);
8. 输入数据的方式与要求不符。
①scanf("%d%d",&a,&b);
输入时,不能用逗号作两个数据间的分隔符,如下面输入不合法:
3,4
输入数据时,在两个数据之间以一个或多个空格间隔,也可用回车键,跳格键tab。
②scanf("%d,%d",&a,&b);
C语言规定:如果在“格式控制”字符串中除了格式说明以外还有其它字符,则在输入数据 时应输入与这些字符相同的字符。下面输入是合法的:
3,4
此时不用逗号而用空格或其它字符是不对的。
9. 输入字符的格式与要求不一致。
在用“%c”格式输入字符时,“空格字符”和“转义字符”都作为有效字符输入。
scanf("%c%c%c",&c1,&c2,&c3);
如输入a b c
字符“a”送给c1,字符“ ”送给c2,字符“b”送给c3,因为%c只要求读入一个字符,后面不需要用空格作为两个字符的间隔。
10. 输入输出的数据类型与所用格式说明符不一致。
例如,a已定义为整型,b定义为实型
a=3;b=4.5;
printf("%f%d\n",a,b);
编译时不给出出错信息,但运行结果将与原意不符。这种错误尤其需要注意。
11. 输入数据时,企图规定精度
scanf("%7.2f",&a);
这样做是不合法的,输入数据时不能规定精度。
12. switch语句中漏写break语句
例如:根据考试成绩的等级打印出百分制数段。
switch(grade)
{ case 'A':printf("85~100\n");
case 'B':printf("70~84\n");
case 'C':printf("60~69\n");
case 'D':printf("<60\n");
default:printf("error\n");
由于漏写了break语句,case只起标号的作用,而不起判断作用。因此,当grade值为A时,printf函数在执行完第一个语句后接着执行第二、三、四、五个printf函数语句。正确写法应在每个分支后再加上“break;”。例如
case 'A':printf("85~100\n");break;
13. 忽视了while和do-while语句在细节上的区别。
14. 定义数组时误用变量。
int n;
scanf("%d",&n);
int a[n];
数组名后用方括号括起来的是常量表达式,可以包括常量和符号常量。即C不允许对数组的大小作动态定义。
15. 在定义数组时,将定义的“元素个数”误认为是可使用的最大下标值。
16. 在不应加地址运算符&的位置加了地址运算符。
scanf("%s",&str);
Ⅳ、注意事项
1. 每年考题都有部分会更新,因此同学们在做题目的时候要多做总结,掌握方法不能直接记答案
2. 做题时候一定要先找到考试文件夹,看清楚文件安装的路径,例如:考试系统安装在了D盘下面,因此做题的时候我们的考题就都在文件夹D:\KSWJJ\24000001下面,其中24010001表示每个考生的准考证号,做题时候一定要注意自己只能在自己的考试目录下做题,否则不得分
3. 不管是填空题、改错题,还是编程题,都要记得保存,保存按钮在vc++6.0左上角
4. 做编程题时,除了保存还必须进行编译和运行,其中
为编译,
为执行,当程序没有编译时执行为灰色的,即不能执行,只有编译正确后才能进行执行命令
5. 执行结果必须出现:“Press any key to continue”字样才能生成out.dat文件,如果没有出现该语句则应该注意是否自己的测试数据有没有输入正确。
四、高效备考(考试也有方法):
1.真考题库: 真考题库是历年考试的试题集合,考试临近专心做题、刷题。特别是操作题,结合操作题视频。有些题具有代表性,一题可以代表一类题。
2.利用好手机随时随地的特点,随时刷选择题。
3.考前一个月,结合网页题库的知识点串讲视频课堂,你会有不一样的收获。在这里你可以感受的操作题的考点分布,以及巧妙的解题方法。
4.绝密押题:临近考试来做做未来教育的绝密押题,极有可能在考场上遇到原题。
5.模拟考场:在走向考场之前,感受下考试的氛围。熟悉考试环境。打开“模拟考场”身临其境,感受二级C语言考试环境。