555

*任何表达式语句都是表达式加分号组成的。

*C语言程序是从源文件的第一条语句开始执行的。(x) 从main函数开始执行

*C 语言中的变量名区分大小写。

*运算符优先级以及结合方式

   1.初等运算符:()[ ]  .(取结构体变量成员) ->(指针引用结构体变量成员)

   2.单目运算符  + - ++ -- ~ *(取指针内容)&(取地址)sizeof(长度运算符)!

   3.算术运算  * / %

   4.算术运算  + -

   5.移位运算 << >>

   6.关系运算 < > <= >=

   7.==  !=

   8.位逻辑运算 &

   9.                    ^   如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。

   10.                  |

   11.                      &&

   12.                     || 

   13.条件运算 ?:

   14.赋值运算 = += *= /= 

   15.逗号运算符 ,

*关于逗号运算符:求解过程先表达式1,后表达式2,整个表达式值是表达式2的值,如:(3+5,6+8)的值是14

* 'a'的ASCII码是97 ,’A‘的是65,'0'是48

*  if(a),表示a为真时执行后续语句(即a为非零的时候)

    if(!a),表示a为假时执行后续语句(即a为零的时候)

* 表达式 (j=3, j++) 的值是 3

* 整数的表示:八进制(开头是0) 十六进制(0-9,a-f,A-F,首位数字前有ox) 十进制

*  If x is a float variable, the value of expression x=10/4 is 2.0

*  位运算(未看懂)

&

按位与
如果两个相应的二进制位都为1,则该位的结果值为1,否则为0


|

按位或
两个相应的二进制位中只要有一个为1,该位的结果值为1


^

按位异或
若参加运算的两个二进制位值相同则为0,否则为1


~

取反
~是一元运算符,用来对一个二进制数按位取反,即将0变1,将1


<<

左移
用来将一个数的各二进制位全部左移N位,右补0


>>

右移
将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数,                 高位补0
*  int a=10, b=20; the value of expression!a is  1。

*  

According to the declaration:int a; the value of expression (a&3)==(a%4) is  1.(疑问)

 

表达式(a&3)==(a%4)的值是1
因为无论a的值为多少a&3的结果只保留a的最后2位
如a的值为17,它变为二进制为10001,而3为00011,它们相与的结果只有a的1和2位数字保留下来也就是01,因为与1相与就保留原数据,与0相与就变0 如 a&1=a a&0=0
而a%4也是保留a的最后2位,因为只有最后2位的值为3,小于4,其它都>4
所以上面表达式是成立的,所以为1

*若变量已正确定义并赋值,符合C语言语法的表达式是 A)a=a+7; B)a=7+b+c,a++ C)int(12.3%4) D)a=a+7=c+b
  B正确

正确答案是 B;
首先 是显而易见的错误选项C跟D:
C 求余运算(%)只对整数有效,浮点型数据(12.3)是没有 求余运算的。
D 赋值运算(=)的左边只能是 变量(a),不能为 表达式(a+7)。

下面看看选项B 为什么也符合C语言:
B 项为逗号运算符(表达式1,表达式2,...表达式n),其中最后一个表达式(表达式n)最为整个逗号运算的结果(即 B项的最后结果为 a++);而在此之前,逗号运算符会先对前面的所有表达进行编译操作(即先执行a=7+b+c),最后才将表达式n 作为结果返回。

下面再看看 为什么 A 不符合要求:
A 毋庸置疑,A 的写法完全符合C语言要求,编译绝不会出错。但是 题目要求 却是 “表达式”;
C语言中,语句是由 表达式 加 语句结束符(分号;)组成的。A选项中结尾含有分号,也就是说,A选项 实际上是 C语言语句,而不是表达式;B 选项没有语句结束符,所以 B选项是 表达式,符合题目要求。

*  Among the following expressions in C,  (4) is correct. (2分)(疑问)

  1. 0.5%2
  2. 3&(0.5+0.5)
  3. 4.6<<2
  4. 2==(3/2)

关于字符常量

字符常量有两种:
一种是普通字符,即用单撇号括起来的一个字符,如'b' ,'y',‘?’。字符常量在储存在计算机的储存单元中时,是以其代码(一般采用ASCII代码)储存的。另一种是转义字符,即特殊字符常量。转移字符是C语言中表示字符的一种特殊形式,其含义是将反斜杠后面的字符转换成另外的意义。
使用字符常量需要注意以下几点:
(1)字符常量只能用单撇号括起来,不能使用单引号或其他括号。
(2)字符常量中只能包括一个字符,不能是字符串。
(3)字符常量是区分大小写的。
(4)单撇号只是界限符,不属于字符常量中旳一部分,字符常量只能是一个字符,不包括单撇号。
(5)单撇号里面可以是数字、字母等C语言字符集中除’和\以外所有可现实的单个字符,但是数字被定义为字符之后则不能参与数值运算。

合法的:'b' ,'y',‘?’,'\n','\b','\a','\t',’\x43‘ ,

不合法:”\0”(字符串不需要写结束符。)

According to the declaration: char ch; the assignment expression ______is correct.
A.ch=’\412’ B.ch=255 C.ch=’\08’ D.ch=’\’

选B(需确认
A中'\412'表示八进制的412,转化为十进制是266,超出了ascII的范围(0~255)
C,八进制不可能有8
D '\' 表示错误,应该是'\\'表示斜杠‘\’

*  2,900不是正确的整形常量

*  若变量已正确定义并赋值,表达式( 2)不符合C语言语法。 (2分)

  1. 5&&3
  2. int(5.5)         (int)5.5为强制类型转换
  3. +a

  4.a=b=c=5

*  -k++ 等价于-(k++).

*  合法标识符由字母、下划线、数字这三个方面组成,但开头必须是字母或下划线。另外,关键字不能是标识符,如main等。

*  已知int i, a; 执行语句i=(a=2*3,a*5),a+6;后,变量i的值是  30

*  Which one is completely correct among the following program fragments? (c)    (疑问)

*  设xyt均为int型变量,则执行语句:x=y=3; t= ++x || ++y; 后,y的值为  3.

*   逻辑运算符两侧运算对象的数据类型(可以是任何类型的数据)

 

 

  1. int *p; scanf("%d", &p);
  2. int *p; scanf("%d", p);
  3. int k, *p=&k; scanf("%d", p);
  4. int k, *p; *p= &k; scanf("%d", p);
int m=20; while (m=0) m=m++;

则下面描述中正确的是(3 )。 (2分)

  1. while 循环执行 10 次
  2. 循环是无限循环
  3. 循环体语句一次也不执行
  4. 循环体语句执行一次

*  C语言中函数返回值的类型是由(定义函数时所指定的函数类型 )决定的

*   函数的定义不能嵌套,但函数调用可以嵌套

*  关于return语句

  1. 被调用函数中可以不用 return 语句
  2. 被调用函数中可以使用多个 return 语句
  3. 被调用函数中,如果有返回值,就一定要有 return 语句

*  

According to the declaration: int p[5], *a[5];the expression ( 3 )is correct. (2分)

  1. p=a
  2. p[0] = a
  3. *(a+1)=p
  4. a[0]=2

*  

对于以下结构定义,++p->str中的++加在___1_。 (2分)

struct { 
    int len; 
    char *str;
} *p;
  1. 指针str上
  2. 指针p上
  3. str指的内容上
  4. 以上均不是

*  

According to the declaration: int (*p)[10];, p is a pointer;

*  

In the following declarations, the correct assignment expression is _3_. (2分)

int *p[3], a[3];
  1. p = a
  2. p = &a[0]
  3. *p = a
  4. p[0] = *a

*  

有说明语句int a[4][5];,则a[2]+3表示__。 (2分)

  1. a数组行下标为2、列下标为3的元素的地址

*  

According to the declaration: int a[10], *p=a; the expression (4)is wrong. (2分)

  1. a[9]
  2. p[5]    (重点)
  3. *p++
  4. a++

*  设变量定义为 int a[2]={1,3}, *p=&a[0]+1;,则*p的值是 3。

*  printf("%f%%",1.0/3);输出为 0.333333%

   最后二个连续的%%就是实际输出一个%符号  

*  若有定义和语句: int a; char c; float f; scanf("%d,%c,%f",&a,&c,&f);

   若通过键盘输入: 10,A,12.5 则a=10,c='A',f=12.5。(注意字符)

*  预处理命令的前面必须加一个“#”号。

*  在对数组全部元素赋值,行可省,列不可省。

* 文件指针和位置指针都是随着文件的读写操作在不断改变。 (x)

     位置指针指向文件内部的字节位置,随着文件的读取会移动

     文件指针如果不重新赋值将不会改变指向别的文件。

*  任何表达式语句都是表达式加分号组成的

*  在switch语句中,每一个的case常量表达式的值不可以相同。

*  C语言函数返回类型的默认定义类型是int

*  可以用一个指针变量指向一个函数,然后通过该指针变量调用此函数.

*  函数形参的存储单元是动态分配的

*  结构体变量可以作数组元素

*  二进制文件可以随机存取,文本文件顺序存取

*  函数strcmp从头至尾顺序地将其对应字符比较,遇到两个字符不等时,两个字符相减得到一个int型值,两个字符串完全相同  时,则返回0。

*  C语言的书写格式会影响程序的可读性

*  if(a=5) 是允许的

*  函数返回值的类型是由在定义函数时所指定的函数类型决定的

*  逻辑表达式的值只能为1或0

*  变量被定义后 , 它不仅有一个确定的地址值 , 而且还会有一个确定的本身值(x)

*  结构体数组中可以包含不同结构体类型的结构体变量  (x)

*  以“r”方式打开一个文件时,文件指针指向文件首

*  使用static k定义的变量属于静态变量

*  文件指针用于指向文件,文件只有被打开后才有对应的文件指针

*  在switch语句中,多个case可以共用一组执行语句。

* 表达式语句和表达式没有什么区别

 在程序设计语言中,语句指的是执行单元,通常以行为单位,表达式指的是可用于计算的式子

,即可能产生一个值的式子。语句可以包含有表达式,表达式也可以单独形成一个语句。

*  fseek函数一般用于文本文件  (x)

*  枚举类型中的元素都具有一个整型值

*  在多层循环中, 一个break语句只向外跳一层。

*  局部变量如果没有指定初值,则其初值不确定。

*  文件的读函数是从输入文件中读取信息,并存放在内存中。

*  结构体类型本身不占用内存空间,结构体变量占用内存空间

*  char *s="C Language";表示s是一个指向字符串的指针变量,把字符串的首地址赋予s

*  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

*任何表达式语句都是表达式加分号组成的。

*C语言程序是从源文件的第一条语句开始执行的。(x) 从main函数开始执行

*C 语言中的变量名区分大小写。

*运算符优先级以及结合方式

   1.初等运算符:()[ ]  .(取结构体变量成员) ->(指针引用结构体变量成员)

   2.单目运算符  + - ++ -- ~ *(取指针内容)&(取地址)sizeof(长度运算符)!

   3.算术运算  * / %

   4.算术运算  + -

   5.移位运算 << >>

   6.关系运算 < > <= >=

   7.==  !=

   8.位逻辑运算 &

   9.                    ^   如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。

   10.                  |

   11.                      &&

   12.                     || 

   13.条件运算 ?:

   14.赋值运算 = += *= /= 

   15.逗号运算符 ,

*关于逗号运算符:求解过程先表达式1,后表达式2,整个表达式值是表达式2的值,如:(3+5,6+8)的值是14

* 'a'的ASCII码是97 ,’A‘的是65,'0'是48

*  if(a),表示a为真时执行后续语句(即a为非零的时候)

    if(!a),表示a为假时执行后续语句(即a为零的时候)

* 表达式 (j=3, j++) 的值是 3

* 整数的表示:八进制(开头是0) 十六进制(0-9,a-f,A-F,首位数字前有ox) 十进制

*  If x is a float variable, the value of expression x=10/4 is 2.0

*  位运算(未看懂)

&

按位与
如果两个相应的二进制位都为1,则该位的结果值为1,否则为0


|

按位或
两个相应的二进制位中只要有一个为1,该位的结果值为1


^

按位异或
若参加运算的两个二进制位值相同则为0,否则为1


~

取反
~是一元运算符,用来对一个二进制数按位取反,即将0变1,将1


<<

左移
用来将一个数的各二进制位全部左移N位,右补0


>>

右移
将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数,                 高位补0
*  int a=10, b=20; the value of expression!a is  1。

*  

According to the declaration:int a; the value of expression (a&3)==(a%4) is  1.(疑问)

 

表达式(a&3)==(a%4)的值是1
因为无论a的值为多少a&3的结果只保留a的最后2位
如a的值为17,它变为二进制为10001,而3为00011,它们相与的结果只有a的1和2位数字保留下来也就是01,因为与1相与就保留原数据,与0相与就变0 如 a&1=a a&0=0
而a%4也是保留a的最后2位,因为只有最后2位的值为3,小于4,其它都>4
所以上面表达式是成立的,所以为1

*若变量已正确定义并赋值,符合C语言语法的表达式是 A)a=a+7; B)a=7+b+c,a++ C)int(12.3%4) D)a=a+7=c+b
  B正确

正确答案是 B;
首先 是显而易见的错误选项C跟D:
C 求余运算(%)只对整数有效,浮点型数据(12.3)是没有 求余运算的。
D 赋值运算(=)的左边只能是 变量(a),不能为 表达式(a+7)。

下面看看选项B 为什么也符合C语言:
B 项为逗号运算符(表达式1,表达式2,...表达式n),其中最后一个表达式(表达式n)最为整个逗号运算的结果(即 B项的最后结果为 a++);而在此之前,逗号运算符会先对前面的所有表达进行编译操作(即先执行a=7+b+c),最后才将表达式n 作为结果返回。

下面再看看 为什么 A 不符合要求:
A 毋庸置疑,A 的写法完全符合C语言要求,编译绝不会出错。但是 题目要求 却是 “表达式”;
C语言中,语句是由 表达式 加 语句结束符(分号;)组成的。A选项中结尾含有分号,也就是说,A选项 实际上是 C语言语句,而不是表达式;B 选项没有语句结束符,所以 B选项是 表达式,符合题目要求。

*  Among the following expressions in C,  (4) is correct. (2分)(疑问)

  1. 0.5%2
  2. 3&(0.5+0.5)
  3. 4.6<<2
  4. 2==(3/2)

关于字符常量

字符常量有两种:
一种是普通字符,即用单撇号括起来的一个字符,如'b' ,'y',‘?’。字符常量在储存在计算机的储存单元中时,是以其代码(一般采用ASCII代码)储存的。另一种是转义字符,即特殊字符常量。转移字符是C语言中表示字符的一种特殊形式,其含义是将反斜杠后面的字符转换成另外的意义。
使用字符常量需要注意以下几点:
(1)字符常量只能用单撇号括起来,不能使用单引号或其他括号。
(2)字符常量中只能包括一个字符,不能是字符串。
(3)字符常量是区分大小写的。
(4)单撇号只是界限符,不属于字符常量中旳一部分,字符常量只能是一个字符,不包括单撇号。
(5)单撇号里面可以是数字、字母等C语言字符集中除’和\以外所有可现实的单个字符,但是数字被定义为字符之后则不能参与数值运算。

合法的:'b' ,'y',‘?’,'\n','\b','\a','\t',’\x43‘ ,

不合法:”\0”(字符串不需要写结束符。)

According to the declaration: char ch; the assignment expression ______is correct.
A.ch=’\412’ B.ch=255 C.ch=’\08’ D.ch=’\’

选B(需确认
A中'\412'表示八进制的412,转化为十进制是266,超出了ascII的范围(0~255)
C,八进制不可能有8
D '\' 表示错误,应该是'\\'表示斜杠‘\’

*  2,900不是正确的整形常量

*  若变量已正确定义并赋值,表达式( 2)不符合C语言语法。 (2分)

  1. 5&&3
  2. int(5.5)         (int)5.5为强制类型转换
  3. +a

  4.a=b=c=5

*  -k++ 等价于-(k++).

*  合法标识符由字母、下划线、数字这三个方面组成,但开头必须是字母或下划线。另外,关键字不能是标识符,如main等。

*  已知int i, a; 执行语句i=(a=2*3,a*5),a+6;后,变量i的值是  30

*  Which one is completely correct among the following program fragments? (c)    (疑问)

*  设xyt均为int型变量,则执行语句:x=y=3; t= ++x || ++y; 后,y的值为  3.

*   逻辑运算符两侧运算对象的数据类型(可以是任何类型的数据)

 

 

  1. int *p; scanf("%d", &p);
  2. int *p; scanf("%d", p);
  3. int k, *p=&k; scanf("%d", p);
  4. int k, *p; *p= &k; scanf("%d", p);
int m=20; while (m=0) m=m++;

则下面描述中正确的是(3 )。 (2分)

  1. while 循环执行 10 次
  2. 循环是无限循环
  3. 循环体语句一次也不执行
  4. 循环体语句执行一次

*  C语言中函数返回值的类型是由(定义函数时所指定的函数类型 )决定的

*   函数的定义不能嵌套,但函数调用可以嵌套

*  关于return语句

  1. 被调用函数中可以不用 return 语句
  2. 被调用函数中可以使用多个 return 语句
  3. 被调用函数中,如果有返回值,就一定要有 return 语句

*  

According to the declaration: int p[5], *a[5];the expression ( 3 )is correct. (2分)

  1. p=a
  2. p[0] = a
  3. *(a+1)=p
  4. a[0]=2

*  

对于以下结构定义,++p->str中的++加在___1_。 (2分)

struct { 
    int len; 
    char *str;
} *p;
  1. 指针str上
  2. 指针p上
  3. str指的内容上
  4. 以上均不是

*  

According to the declaration: int (*p)[10];, p is a pointer;

*  

In the following declarations, the correct assignment expression is _3_. (2分)

int *p[3], a[3];
  1. p = a
  2. p = &a[0]
  3. *p = a
  4. p[0] = *a

*  

有说明语句int a[4][5];,则a[2]+3表示__。 (2分)

  1. a数组行下标为2、列下标为3的元素的地址

*  

According to the declaration: int a[10], *p=a; the expression (4)is wrong. (2分)

  1. a[9]
  2. p[5]    (重点)
  3. *p++
  4. a++

*  设变量定义为 int a[2]={1,3}, *p=&a[0]+1;,则*p的值是 3。

*  printf("%f%%",1.0/3);输出为 0.333333%

   最后二个连续的%%就是实际输出一个%符号  

*  若有定义和语句: int a; char c; float f; scanf("%d,%c,%f",&a,&c,&f);

   若通过键盘输入: 10,A,12.5 则a=10,c='A',f=12.5。(注意字符)

*  预处理命令的前面必须加一个“#”号。

*  在对数组全部元素赋值,行可省,列不可省。

* 文件指针和位置指针都是随着文件的读写操作在不断改变。 (x)

     位置指针指向文件内部的字节位置,随着文件的读取会移动

     文件指针如果不重新赋值将不会改变指向别的文件。

*  任何表达式语句都是表达式加分号组成的

*  在switch语句中,每一个的case常量表达式的值不可以相同。

*  C语言函数返回类型的默认定义类型是int

*  可以用一个指针变量指向一个函数,然后通过该指针变量调用此函数.

*  函数形参的存储单元是动态分配的

*  结构体变量可以作数组元素

*  二进制文件可以随机存取,文本文件顺序存取

*  函数strcmp从头至尾顺序地将其对应字符比较,遇到两个字符不等时,两个字符相减得到一个int型值,两个字符串完全相同  时,则返回0。

*  C语言的书写格式会影响程序的可读性

*  if(a=5) 是允许的

*  函数返回值的类型是由在定义函数时所指定的函数类型决定的

*  逻辑表达式的值只能为1或0

*  变量被定义后 , 它不仅有一个确定的地址值 , 而且还会有一个确定的本身值(x)

*  结构体数组中可以包含不同结构体类型的结构体变量  (x)

*  以“r”方式打开一个文件时,文件指针指向文件首

*  使用static k定义的变量属于静态变量

*  文件指针用于指向文件,文件只有被打开后才有对应的文件指针

*  在switch语句中,多个case可以共用一组执行语句。

* 表达式语句和表达式没有什么区别

 在程序设计语言中,语句指的是执行单元,通常以行为单位,表达式指的是可用于计算的式子

,即可能产生一个值的式子。语句可以包含有表达式,表达式也可以单独形成一个语句。

*  fseek函数一般用于文本文件  (x)

*  枚举类型中的元素都具有一个整型值

*  在多层循环中, 一个break语句只向外跳一层。

*  局部变量如果没有指定初值,则其初值不确定。

*  文件的读函数是从输入文件中读取信息,并存放在内存中。

*  结构体类型本身不占用内存空间,结构体变量占用内存空间

*  char *s="C Language";表示s是一个指向字符串的指针变量,把字符串的首地址赋予s

*  

 

 

 

 

 

 

 

 

 

 

 

 

*任何表达式语句都是表达式加分号组成的。

*C语言程序是从源文件的第一条语句开始执行的。(x) 从main函数开始执行

*C 语言中的变量名区分大小写。

*运算符优先级以及结合方式

   1.初等运算符:()[ ]  .(取结构体变量成员) ->(指针引用结构体变量成员)

   2.单目运算符  + - ++ -- ~ *(取指针内容)&(取地址)sizeof(长度运算符)!

   3.算术运算  * / %

   4.算术运算  + -

   5.移位运算 << >>

   6.关系运算 < > <= >=

   7.==  !=

   8.位逻辑运算 &

   9.                    ^   如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。

   10.                  |

   11.                      &&

   12.                     || 

   13.条件运算 ?:

   14.赋值运算 = += *= /= 

   15.逗号运算符 ,

*关于逗号运算符:求解过程先表达式1,后表达式2,整个表达式值是表达式2的值,如:(3+5,6+8)的值是14

* 'a'的ASCII码是97 ,’A‘的是65,'0'是48

*  if(a),表示a为真时执行后续语句(即a为非零的时候)

    if(!a),表示a为假时执行后续语句(即a为零的时候)

* 表达式 (j=3, j++) 的值是 3

* 整数的表示:八进制(开头是0) 十六进制(0-9,a-f,A-F,首位数字前有ox) 十进制

*  If x is a float variable, the value of expression x=10/4 is 2.0

*  位运算(未看懂)

&

按位与
如果两个相应的二进制位都为1,则该位的结果值为1,否则为0


|

按位或
两个相应的二进制位中只要有一个为1,该位的结果值为1


^

按位异或
若参加运算的两个二进制位值相同则为0,否则为1


~

取反
~是一元运算符,用来对一个二进制数按位取反,即将0变1,将1


<<

左移
用来将一个数的各二进制位全部左移N位,右补0


>>

右移
将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数,                 高位补0
*  int a=10, b=20; the value of expression!a is  1。

*  

According to the declaration:int a; the value of expression (a&3)==(a%4) is  1.(疑问)

 

表达式(a&3)==(a%4)的值是1
因为无论a的值为多少a&3的结果只保留a的最后2位
如a的值为17,它变为二进制为10001,而3为00011,它们相与的结果只有a的1和2位数字保留下来也就是01,因为与1相与就保留原数据,与0相与就变0 如 a&1=a a&0=0
而a%4也是保留a的最后2位,因为只有最后2位的值为3,小于4,其它都>4
所以上面表达式是成立的,所以为1

*若变量已正确定义并赋值,符合C语言语法的表达式是 A)a=a+7; B)a=7+b+c,a++ C)int(12.3%4) D)a=a+7=c+b
  B正确

正确答案是 B;
首先 是显而易见的错误选项C跟D:
C 求余运算(%)只对整数有效,浮点型数据(12.3)是没有 求余运算的。
D 赋值运算(=)的左边只能是 变量(a),不能为 表达式(a+7)。

下面看看选项B 为什么也符合C语言:
B 项为逗号运算符(表达式1,表达式2,...表达式n),其中最后一个表达式(表达式n)最为整个逗号运算的结果(即 B项的最后结果为 a++);而在此之前,逗号运算符会先对前面的所有表达进行编译操作(即先执行a=7+b+c),最后才将表达式n 作为结果返回。

下面再看看 为什么 A 不符合要求:
A 毋庸置疑,A 的写法完全符合C语言要求,编译绝不会出错。但是 题目要求 却是 “表达式”;
C语言中,语句是由 表达式 加 语句结束符(分号;)组成的。A选项中结尾含有分号,也就是说,A选项 实际上是 C语言语句,而不是表达式;B 选项没有语句结束符,所以 B选项是 表达式,符合题目要求。

*  Among the following expressions in C,  (4) is correct. (2分)(疑问)

  1. 0.5%2
  2. 3&(0.5+0.5)
  3. 4.6<<2
  4. 2==(3/2)

关于字符常量

字符常量有两种:
一种是普通字符,即用单撇号括起来的一个字符,如'b' ,'y',‘?’。字符常量在储存在计算机的储存单元中时,是以其代码(一般采用ASCII代码)储存的。另一种是转义字符,即特殊字符常量。转移字符是C语言中表示字符的一种特殊形式,其含义是将反斜杠后面的字符转换成另外的意义。
使用字符常量需要注意以下几点:
(1)字符常量只能用单撇号括起来,不能使用单引号或其他括号。
(2)字符常量中只能包括一个字符,不能是字符串。
(3)字符常量是区分大小写的。
(4)单撇号只是界限符,不属于字符常量中旳一部分,字符常量只能是一个字符,不包括单撇号。
(5)单撇号里面可以是数字、字母等C语言字符集中除’和\以外所有可现实的单个字符,但是数字被定义为字符之后则不能参与数值运算。

合法的:'b' ,'y',‘?’,'\n','\b','\a','\t',’\x43‘ ,

不合法:”\0”(字符串不需要写结束符。)

According to the declaration: char ch; the assignment expression ______is correct.
A.ch=’\412’ B.ch=255 C.ch=’\08’ D.ch=’\’

选B(需确认
A中'\412'表示八进制的412,转化为十进制是266,超出了ascII的范围(0~255)
C,八进制不可能有8
D '\' 表示错误,应该是'\\'表示斜杠‘\’

*  2,900不是正确的整形常量

*  若变量已正确定义并赋值,表达式( 2)不符合C语言语法。 (2分)

  1. 5&&3
  2. int(5.5)         (int)5.5为强制类型转换
  3. +a

  4.a=b=c=5

*  -k++ 等价于-(k++).

*  合法标识符由字母、下划线、数字这三个方面组成,但开头必须是字母或下划线。另外,关键字不能是标识符,如main等。

*  已知int i, a; 执行语句i=(a=2*3,a*5),a+6;后,变量i的值是  30

*  Which one is completely correct among the following program fragments? (c)    (疑问)

*  设xyt均为int型变量,则执行语句:x=y=3; t= ++x || ++y; 后,y的值为  3.

*   逻辑运算符两侧运算对象的数据类型(可以是任何类型的数据)

 

 

  1. int *p; scanf("%d", &p);
  2. int *p; scanf("%d", p);
  3. int k, *p=&k; scanf("%d", p);
  4. int k, *p; *p= &k; scanf("%d", p);
int m=20; while (m=0) m=m++;

则下面描述中正确的是(3 )。 (2分)

  1. while 循环执行 10 次
  2. 循环是无限循环
  3. 循环体语句一次也不执行
  4. 循环体语句执行一次

*  C语言中函数返回值的类型是由(定义函数时所指定的函数类型 )决定的

*   函数的定义不能嵌套,但函数调用可以嵌套

*  关于return语句

  1. 被调用函数中可以不用 return 语句
  2. 被调用函数中可以使用多个 return 语句
  3. 被调用函数中,如果有返回值,就一定要有 return 语句

*  

According to the declaration: int p[5], *a[5];the expression ( 3 )is correct. (2分)

  1. p=a
  2. p[0] = a
  3. *(a+1)=p
  4. a[0]=2

*  

对于以下结构定义,++p->str中的++加在___1_。 (2分)

struct { 
    int len; 
    char *str;
} *p;
  1. 指针str上
  2. 指针p上
  3. str指的内容上
  4. 以上均不是

*  

According to the declaration: int (*p)[10];, p is a pointer;

*  

In the following declarations, the correct assignment expression is _3_. (2分)

int *p[3], a[3];
  1. p = a
  2. p = &a[0]
  3. *p = a
  4. p[0] = *a

*  

有说明语句int a[4][5];,则a[2]+3表示__。 (2分)

  1. a数组行下标为2、列下标为3的元素的地址

*  

According to the declaration: int a[10], *p=a; the expression (4)is wrong. (2分)

  1. a[9]
  2. p[5]    (重点)
  3. *p++
  4. a++

*  设变量定义为 int a[2]={1,3}, *p=&a[0]+1;,则*p的值是 3。

*  printf("%f%%",1.0/3);输出为 0.333333%

   最后二个连续的%%就是实际输出一个%符号  

*  若有定义和语句: int a; char c; float f; scanf("%d,%c,%f",&a,&c,&f);

   若通过键盘输入: 10,A,12.5 则a=10,c='A',f=12.5。(注意字符)

*  预处理命令的前面必须加一个“#”号。

*  在对数组全部元素赋值,行可省,列不可省。

* 文件指针和位置指针都是随着文件的读写操作在不断改变。 (x)

     位置指针指向文件内部的字节位置,随着文件的读取会移动

     文件指针如果不重新赋值将不会改变指向别的文件。

*  任何表达式语句都是表达式加分号组成的

*  在switch语句中,每一个的case常量表达式的值不可以相同。

*  C语言函数返回类型的默认定义类型是int

*  可以用一个指针变量指向一个函数,然后通过该指针变量调用此函数.

*  函数形参的存储单元是动态分配的

*  结构体变量可以作数组元素

*  二进制文件可以随机存取,文本文件顺序存取

*  函数strcmp从头至尾顺序地将其对应字符比较,遇到两个字符不等时,两个字符相减得到一个int型值,两个字符串完全相同  时,则返回0。

*  C语言的书写格式会影响程序的可读性

*  if(a=5) 是允许的

*  函数返回值的类型是由在定义函数时所指定的函数类型决定的

*  逻辑表达式的值只能为1或0

*  变量被定义后 , 它不仅有一个确定的地址值 , 而且还会有一个确定的本身值(x)

*  结构体数组中可以包含不同结构体类型的结构体变量  (x)

*  以“r”方式打开一个文件时,文件指针指向文件首

*  使用static k定义的变量属于静态变量

*  文件指针用于指向文件,文件只有被打开后才有对应的文件指针

*  在switch语句中,多个case可以共用一组执行语句。

* 表达式语句和表达式没有什么区别

 在程序设计语言中,语句指的是执行单元,通常以行为单位,表达式指的是可用于计算的式子

,即可能产生一个值的式子。语句可以包含有表达式,表达式也可以单独形成一个语句。

*  fseek函数一般用于文本文件  (x)

*  枚举类型中的元素都具有一个整型值

*  在多层循环中, 一个break语句只向外跳一层。

*  局部变量如果没有指定初值,则其初值不确定。

*  文件的读函数是从输入文件中读取信息,并存放在内存中。

*  结构体类型本身不占用内存空间,结构体变量占用内存空间

*  char *s="C Language";表示s是一个指向字符串的指针变量,把字符串的首地址赋予s

*  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(PTA)