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;
,前后的表达式会从左至右计算,但是只保留最后一个表达式。