计算机二级C 想过必看

来源:互联网 发布:什么是程序员考试 编辑:程序博客网 时间:2024/05/01 07:41

计算机二级C     想过必看

2012910

20:42

1、在C语言中

基本上是:!>算术>关系>逻辑>条件>赋值>逗号

(1)、算术里“*、/”高于“+、-”;

(2)、关系里"<、<=、>、>="优先级相同都大于“==、!=”;

(3)、逻辑中!级别最高,&&次之,||逻辑或最低;

(4)、正号和负号高于算术运算符

(5)、“[]”高于“*”号 ;

(6)、指针中“*”和“&”级别相同;

(7)、“*”与“++”又相同,“—>”最高;

(8)、“.”高于“*”号;

(9)、“<<”高于“^”;

(10)、单目运算高于双目运算;

(11)、“()、[]、->、.”级别同,“!、~、++、--、+正、-负、*、&、(类型名)、sizeof级别同,前四者高于后者;

2、pow是乘方、fabs是取绝对值、sqrt是开根号,只要涉及到这三个头文件中就要加<math.h>;

3、必须记住的几个Ascii值:

 a  97                         A     65            空格  32

 b 98                         B     66              0 48

 z  122                        Z    90               9  57

规律:同一个字母相差32;

            Ascii中:小写>大写>数字>符号;

4、a++   整个式子a++不变,但是a更新加1    先使用a的值,用后再加1

    ++a   整个式子++a增1,而且a更新加1    先将a加1后再使用

5、scanf 会将空格作为分隔符

       %c、putchar、gets 时:空格、Tab和回车符都将被作为分隔符被读入;

       %s  输入时:空格、Tab和回车符都将被作为分隔符不被读入;

注意:getchar只能输入一个字符;

6、main是主函数名,C语言中规定必须main作为主函数名;

     每一个可执行的C程序中,都必须有一个且只能有一个主函数;

     一个C程序中可以包含任意多个不同名的函数,但只能有一个主函数;

     空语句,语法上认为一条语句;

7、只有十进制数可以是负数,八进制和十六进制只能是整数;

8、末尾带u或U的表示无符号常量,而无符号常量不能表示成小于0的负数;-200u 是不对的;

9、short[int]数值范围是-32768~32767  

   例如:shortint a=32769 (×) 改:long int a=32769 改的时候范围不能改变;

 

11、2.0==2.0 不能比较,  因为小数类型的有double和float 类型不确定;

         2=2 可以完全正确

12、求余运算两边只能为整形,求除运算可整形也可实型;

       1.0/2.0=0.5    1/2=0 类型一致,不一致自动转换

13、赋值运算左侧只能是变量,不能是常量或表达式

                   a=b=7 √     a=b+2=7  ×

14、自加或自减本身就是一种赋值运算,可整形可实型,但不能是常量或表达式;负号与自加运算符优先级相同,自由至左计算;

                -i++ 相当于-(i++)

15、printf可以没有输出项;

16、scanf从终端键盘上读入数据  格式:scanf("%d%d",&a,&b);

判断:scanf("%6.3f",&a);  ×     因为输入不可以指定小数位;

    scanf可以指定正整数输入所占的宽度,但不能对实数指定小数位宽度;

17、在VC6.0下,输入short型整数,格式控制要求用%hd;要输入double型数据格式控制必须用%lf(或le),否则数据不能正确输入; 

    int k, float m, double n;

    scanf("%d%f%le",&k,&m,&n);

18、输入一个double型数,使该数保留小数点后两位,对第三位小树进行四舍五入,然后输出此数

 #include <stdio.h>

 main()

{ double x;

 printf("Enter x:\n");

 scanf("%lf",&x);

 printf("(1)x=%lf\n",x);

 x=x*100;

 x=x+0.5;

 x=(int)x;

 x=x/100;

 Printf("(2)x=%lf\n",x);

}

19、逻辑值有两个(0和1);

20、循环中 switch()  ()不能省;

         if(a>b)  a=b;   分号不能省;

21、如何破解嵌套:

        先执行一次外循环;

        再执行一次内循环;

        直到内循环为假,再去执行外循环,都为假使退出;

22、break是跳出switch语句,也可用break在循环中终止本层循环体,从而提前结束本层循环;

          continue是跳过本次循环中余下尚未执行的语句,即:结束本层循环

注意: break是语句和循环体都不做,包括下面也不做,

               continue并没有使整个循环终止,仅是跳过本次的;

在for中,遇到continue后,跳过循环体中余下语句,去做“表达式3”,求值之后再与表达式2决定循环是否再次执行;

23、字符常量只能包含一个字符,因此'abc'是非法的。

         字符常量在内存中占一个字节,所有字符常量都作为整型量来处理。

          \ddd三位八进制 代表一个ASCII字符,  '\101' 为A;

          \xhh三位十六进制代表一个ASCII字符, '\x6d'为m;

24、字符串是由双引号括起来的一串字符,

       “ ≡”表示等价,相当于数学中的“=”

25、字符与字符参与运算,结果是数值; '9'-'0'≡57-48≡9

          数值与字符参与运算,结果是字符;4+'0'≡4+48≡52≡'4'

26字符变量用关键字char定义,定义同时可赋值  char ch1='x';

         %d输出ASCII码值         char ch='A' ;  printf("%d%c",ch,ch);

         %c输出它的字符;

27、char a,b,c;  scanf("%c%c%c",&a,&b,&c);

       注意:当使用%c一个紧接一个时,在输入字符时,字符经不应有间隔符,这时空格、回车符、Tab都将作为字符读入;

如:输入 TH<CR> 则变量a中存放字符T,b中存放字符H,c中为回车符

                    E<CR>

 注意:当交叉输入数值数据和字符数据时:

              若是%c%d中间必须输入间隔符,其他不用输;

              若是%d%c中间不许有间隔 

28putchar 用于输出字符, putchar(ch);独立语句, putchar('Y'); 终端显示Y;

         getchar   用于输入字符,ch=getchar();

         getchar 后的一对圆括号内没有参数,但这一对圆括号不能省, getchar ()函数从终端读入一个字符作为函数值。以上是把读入的一个字符赋给变量ch,在输入时空格、回车符、都将作为字符读入;

29、要求给c1、c2分别输入字符A和B,给a1,a2分别输入7.29和101.298,从键盘正确输入数据的形式是:


 30、函数若没有返回值,则必须把函数定义为void类型,函数应该先定义再使用;

31、函数调用的步骤:

   1>、无论书上题目多长,一律从主函数main开始看;

2>、遇到某函数时,找相应的函数名;

33、求地址运算符&只能用于变量和数组元素,不能用于表达式、常量或register的变量;

         表达式q=&(k+1)是错误的, &必须放在运算对象左边,且运算对象类型必须与指针变量的基类型相同;

34、当q=&k时,scanf("%d",&k);和scanf("%d",q);是等价的;

          P=NULL 等价于P='\0';或P=0;指针P并不是指向地址为0的存储单元,而是具有一个确切的值——“空”;

35、当指针变量中存放了一个确切的地址值时,可用“间接访问运算符*”通过指针来引用该地址的存储单元;

       int *p,i=10,j;  p=&i; 赋值语句是:j=*p;

    是指p所指存储单元(i)的内容即10,赋予变量j;*p代表p所指的变量i;以上语句等价于j=i;    

   

36、j=*(&i)   *和&优先级同且有又至左,所以括号可省略为j=*&i;

37、j=*p+1  指针变量p所指存储单元中内容的值加1后再赋给变量j;

38、*p=100; *p=*p+1; 取指针变量p所指的存储单元的值加1,再放入p所指的存储单元中。显然,当*p出现在赋值号左边时,代表的是指针所指的存储单元;当*p出现在赋值号右边时,代表的是指针所指的存储单元的内容。

 即:以“=”赋值号为界

            *p    =    *p+1

左为指针         右为指针所指存储单元的内容

 *p    =    *p+1  等价于 *p+=1  或 ++*p或(*p)++

39、“++”和“*”级别同,自由至左,所以++ *p相当于++ (*p)

 (*p)++  p先取存储单元的 值,然后增1作为表达式的值;

 *p++  先计算*p作为表达式的值,然后使指针变量p本身增1,*p++移动了指针;

41、常量不能直接赋给指针 *a=10;是错误的;

42、一个数组占有一串连续的存储单元,在C中,一个数组是不能整体引用;

数组赋值之间用逗号隔开,当少于元素个数时,自动补0.

43、二维数组第一个“[]"可省,第二个不可以省;

44、若有定义:int *p[3],a[3][2],I,j;

 在这里,一对“[]”高于“*”,因此p先于[]结合,构成p[3],说明p是一个数组名,系统将为它开辟3个连续的存储单元,在它前面的*号则说明了p是指针类型,它的每个元素都是基类型为int的指针;

45、在C中,无论是指针数组还是行指针,都是按行存放;

46、若有以下定义:int a[3][2],(*p)[2];

   在说明符(*p)[2]中,由于一对圆括号的存在,所以*先于P结合,说明p是一个指针变量,然后再与说明符[2]结合,说明指针变量p的基类型是一个包含有两个int元素的数组。

47、'\0'是一个转义字符,称为'空值',它的ASCII代码值为0;'\0'作为标志占用存储空间,但不计入串的实际长度;

字符串“abc”的存储为:

a

b

c

\0               

 占4个空间  sizeof为4  但实际长度strlen为3;

48、在scanf中使用说明符%s,可以实现字符串的整体输入;

         当%s格式符输入字符时,空格、回车都将作为分隔符不被读入;

           A˽BCDEFG<CR> 将存入的是A,而不是A˽BCDEFG<CR>;

49、字符串常用的函数:

<1>、字符串赋值 strcpy    strcpy (s1,s2)

         将s2所指的字符串的内容赋值到s1所指空间中,返回s1的值,即串首地址

<2>、连接函数 strcat    strcat (s1,s2)

             将s2所指的字符串的内容连接到s1所指字符串后面,并自动覆盖s1串末尾的\0,返回s!的地址值;

<3>、求字符串长度  strlen   strlen(s) 这一长度不包括串尾的结束标志\0;

<4>、字符串比较函数   strcmp   strcmp (s1,s2);

       若s1>s2 函数值大于0

       若s1<s2 函数值小于0

       若s1=s2 函数值等于0

        比较方法:依次对s1和s2中对应位置上的字符两两比较,刚出现第一对不相同的字符时,即由这两个字符决定串的大小;

50、(1)、用户定义类型typedef:对已有的类型另外说明一个新的类型;

         (2)、结构图(struct):把具有相互关系的数据组成一个有机的整体;

         (3)、共用体(union):又称联合体,使几种不同类型的变量共用一段存储空间;

                                                                                                                         

 

 

 

 

 

 

 

 

 

 

 

原创粉丝点击