C考试复习

https://wenku.baidu.com/view/e4af75abf61fb7360b4c65c3.html

1.

表达式  11&10的结果用二进制表示为:

& 是按位操作,因为 0&0=0,0&1=0,1&0=0,1&1=1。

11&10的操作是最高位1&1=1,低位1&0=0,所以11&10=10。

2.

int a=3, a+=a-=a*a的值为多少?

a=a+(a-=a*a);

(a-=a*a)=a=a-a*a=-6;

所以此时a=-6;

a=(-6)+(-6)=-12;

3.

假设a=3,b=4,c=5,则逻辑表达式:

!(a+b)+c-1&&b+c/2的值是   1

&&  :两边都为true则返回true

4.

若 int a=3,b=4;则执行c=a++>2||b-->=4 之后,b变量的值为()

A.3  B.0  C.4 D.2 ;      C

A||B,  若A成立则结束运算。

5.

以下程序的输出结果是(1234)

int a=1234;

printf("%2d",a);

%d是普通输出,%2d是宽度为2的输出,若位数不足2则左对齐补齐空格输出,%02d左对齐补0,%.2d与%02d相同

补充:

float a=1;

printf(“%d”,a);   输出结果为0。

C程序的工作过程是编辑,编译,连接,运行。

C语言中的简单数据类型包括:整型,实型,字符型。

C语言中关系表达式和逻辑表达式的值是:0或1。

6.

下面((int)(11.0/3+0.5))的表达式的值为4

7.

设整型变量a=2,则执行下列语句后,浮点型变量b的值不为0.5的是(B)            ????

A.b=1.0/a   B.b=(float)(1/a)   C.b=1/(float)a   D.b=1/(a*1.0)

8.

以下能对一维数组a进行初始化的语句是:(C)

A.int a[5]=(0,1,2,3,4)   B.int a(5)={}   C.int a[3]={0,1,2}   D.int a{5}={10*1}

9.

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

C语言中函数的数据类型是指(函数返回值的数据类型)。

在函数调用时,实参和形参可以同名。

在C语言中,表示静态存储类别的关键字时:  static

未指定存储类别的变量,其隐含的存储类别为:  auto

10.

若有以下说明语句:

struct student

{

      int num;

      char name[ ];

      float score;

}stu;

则下面的叙述不正确的是:(D)

A.struct是结构体类型的关键字

B.struct student 是用户定义的结构体类型

C.num,score都是结构体成员名

D.stu是用户定义的结构体类型名          //应该是结构体变量

11.

语句int *p;说明了(p是指向int型数据的指针)

12.

int *p=&i,i;     错误

int  i,*p=&i;    正确

13.

若有说明:int n=2,*p=&n,*q=p,则以下非法的赋值语句是:(D)

A.p=q   B.*p=*q   C.n=*q   D.p=n

p,q同为整型指针变量,二者里面仅能存放整型变量的地址。

选项A,q中为地址,因此可将此地址赋给p

选项B,*p表示p所指向对象n的内容,即一个整数,*q表示q所指向对象的内容,由于在定义q时为其初始化,将p中n的地址给q,因此p中存放n的地址,*q表示q所指向对象n的内容,因此*p=*q相当于n=n;

选项C,n=*q  等价于  n=n;

选项D,p中只能存放地址,不能将n中的整数值赋给p

14.

若有说明语句“int a[5],*p=a;”,则对数组元素的正确引用时(C)

A.a[p]   B.p[a]   C.*(p+2)   D.p+2

首先定义一个数组a,a的长度为5,然后定义一个指针变量p,并同时对p进行初始化,将数组a的地址赋给p。因此此时p中存放的数组a的首地址,即数组中第一个元素a[0]的地址。

对于数组元素下标的引用,一般形式,数组名[下标]其中下标为逻辑地址下标,从0开始计数,方括号中的下标可以是变量,可以是表达式,但结果一定要是整数。

选项A,p中存放的时地址,不是整数,不能做数组元素的下标

选项B,a是数组名,数组名就是地址,不是整数,不能做数组元素的下标

选项C,p+2表示指向同一数组中的下两个元素的地址,当前p指向a[0],则p+2表示a[2]的地址,因此*(p+2)表示a[2]的内容。

15.

在C语言中,将“\0”作为字符串结束标志。

16.

下列数据中属于“字符串常量”的是(     “a”   )

一个字符也是字符串。

17.

已知char x[ ]=“hello”,y[ ]={'h','e','l','l','o};则关于两个数组长度的正确描述是(B)

A.相同   B.x大于y   C.x小于y   D.以上答案都不对

C语言中,字符串后面需要一个结束标志位‘\0’,通常系统会自动添加。

对一维数组初始化时可采用字符串的形式(例如本题数组x),也可采用字符集和的形式(例如本题数组y)。在以字符串形式初始化时,数组x不仅要存储字符串中的字符,还要存储字符串后的结束标志位,因此数组x的长度为6;在以字符集和形式初始化时,数组y,仅存储集合中的元素,因此数组y的长度为5。

填空    7

18.

当a=3,b=2,c=1时,表达式f=a>b>c执行完后f的值是(   0  )

先计算a>b=1,>c 为假=0  ,  所以最后结果为0

19.

若x=2,y=1,则表达式x>y?1:1.5的值为(  1 .0  )

这个值的类型,是参与运算中的类型级别最高的那个类型

类型级别  浮点型最高,整形次之,字符最低。

也就是说这个式子的值的类型是浮点型

另外if(1==1.0)为真

20.

在位运算中,操作数每左移一位,其结果相当于(操作数乘以2)

21.

在位运算中,操作数每左移三位,其结果相当于(操作数除以8)

22.

若有定义:int x,y;char a,b,c;并有以下数据  x=1 2 A B C,则能成功赋值的是(D)

这里用a=getch();b=getch();c=getch();错误

23.

有如下程序:

main()

{

   float x=4.0,y;

  if(x<0.0)y=0.0;

  else if(x<10.0)  y=1.0/x;

  else y=1.0;

 printf("%f\n",y);

}

该程序的输出结果是(B)

A。0.0   B.0.25   C。0.5   D。1.0

24.

若要求在if后一对圆括号中表示a不等于0的关系,则能表示这一关系的表达式为(D)

A.a<>0   B.!a   C.a=0   D.a

25.

int i=10;

switch(i+1)

{

case 10:i++;break;

case 11:++i;

case 12:++i;break;

default:i=i+1;

}

执行后i的值是     12

注意   break!!!

26.

如果程序中有“#include “文件名”则意味着(A)

A。将“文件名”所指的该文件的全部内容,复制插入到此命令处

B。制定标准输入输出

C。宏定义一个函数

D。条件编译说明

27.

要将一个整数12000分别以ASCII码文件和二进制文件形式存放,各自所占的存储空间数分别是()字节

A.5,2   B。2,5   C。2,2   D。5,5

以ASSIC码形式存储,每个数字占一个字节,10002是5个数字,占5个字节。

以二进制形式存储,每个整数不论大小占2个字节,10002是一个整数,占两个字节。

28.

定义如下变量和数组:

int i;

int x[3][3]={1,2,3,4,5,6,7,8,9};

则下面语句的输出结果是(   3,5,7)

for(int i=0;i<3;i++)   printf("%d",x[i][2-i]);

要注意行和列都是从0开始

29.

C语言中,函数调用时若实参是数组名,则被调用函数对应形参(C)

A.可以是相应类型简单变量   B.必须是相应类型数组名

C.可以是相应类型数组名   D.必须是相应类型的指针变量

30.

若要用fopen函数打开一个新的二进制文读也能写,则文件读写方式字符串应是(C)

A."a+"   B."b+"   C."wb+"   D."ab"

r:打开一个文本文件只读

w:打开一个文本文件只写

a:对一个文本文件添加

r+:打开一个文本文件读/写

w+:生成一个文本文件读/写

a+:打开一个文本文件读/添

rb:打开一个二进制文件只读

wb:打开一个二进制文件只写

ab:对一个二进制文件添加

rb+:打开二进制文件读/写

wb+:生成二进制文件读/写

ab+:打开二进制文件读/添

31.

C语言中规定,简单变量做实参时,它和对应形参之间的数据传递方式是(B)

A.地址传递   B.单向值传递   C.有实参传给形参,再由形参传回实参   D.由用户指定传递方式

int x=1;

int *y=&x;//用于指针传递,y有自己独立的内存地址,存储的内容是x的地址,*y是x的值

int &z=x;//用于引用传递,可以理解为z就是x,x就是z,只不过名字不一样

32.

有定义:int x,*p;能使指针变量指向变量x的语句是(B)

A.*p=&x;  B.p=&x;   C.*p=x;   D.x=*p

33.

在C语言中,关于文件存取方式(可以顺序存取,也可以随机存取)

34.

有定义:int a[]={1,3,5,7,9},*p=a;则值为5的表达式是(A)

A.p+=2,*p++   B.p+=2,*++p   C.p+=2,(*p)++   D.a+=2,*a

p指向的a的第一个数值。

//////填空

C语言期末考试:

C语言程序编译前的后缀名是   .c   编译后的后缀名是    .exe

逻辑运算符'!'的结合性是   从右至左

在一个函数中出现直接或间接调用该函数本身的现象称为    递归

已知a,b是整型变量,b的值为2,则执行a=(b*100+1.5,100)后的值为    100;

,前后的表达式会从左至右计算,但是只保留最后一个表达式。

猜你喜欢

转载自blog.csdn.net/qq_43678290/article/details/84973712