二级c语言知识点总结

2024-05-06

二级c语言知识点总结(精选8篇)

篇1:二级c语言知识点总结

C语言二级考试知识点总结

1.在数据流图中,用标有名字的箭头表示数据流。在程序流程图中,用标有名字的箭头表示控制流。2.可行性分析阶段产生可行性分析报告。概要设计说明书是总体设计阶段产生的文档。集成测试计划是在概要设计阶段编写的文档。

需求规格说明书是后续工作如设计、编码等需要的重要参考文档。3.除了堆排序算法的比较次数是,其他的都是n(n-1)/2。4.E-R图转换成关系模型数据则是把图形分析出来的联系反映到数据库中,即设计出表,所以属于逻辑设计阶段。

5.C语言中的非执行语句不会被编译,不会生成二进制的机器指令,所以A)错误。由C语言构成的指令序列称C源程序,C源程序经过C语言编译程序编译之后生成一个后缀为.OBJ的二进制文件(称为目标文件);最后要由“连接程序”把此.OBJ文件与C语言提供的各种库函数连接起来生成一个后缀为.EXE的可执行文件。

6.C语言中八进制整型常量的开头是数字0,十六进制整型常量的开头数字是0x。C语言中的实型常量有两种表示形式:小数形式,小数形式表示的实型常量必须要有小数点;指数形式,以“e”或“E”后跟一个整数来表示以10为底数的幂数,且规定字母e或E之前必须要有数字,且e或E后面的指数必须为整数。

7.循环队列有队头和队尾两个指针,但是循环队列仍是线性结构的;在循环队列中只需要队头指针与队尾两个指针来共同反映队列中元素的动态变化情况

8.链式存储结构既可以针对线性结构也可以针对非线性结构。链式存储结构中每个结点都由数据域与指针域两部分组成,增加了存储空间。9.在需求分析阶段可以使用的工具有数据流图DFD图,数据字典DD,判定树与判定表

10.对象有如下一些基本特点:标识唯一性、分类性、多态性、封装性、模块独立性好。

11.栈支持子程序调用。栈是一种只能在一端进行插入或删除的线性表,在主程序调用子函数时要首先保存主程序当前的状态,然后转去执行子程序,最终把子程序的执行结果返回到主程序中调用子程序的位置,继续向下执行,这种调用符合栈的特点

12.冒泡排序与简单插入排序与简单选择排序法在最坏情况下均需要比较n(n-1)/2次,而堆排序在最坏情况下需要比较的次数是 13.编译软件、操作系统、汇编程序都属于系统软件,只有C)教务管理系统才是应用软件。

14.耦合性是模块间互相连接的紧密程度的度量而内聚性是指一个模块内部各个元素间彼此结合的紧密程度

15.循环队列的队头指针与队尾指针都不是固定的,随着入队与出队操作要进行变化。因为是循环利用的队列结构所以对头指针有时可能大于队尾指针有时也可能小于队尾指针。

16.在E-R图中实体集用矩形,属性用椭圆,联系用菱形。17.算法是指解题方案的准确而完整的描述,算法不等于程序,也不等于计算方法,设计算法时不仅要考虑对数据对象的运算和操作,还要考虑算法的控制结构。

18.数据库系统的三级模式是概念模式、外模式和内模式

19.关于数据库设计的叙述:数据字典是在需求分析阶段建立,在数据库设计过程中不断修改、充实和完善的。

20.面向对象基本方法的基本概念有对象、类和实例、消息、继承与多态性

21.一般来说,在线性表的链式存储结构中,各数据结点的存储序号是不连续的,并且各结点在存储空间中的位置关系与逻辑关系也不一致。线性链表中数据的插入和删除都不需要移动表中的元素,只需改变结点的指针域即可。

22.实体完整性约束要求关系的主键中属性值不能为空值。所以一个关系中应该有一个或多个候选关键字

23.软件危机主要表现在:软件需求的增长得不到满足;软件开发成本和进度无法控制;软件质量难以保证;软件不可维护或维护程度非常低;软件的成本不断提高;软件开发生产率的提高赶不上硬件的发展和应用需求的增长。

24.需求分析阶段的工作有:需求获取;需求分析;编写需求规格说明书;需求评审

25.黑盒测试是对软件已经实现的功能是否满足需求进行测试和验证,黑盒测试完全不考虑程序内部的逻辑结构和内部特性,只根据程序的需求和功能规格说明,检查程序的功能是否符合它的功能说明,26.系统结构图是对软件系统结构的总体设计的图形显示。在需求分析阶段,已经从系统开发的角度出发,把系统按功能逐次分割成层次结构,是在概要设计阶段用到的。PAD图是在详细设计阶段用到的。程序流程图是对程序流程的图形表示,在详细设计过程中用到。数据流图是结构化分析方法中使用的工具,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型,是在可行性研究阶段用到的而非软件设计时用到

27.栈是先进后出的数据结构,在整个过程中,栈底指针不变,入栈与出栈操作均由栈顶指针的变化来操作

28.数据定义语言:负责数据的模式定义与数据的物理存取构建;数据操纵语言:负责数据的操纵,包括查询及增、删、改等操作;数据控制语言:负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等功能。

29.C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件。。

并不是源程序中的所有行都参加编译。在条件编译形式下,相关内容只在满足一定条件时才进行编译。。用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中 30.不能将一个整数直接赋给指针变量作为地址 31.函数调用中形参值的变化不会传递给实参。

32.auto:函数中的局部变量,动态地分配存储空间,数据存储在动态存储区中,在调用该函数时系统会给它们分配存储空间,在函数调用结束时就自动释放这些存储空间。register:为了提高效率,C语言允许将局部变量的值放在CPU中的寄存器中,这种变量叫“寄存器变量”,只有局部自动变量和形式参数可以作为寄存器变量。extern:外部变量(即全局变量)是在函数的外部定义的,它的作用域为从变量定义处开始,到本程序文件的末尾。如果外部变量不在文件的开头定义,其有效的作用范围只限于定义处到文件终了。static:静态局部变量属于静态存储类别,在静态存储区内分配存储单元。在程序整个运行期间都不释放。

33.取模运算符%的左右两个操作数均应为整数

34.条件表达式:x=表达式1?表达式2:表达式3 的含义是:先求解表达式1,若为非0(真),则求解表达式2,将表达式2的值赋给x。若表达式1的值为0(假),则求解表达式3,将表达式3的值赋给x。35.在任意一棵二叉树中,度为0的叶子节点总是比度为2的节点多一个

36.数据库应用系统中的核心问题是数据库的设计

37.因为x,y都是double型数据,所以输入时的格式字符应为%lf 38.char s[7];s={“Olympic”};中字符数组s的大小至少为8,才能存放下字符串。(字符串的末尾都有结束标志“”)。

39.数据字典是在需求分析阶段建立,在数据库设计过程中不断修改、充实和完善的。

40.详细设计的任务是为软件结构图中而非总体结构图中的每一个模块确定实现算法和局部数据结构,用某种选定的表达工具表示算法和数据结构的细节

41.数据定义语言:负责数据的模式定义与数据的物理存取构建;数据操纵语言:负责数据的操纵,包括查询及增、删、改等操作;数据控制语言:负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等功能。

42.C语言中整型变量分为4种,基本型int,短整型short int,长整型long int和无符号型(unsigned int、unsigned short、unsigned long)

篇2:二级c语言知识点总结

改错题总的出错分为两大类:语法出错和逻辑出错,此类题目是比较简单的题型,因此也是最容易把握的知识点。

注意:错误都是出现在/**********found**********/下面的这一行。只是下面的这一行,其他行都没有错误。不能修改其他行。做题方法:

1.首先拿到题目,先将题目详细看看(包括题干),看清题目对做题时很有帮助,特别是一些逻辑性较强的题目很有用。有的同学可能会觉得题目太难了不想去读,其实在做改错题目时即便你不会也能把题目做对。

2.按照以下的步骤解决题目中的错误的内容,对应着修改。修改完之后保存即可。一 语法错误

1.关键字出错:在二级C语言考试中仅仅考查学生对基本的关键字掌握情况,比如:整型就是int 不是Int,知识点简单。(1)6题第二个空:If应该改为if;(2)1 2题第二个空:If应该改为if;(3)2 3题第一空:dounle 应该改为double;(4)3 5题第二空:I f应该改为if;(5)3 6题第二空:Double 应该改为double。(6)2题第二空:wihle 应该改为while。

2.格式出错:在考试中主要考查学生细心的程度,最喜欢考简单的知识点。

(1)少分号:2题第一空、28 题第一空、29 题第一空、34 题第二空、37 题第 二空、48 题第二空。考查的知识点:分号是语句结束的标志。

(2)for 语句的格式:for(;;)中间用分号隔开不是用逗号隔开。3题第二空、6 题第一空、14 题第二空都是出现了for 语句格式出错的问题。

(3)if 语句的格式:if(表达式),if 后面必须加上小括号。3 7题第一空if 后面必须加上小括号。

(4)命令行格式出错:17 题第一空中include 命令少了#,正确的形式应该是#include “std io.h”;

(5)常用函数格式:

A 22 题第一空中n=strlen[aa]应该改为n=strlen(aa),记住函数名后面一定是花括号,不能是方括号,方括号只有在数组下标中用到。

B 4 9题第一空int j,c, float xa =0.0;应该改为int j,c;float xa =0.0;记住:要同时定义两种以上不同的数据类型的时候必须在不同类型的数据中间加上分号。

C 4 1题第二空scanf(“%d”,a[i][j]);应该改为scan f(“%d”,&a[i][j])。考查scanf 输入函数的格式。

(6)数组:所有老师讲到数组时候必须统一将此知识点给学生回顾一遍!A数组下标引用时候只能用反括号。2 8题第二空t(k)=b(j)应该改为t[k]=b[j]。

B二维数组中的列下标不能省略。4 6题第一空必须将数组列下标补充完整。A[][3](7)常用符号出错:

A C语言中大于等于符号是“>=”,但是在考试的时候可能出现将它写为“=>”,49 题第二空就是这样的错误。

B当题目中需要比较某个字符是否是大写字母或是小写字母、数字时,必须将“与”、“或”、“非”记住。判断某个字符是否是大写字母:char ch;if(ch>=’A’&&ch<=’Z’)printf(“%c”,c h);判断某个字符是否是小写字母:char ch;if(ch>=’a’&&ch<=’z’)printf(“%c”,c h);判断某个字符是否是数字:c har ch;if(c h>=’0’&&c h<=’9’)printf(“%c”,c h);判断某个数字是否能同时被5和7整除:

int i=35;if(i%5==0&&i%7==0)printf(“%d”,i);判断某个数字是否能被5或7整除:

int i=35;if(i%5==0||i%7==0)printf(“%d”,i);判断某个数字是否是偶数或奇数:

int i=35;if(i%2==0)printf(“%d是一个偶数”,i);else printf(“%d是一个奇数”,i);

二 逻辑错误

1.使用了没有定义过的变量:这种题目可以通过编译查找出出错的地方并改之。(1)0(零)和o(字母欧)的区别:19 题第一空、2 3题第二空、43 题第二空。(2)P(大)和p(小)的区别:3 3题第一空。(3)普通变量大小写的区别:int a=10;A A有的变量在定义的时候是小写但是在使用的时候是大写,或是在定义的时候是大写在使用的时候却是小写。B大小写没有出错,程序中直接使用了没有定义过的变量,要求学生更加细心的读题目。4 5题第二空使用到了i这个变量,但是我们在定义行中没有找到i的定义,因此在做题时候要上下结合来分析题目。22 题第二空c=aa [j]中的c没我们一直用心做教育!有定义过,参看定义的语句不能发现应该是c h=aa [j]。3 8题第一空要求将后面用到的变量s1 定义完整。2.运算符号出错:

(1)C语言中除号是“/”不是“”

(2)赋值号(=)和等号(==)混淆,记住在if 语句中出现赋值号(=)一般是讲它改为等号(==)。14 题第一空和29 题第二空都是这样的错误。3.表达式的取值范围出错:

当遇到计算表达式的累加或是累减时,一定用到循环来完成相应的操作。例如:改错题第七题中要求计算t=1-1/2*2-1/3*3-„.-1/m*m这个表达式,在这个题目中第一空有这样的f or 语句:for(i=2;i

这个考点同样考查表达式的相关知识。例如:改错题第七题中要求计算t=1-1/2*2-1/3*3-„.-1/m*m这个表达式,在这个题目中第一空有这样的for 语句:for(i=2;i

遇到这种题目在改错题中最容易考查的是大于(>)、小于(<)等符号的变化,当你查找出错的地方没有语法错误,也没有使用了未定义的变量时,记住这个口诀:将大于改为小于,将小于改为大于!6.函数的返回值及其参数:重点

int fun(int x, int y)

main(){

{ if(x>y)return x;

int a,b,c;else return y;

scanf(“%d%d”,&a,&b);}

c=fun(a,b);

printf(“最大值为:%d”,c);}(1)函数的返回类型:在上面的例子中fun 函数的返回值是int,如果将int 改为doubl e,很明显是错误的。从两个地方来看,首先return x;中x的类型必须和fun 函数中的返回值相同,x是整型。其次c=fun(a,b);中fun 函数将一个返我们一直用心做!

回值赋值给了变量C,说明函数返回的值一定是整型。记住:函数调用、函数的返回值和return中数据类型必须一致!

(2)return后面的表达式及其类型:1 9.2、3 0.2、39.2(3)函数传递的参数:

int fun(int x, int y)

main(){

{ if(*x>*y)return*x;

int a,b,c;else return*y;

scanf(“%d%d”,&a,&b);}

c=fun(&a,&b);

prin t f(“最大值为:%d”,c);} 一定注意:传递的是值还是地址。比较上面两个例子大家很容易区别传递的是值 还是地址,第一个例子调用函数的时候传递的是值,因此在f u n函数的形参中x 和y仅仅是普通的变量,而第二个例子中调用函数的时候传递的是地址,因此在 f un 函数的形参中x和y就是两个指针变量。5.1、13.1、17.2、2 0.1、2 5.2依据刚 刚讲的方法很快就能找出出错点。(4)指针的使用: int fun(in t *x, in t *y){ if(*x>*y)return*x;else return*y;} 在此例中f un 函数的形参是x和y,它们的类型是整型的指针,那么在f un 函数的函数体中使用到x和y的值时一定要区分:x>y比较的是x和y所存变量地址的大小,*x>*y才是比较值的大小。如果存在*x=x+y;的类似情况一定是错误的,必须要将赋值号的左右两边的类型变为一致。5.2、5.3、20.2、24.2、35.1、44.1 一定特别注意!7.数组:

(1)数组下标的初始值:数组下标从零开始,到长度减一结束。考试技巧:当出错行在定义部分时,先检查该定义语句有没有语法错误,再看定义语句中的变量有没有赋初始值,最后看变量赋的初始值有没有正确。定义初始值有窍门,遇到累加时,用来存放累加和的变量一般赋值为零,遇到求阶乘时,用来存放阶乘值的变量一般赋值为一。8.1中的变量k赋值为1,但是我们说了数组的下标只能从0开始,因此将1改为0就行了。

(2)普通变量的初始值:依照上面的技巧,我们同样可以将它延伸到普通变量中。4 1.1中需要将变量的值进行初始化,题目中有这样的要求:“输出主对角线元素之和”,既然这样我们很肯定初始值应该为零,接着我们看看是给哪个变量赋值?看printf(“su m =%d”,su m);输出的是sum 的值,说明sum 就是我们要补充在横线上的变量。10.1也可以用同样的方法来分析。

(3)数组和字符串长度减一:当使用数组中的元素时,最大值只能到数组长度减一。字符串以’’作为字符串的结束标志,因此取值最大也只能到字符串长度减一。25.2中输出p r in t f(“%d”,a a[i]);分析程序知道i在此时就是数组的长度,我们要输出数组中的元素,最大就只能到a a[i-1],因此改为printf(“%d”,aa[i-1]);就行了。4.1和38.2中考查的是字符串长度减一的问题。

(4)数组下标往后走:当题目要求将一个数组中的元素直接赋值或是以某种方式复制到另一个数组中时,接受数据的数组中的下标要自增9.。1中s[j]=s[i];将s[i]中的值复制给s[j],联系上下函数段发现i是一个变量被for语句控制,从0开始直到遇到’’结束。i一直在加但是j没有变化,因此改为s[j++]=s[i];即可。类似的题目有:25.2、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;9.素数

掌握求素数的格式:

判断一个数是否是素数的方法很多,只用掌握一种即可,首先掌握判断一个素数的方法; 素数的定义:

1、是自然数

2、只能被1和本身整除,2到本身减一之间的数不能整除该数。判断m是否为素数的格式: for(i=2;i

求素数的题目只要把格式给带进去就可以了。1 1.1这个题目中只用改为“==”。29 题也是一样的解答方法。10、链表

链表的题目分为带头结点的和不带头结点的链表;

1、带头结点的链表

带头结点的链表的第一个空的改为:p=h->next;第二个空改为:p=p->next;.2、不带头结点的链表

篇3:谈二级C语言之函数的声明

1.1 填空

#include

void fun (unsigned long*n)

{unsigned long x=0, i;int t;

i=1;

while (*n)

/**********found**********/

{t=*n%__1__;

/**********found**********/

if (t%2!=__2__)

{x=x+t*i;i=i*10;}*n=*n/10;

}

/**********found**********/

*n=__3__;

}

main ()

{unsigned long n=-1;

while (n>99999999||n<0)

{p r i n t f ("P l e a s e

i n p u t (0

fun (&n) ;

printf ("n The result is:%ldn", n) ;

}

1.2 改错

#include

#define M 5

/************found************/

int fun (int n, int xx[][])

{int i, j, sum=0;

printf ("n The%d x%d matrix:n", M M) ;

for (i=0;i

{for (j=0;j

/************found************/

printf ("%f", xx[i][j]) ;printf ("n") ;

}

for (i=0;i

sum+=xx[i][i]+xx[i][n-i-1];return (sum) ;

}

main ()

{i n t a a[M[M]={{1, 2, 3, 4, 5}, {4, 3, 2, 1, 0},

{3, 4, 5, 6, 7}};

printf ("n The sum of all elements on2 diagnals is%d.", fun (M, aa) ) ;

}

1.3 编程

#include

#include

#define N 16

typedef struct

{char num[10];

int s;

}STREC;

STREC fun (STREC*a, char*b)

{

}

main ()

{STREC s[N]={{"GA005", 85}, {"GA003", 76}, {"GA002", 69}, {"GA004", 85},

", 72}, {"GA008", 64}, {"GA006", 87},

", 91}, {"GA012", 64}, {"GA014", 91},

", 64}, {"GA018", 64}, {"GA016", 72}};

STREC h;

char m[10];

int i;FILE*out;

printf ("The original data:n") ;

for (i=0;i

{if (i%4==0) printf ("n") ;

printf ("%s%3d", s[i].num, s[i].s) ;}

printf ("nn Enter the number") ;gets (m) ;

}

2 上机操作解析

2.1 填空

(1) 10; (2) 0; (3) x

2.2 改错

(1) int fun (int n, int xx[][M]) ; (2) printf (“%d”, xx[i][j]) ;

2.3 编程

STREC fun (STREC*a, char*b)

{

int i;

}

3 知识点详析

函数的声明:

(1) 函数声明中的参数名可以省略, 可以是任意合法的用户标识符, 不必与函数定义中的形参名一致, 也可以与程序中的其他用户标识符同名。

(2) 对函数进行声明, 能使C语言的编译程序在编译时进行有效的类型检查。参数类型、顺序和个数要求与函数定义中的保持一致。

(3) 如果函数的返回值是整型或字符型, 可以不必进行声明, 系统对它们自动按整型声明。

摘要:全国计算机等级考试是在每年的三月份与九月份举行, 其中作为本科生报考人数最多的就是二级C语言, C语言的上机操作题每年困扰着这无数的大学生们, 二级C语言的上级操作题分为三题, 即填空题, 改错题, 编程题, 总共100分, 本文举例了二级C语言的一些试题加以分析, 并且着重介绍了函数的声明。

关键词:全国计算机等级考试,二级C语言,上机操作,函数的声明

参考文献

[1]路瑾铭.全国计算机等级考试过关宝典系列——教程 (二级C语言) .2011 (9)

篇4:二级c语言知识点总结

2008年下半年二级C语言程序设计的全国报考人数为50.99万人,笔试试卷的整卷难度为0.57,整卷的信度达到了0.89。本次考试二级C全国取证率为32.3%。全卷的难度适中,信度较好。现就将本次考试中的部分难题做简要分析,以帮助考生复习备考,取得满意的成绩。

选择题第32题:

有以下程序

#include

void fun( int a, int b )

{intt;

t=a; a=b; b=t;

}

main()

{intc[10]={1,2,3,4,5,6,7,8,9,0}, i;

for (i=0; i<10; i+=2)fun(c[i], c[i+1]);

for (i=0;i<10; i++)printf("%d,", c[i]);

printf("n");

}

程序运行后的输出结果是

A)1,2,3,4,5,6,7,8,9,0,

B)2,1,4,3,6,5,8,7,0,9,

C)0,9,8,7,6,5,4,3,2,1,

D)0,1,2,3,4,5,6,7,8,9,

【答案】A

【分析】

(1)该题考生答对率只有29.6%,59.1%的考生选择了错误项B。

(2)这是一道典型的调用函数与被调用函数之间数据传递的问题。在调用函数时,实参的值将传送给对应的形参,但形参的变化不会影响对应的实参。教材例7.3(P.82)深刻地说明了这个过程。估计很多考生知道这一点,但理解不够深刻,故一旦试题更换格式,就会出错。

(3)这道题区分度较高,达到0.347,说明是一道好题。

选择题第40题:

有以下程序

#include

main()

{ FILE *pf;

char *s1="China", *s2="Beijing";

pf=fopen("abc.dat","wb+");

fwrite(s2,7,1,pf);

rewind(pf); /*文件位置指针回到文件开头*/

fwrite(s1,5,1,pf);

fclose(pf);

}

以上程序执行后abc.dat文件的内容是

A)ChinaB)Chinang

C)ChinaBeijingD)BeijingChina

【答案】B

【分析】

(1)只有28.5%的考生答对,有37.9%的考生选择了D。属于本套试卷里最难的选择题。

(2)在文件使用方式上,本题使用的是“wb+”,意思是为写建立一个新的二进制文件,并在读和写过程中,可以由位置函数设置读和写的起始位置。为降低试题难度,本题特地在语句rewind(pf);后面有注解提示:文件位置指针回到文件开头。因此,在写入字符串“Beijing”后,文件指针回到文件头,再写入“China”,文件的内容就成为“Chinang”,正确答案是B。

(3)该题区分度0.375,属好题。

填空题第8题:

以下程序的输出结果是___。

#include

main()

{int i,j,sum;

for(i=3;i>=1;i--)

{sum=0;

for(j=1;j<=i;j++)sum+=i*j;

}

printf("%dn",sum);

}

【答案】1

【分析】

(1)本题只有19.2%的考生答对。

(2)该题考核考生做题时的细心。在第一个for循环体中,由于每次循环都将sum置0,因此,影响sum值的因素就只与最后一次循环语句相关,此时,i为0,j为1,sum只能是1了。

(3)这道题本身不难,如果考生能够仔细阅题,掌握关键点,就不会出错了。

填空第9题:

以下程序的输出结果是___。

# include

main()

{ intj, a[]={1,3,5,7,9,11,13,15}, *p=a+5;

for(j=3;j;j--)

{switch ( j )

{ case1:

case2:printf("%d", *p++);break;

case3:printf("%d", *(--p));

}

}

}

【答案】9911

【分析】

(1)本题只有16.3%的考生答对,是难题。

(2)该题主要考核考生三个方面的知识,一是选择结构switch语句,一个是自加减运算,另一个是指针。j=3时,执行printf("%d", *(--p));语句,结果是输出9;j=2时,执行printf("%d", *p++); break; 结果是输出9,这是答对本体的关键!*p++指的是使*p作为表达式的值,然后使指针变量p本身增1;j=1时,执行空语句后,继续执行case2语句,此时输出11。所以本题的答案是9911。

篇5:二级C语言上机考试改错题总结

根据本人多年研究全国计算机等级考试二级若错误行中有整数1除以某个表达式或变量时,必C语言,发现很多考生对上机考试存在很大的问须把整数1改为1.0;若变量或表达式是整型时,题。现将本人在教学当中对二级C语言上机考试题则只能进行强制类型转换。

库总结的经验和大家分享,希望能对我们考生的考

试有所帮助,顺利通过考试!以下是对上机考试改

错题的做题方法和总结,改错题的错误主要分为以

7、字符串类问题

下几类: 若错误行中有字符串结束符,则特别要要注意结束

1、if或while语句 符有没有写错。但是要区分清楚字符‘o’和数字’若错误行是if或者while语句,则要注意以下点: 0’。

1)首先判断是否正确书写if或while关键字;

8、指针类问题

2)然后看有没有用小括号把整个表达式括起来,若错误行中有指针变量,并且该变量名之前没有指若没有则加上小括号; 针运算符,则一般都是加上指针运算符;

3)若条件表达式中有指针变量而且没有指针运算

9、函数首部类问题:

符时,则加上指针运算符; 若错误行是函数首部,则要注意:

4)若if条件表达式中只有一个等于号即数学等号1)首先看该行最后有没有分号,若有则删掉分号;(=),则要改写成两个等于号即逻辑等号(= =); 若中间有分号则要改为逗号;

5)若if条件表达式为其他的比较运算符,则一般2)形参和实参类型不一致问题

是进行逆转或加一个等于号;① 若实参是个地址或数组名或指针变量名,则对

2、for语句 应的形参肯定是指针或数组;

若错误行是for语句,则要注意以下几点:②若实参是二维数组名,则对应的形参应该是指

1)首先判断for有没有书写正确; 针数组或是二维数组;

2)然后看for中的表达式是不是用分号(;)隔开,③若后面用到某形参的时候有指针运算符,则该若不是则改为分号。形参比为指针类型;

记住是分号(;),不是逗号(,)!④若形参是二维数组或指向M 个元素的指针变

3)再者,分析for中的三个表达式,是否符合题量,则该二维的长度必须与main中对于数

意; 组的第二维的长度相同。

第一个表达式表示起始条件,3)函数类型不一致问题

第二个表达式表示终止条件,①若函数中没有return语句,则函数类型为第三个表达式表示循环变量的变化。void;

3、return语句 ②若函数中有return语句,则函数的类型必须若错误行为return语句,则要注意以下几点: 与rerun后的变量类型一致;

1)首先看是不是正确书写return关键字; 记住,调用函数的类型与main中的该函数的类型

2)然后看是不是缺少分号,若是则加上分号即可; 一致!

3)再者判断return后的变量或表达式是否正确; 10.语法错误问题:

这种错误需要根据题意来分析,分析返回变量或表1)语句缺少分号。若错误号中语句没有以分号结达式的值和类型。束则加上分号;

2)变量名不一致。C语言是区分大小写的,若错

4、赋值语句 误行中有大写字母一般都改为小写字母; 若错误行是赋值语句,则要看赋值是否正确,然后11.逻辑错误问题:

看赋值运算符是否写正确。这种题型主要是表达式错误,占的题量比较多

5、定义语句 而且我们没有统一的做题方法,需要我们具体问题若错误行是定义语句,则要注意: 具体分析。

1)首先分析变量类型名是否写对; 12.书写错误问题:

2)然后分析给变量赋初值是否正确; 特别注意我们的注释部分,注释是以/*开始,以

3)若以上均不是,则看是不是少定义了某个变量或*/结尾,不能有多余的,有也只能在/*和*/里面。少了花括号; 注意,比如“/***注释部分*****/*/”是错误的!

篇6:c语言函数知识点总结

1、C语言编写的程序称为源程序,又称为编译单位。

2、C语言书写格式是自由的,每行可以写多个语句,可以写多行。

3、一个C语言程序有且只有一个main函数,是程序运行的起点。

第二节、熟悉vc++

1、VC是软件,用来运行写的C语言程序。

2、每个C语言程序写完后,都是先编译,后链接,最后运行。(.c—.obj—.exe)这个过程中注意.c和.obj文件时无法运行的,只有.exe文件才可以运行。(常考!)

第三节、标识符

1、标识符(必考内容):

合法的要求是由字母,数字,下划线组成。有其它元素就错了。

并且第一个必须为字母或则是下划线。第一个为数字就错了

2、标识符分为关键字、预定义标识符、用户标识符。

关键字:不可以作为用户标识符号。main define scanf printf 都不是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。

预定义标识符:背诵define scanf printf include。记住预定义标识符可以做为用户标识符。

用户标识符:基本上每年都考,详细请见书上习题。

第四节:进制的转换

十进制转换成二进制、八进制、十六进制。

二进制、八进制、十六进制转换成十进制。

第五节:整数与实数

1)C语言只有八、十、十六进制,没有二进制。但是运行时候,所有的进制都要转换成二进制来进行处理。(考过两次)

a、C语言中的八进制规定要以0开头。018的数值是非法的,八进制是没有8的,逢8进1。

b、C语言中的十六进制规定要以0x开头。

2)小数的合法写法:C语言小数点两边有一个是零的话,可以不用写。

1.0在C语言中可写成1.

0.1在C语言中可以写成.1。

3)实型数据的合法形式:

a、2.333e-1 就是合法的,且数据是2.333×10-1。

b、考试口诀:e前e后必有数,e后必为整数。请结合书上的例子。

4) 整型一般是4个字节, 字符型是1个字节,双精度一般是8个字节:

long int x; 表示x是长整型。

unsigned int x; 表示x是无符号整型。

第六、七节:算术表达式和赋值表达式

核心:表达式一定有数值!

1、算术表达式:+,-,*,/,%

考试一定要注意:“/” 两边都是整型的话,结果就是一个整型。 3/2的结果就是1.

“/” 如果有一边是小数,那么结果就是小数。 3/2.0的结果就是0.5

“%”符号请一定要注意是余数,考试最容易算成了除号。)%符号两边要求是整数。不是整数就错了。[注意!!!]

2、赋值表达式:表达式数值是最左边的数值,a=b=5;该表达式为5,常量不可以赋值。

1、int x=y=10: 错啦,定义时,不可以连续赋值。

2、int x,y;

x=y=10; 对滴,定义完成后,可以连续赋值。

3、赋值的左边只能是一个变量。

4、int x=7.7;对滴,x就是7

5、float y=7;对滴,x就是7.0

3、复合的`赋值表达式:

int a=2;

a*=2+3;运行完成后,a的值是12。

一定要注意,首先要在2+3的上面打上括号。变成(2+3)再运算。

4、自加表达式:

自加、自减表达式:假设a=5,++a(是为6), a++(为5);

运行的机理:++a 是先把变量的数值加上1,然后把得到的数值放到变量a中,然后再用这个++a表达式的数值为6,而a++是先用该表达式的数值为5,然后再把a的数值加上1为6,

再放到变量a中。 进行了++a和a++后 在下面的程序中再用到a的话都是变量a中的6了。

考试口诀:++在前先加后用,++在后先用后加。

5、逗号表达式:

优先级别最低。表达式的数值逗号最右边的那个表达式的数值。

(2,3,4)的表达式的数值就是4。

z=(2,3,4)(整个是赋值表达式) 这个时候z的值为4。(有点难度哦!)

z= 2,3,4 (整个是逗号表达式)这个时候z的值为2。

补充:

1、空语句不可以随意执行,会导致逻辑错误。

2、注释是最近几年考试的重点,注释不是C语言,不占运行时间,没有分号。不可以嵌套!

3、强制类型转换:

一定是 (int)a 不是 int(a),注意类型上一定有括号的。

注意(int)(a+b) 和(int)a+b 的区别。 前是把a+b转型,后是把a转型再加b。

4、三种取整丢小数的情况:

1、int a =1.6;

2、(int)a;

3、1/2; 3/2;

第八节、字符

1)字符数据的合法形式::

‘1’ 是字符占一个字节,”1”是字符串占两个字节(含有一个结束符号)。

‘0’ 的ASCII数值表示为48,’a’ 的ASCII数值是97,’A’的ASCII数值是65。

一般考试表示单个字符错误的形式:’65’ “1”

字符是可以进行算术运算的,记住: ‘0’-0=48

大写字母和小写字母转换的方法: ‘A’+32=’a’ 相互之间一般是相差32。

2)转义字符:

转义字符分为一般转义字符、八进制转义字符、十六进制转义字符。

一般转义字符:背诵�、、’、”、。

八进制转义字符: ‘141’ 是合法的, 前导的0是不能写的。

十六进制转义字符:’x6d’ 才是合法的,前导的0不能写,并且x是小写。

3、字符型和整数是近亲:两个具有很大的相似之处

char a = 65 ;

printf(“%c”, a); 得到的输出结果:a

printf(“%d”, a); 得到的输出结果:65

第九节、位运算

1)位运算的考查:会有一到二题考试题目。

总的处理方法:几乎所有的位运算的题目都要按这个流程来处理(先把十进制变成二进制再变成十进制)。

例1: char a = 6, b;

b = a<<2; 这种题目的计算是先要把a的十进制6化成二进制,再做位运算。

例2: 一定要记住,异或的位运算符号” ^ ”。0 异或 1得到1。

0 异或 0得到0。两个女的生不出来。

考试记忆方法:一男(1)一女(0)才可以生个小孩(1)。

例3: 在没有舍去数据的时候,<<左移一位表示乘以2;>>右移一位表示除以2。

篇7:c语言主要知识点总结

◆知识点1:交换两个变量值的方法

1)采用第三方变量(最容易想到的方法)

2)采用加减法进行值得交换(面试时常用**)

代码如下:

b = a - b;a = a - b;b = a + b;

3)采用按位异或的位方式

代码如下:

a = a^b;b = a^b; a = a^b;

◆知识点2:取余运算%的结果与被除的符号相同,结果为两个正数取余后前面加符号

◆知识点3:sizeof的使用

sizeof是一种运算符不要想当然理解为函数

sizeof使用时可以不加

sizeof可以加变量、常量、数据类型

跟数据类型是必须加()

◆知识点4:#include编译预处理命令与多文件团队开发

include编译预处理命令可以认为是:将后面的文件内容拷贝到当前的文件中

多文件团队开发:模块分别编译成.o都不能链接成功,合起来链接生成最终程序。

链接:把项目中所有相关联的.o目标文件、C语言函数库合并在一起,生成可执行文件

——函数的定义放.c文件,函数的声明放.h文件

——如果要使用某个.c文件中定义的函数,只需要#include这个.c文件对应的.h文件

——h文件的.作用:被别人拷贝。编译链接的时候不需要管.h文件

◆知识点5:数组的几种初始化方式如下:

int a[3] = {10, 9, 6};int a[3] = {10,9};int a[] = {11, 7, 6};int a[4] = {[1]=11,[0] = 7};(知道有此种初始化方式即可)

◆知识点6:数组的内存分析和注意点

存储空间的划分(内存的分配是从高地址到低地址进行的,但一个数组内部元素又是从低到高进行的)【注:对于以后学习重要】

数组名的作用,查看元素地址

注意数组不要越界

◆知识点7:字符串知识点

“123”其实是由’1’、’2’、’3’、’�’组成

字符串的输出”%s”,’�’是不会输出的

◆知识点8 : 字符串处理函数:strlen()

计算的是字符数,不是字数

计算的字符不包括’�’,一个汉字相当于3个字符

例子:”哈haha“ 字符数为7

从某个地址开始的数字符个数,知道遇到’�’为止

指针部分在C语言中占据重要地位,所以重点学习与整理了指针的知识:

◆知识点9:指针定义的格式

变量类型 *变量名

如:Int *p

◆知识点10:指针作用

能够根据一个地址值,访问对应的存储空间

例:

Int *p;Int a = 90;P = &a;*p = 10;//把10赋值给p所指的存储空间

◆知识点11:指针使用注意

Int *p只能指向int类型的数据

指针变量只能存储地址

指针变量未经初始化不要拿来间接访问其他存储空间

◆知识点12:指针与数组

遍历数组

int ages[5] = {10, 4, 9, 44, 99};for(int i = 0; i<5; i++){   printf(”%d“, ages[i]);}

使用指针遍历数组:

int *p;// 指针变量P指向了数组的首地址p = &ages[0];// 使用指针遍历数组for(int i =  0; i<5; I++){   printf(”ages[%d] = %d“, i, *(p + i));}

注:指针+ 1取决于指针的类型

注:数组的访问方式

数组名[下标]

指针变量名[下标]

*(p + i)

◆知识点13:指针与字符串

定义字符串的两种方式:

1、利用数组

Char name[] = “Andyzhao”

特点:字符串里的字符可以修改

适用场合:字符串内容需要经常修改

2、利用指针

Char *name = “itcast”

特点:字符串是一个常量,字符串里面的字符不能修改

使用场合:字符串的内容不需要修改,而这个字符串经常使用

◆知识点14:预处理指令(三种):

宏定义

条件编译

文件包含

1、宏定义的配对使用和带参数的宏:

#define  ...  #undef

带参数的宏:

#define sum(v1,v2) ((v1) + (v2))//括号是必须的

例如:

#define pingfang(a) a*a  #define pingfang(a) (a*a)

调用时

pingfang(10)/pingfang(2)//不正确  pingfang(5+5)//不正确  带参数的宏效率比函数高

2、条件编译(一般是判断宏的值)

#if 条件  ...  #elif 条件  ...  #else  ...  #endif(非常重要)不然后面的代码全部无效

3、文件包含:

表示系统自带的文件,”“表示自定义文件

不允许循环包含,比如a.h包含b.h,b.h又包含a.h

◆知识点14:typedef 只是给类型起了个别名并不是定义新类型

struct Student{        int age;        char *name;  };  typedef struct Student Student;  等价于typedef struct Student{        int age;        char *name;  }Student;  也等价于typedef struct {        int age;        char *name;  }Student;

类似的给枚举类型起名

typedef enum Sex  {      Man,Women  }Sex;

下面这种情况的写法比较特殊

//下面是函数指针类型的自定义数据类型,返回值类型和参数类型要匹配

#includetypedef int (*TypeFuncPointer)(int, int);  int add(int a, intb)  {   return a + b;  }  int minus(int a, intb)  {      return a - b;  }  int main()  {   TypeFuncPointer p = add;//使用自定义类型   TypeFuncPointer p2 = minus;//使用自定义类型   printf(”add = %d“,p(1, 2));   printf(”minus = %d“,p2(1, 2));   return 0;  }

下面是定义结构体的指针类型

typedef struct Student{      int age;      char *name;  }*PtrStu;  //使用方式  Student stu ={18, ”zhangsan“};  PtrStu p = &stu;

宏定义也是可以为类型起名的

#define Integer int  相当于typedef int Integer

注意和typedef的区别

例如:

typedef char * String  #define String2char *

◆知识点15:static和 extern区别是能否进行跨文件访问

①.函数

②.变量

1、对函数的作用:

外部函数:定义的函数能被本文件和其他文件访问

内部函数:定义的函数只能被本文件访问

默认情况下,所有函数都是外部函数(相当于带关键字extern),所以可以省略

extern作用:

完整的定义和引用一个外部函数都加extern

引用时也是默认是外部函数所以也省略extern

static作用:定义一个内部函数

使用:static返回类型函数名(参数列表)

不能被其他文件调用

一个项目中,本文件的外部函数名不能和其他文件的外部函数同名(error)

本文件中的内部函数(static)可以和其他文件的函数名同名的

2、对变量的作用:

全局变量分为两种:

外部变量:定义的变量可以被其他文件访问

①.默认情况下所有的全局变量都是外部变量

②.不同文件中的同名外部变量都代表同一个

③.定义一个外部变量不加extern,声明才加extern

同样的声明是没有错误的

内部变量:定义的变量不能被其他文件访问

不同文件的同名内部变量互不影响

篇8:二级c语言知识点总结

关键词:全国计算机等级考试,二级C语言,上机操作,switch语句的说明

1 上机操作题

1.1 填空题

1.2 改错题

1.3 编程题

2 上机操作题答案

2.1 填空题

(1) N (2) N-1 (3) 0

2.2 改错题

(1) s=s+ (double) (n+1) /n; (2) return t;

2.3 编程题

3 知识点详析

switch语句的说明:

(1) switch、case、default、break均是关键词, 格式中大括号括起来的部分称为switch语句体。switch语句体中可以没有break语句和default语句。

(2) switch语句的括号中的表达式的值必须是整型或者字符型, 不能为实型。case后面的表达式可以是求得整型量和字符型量的常量表达式, 但常量表达式中不能含有变量。

(3) 执行过程中如果遇到break语句, 则跳出switch语句。case只作为一个入口, 如果执行完某一个case或者default语句块后没有遇到break, 则继续顺序往下执行, 直到遇到break语句或者switch语句体末位为止。

(4) 每一个switch语句中default最多只能有一个, 通常出现在switch的最后部分, 但也可以出现在case之间或所有case之前。

(5) 在case后的各常量表达式的值不能相同, 否则会出现错误。在case后, 允许有多个语句, 可以不用{}括起来。

参考文献

[1]路瑾铭.全国计算机等级考试过关宝典系列——教程 (二级C语言) .2011 (9)

上一篇:护士与手术医师有效沟通提高手术室护理质量下一篇:开盘活动方案