真题笔试部分
- 格式:doc
- 大小:170.00 KB
- 文档页数:32
真题一
一、选择题(每小题1分,共10分)
若有以下说明和语句,且0<=i<10,则____C____是对数组元素的错误引用。
int a[10],*p=a;
A *(a+i)
B a[p-a]
C p+I
D p[i]
2.现已定义:char b[6],*p=b;选择正确的赋值语句_____C_____。
A b=”china”
B *b=”china”
C p=”china”
D *p=”china”
?3.运行下列程序后,全局变量t.x和t.s的正确结果为__B____。
struct tree
{
int x;
char *s;
};
fun(struct tree t)
//形参变量是属于被调函数的局部变量,实参变量是属于主调函数的局部变量
{
t.x=10;
t.s=”computer”;
return(0);
}
main()
{
struct tree t;
t.x=1;
t.s=”minicomputer”;
fun(t) ;
printf(”%d,%s\n”,t.x,t.s ) ;
}
A 10,computer
B 1,minicomputer
C 1,computer
D 10,minicomputer
4.若fp是指向某文件的指针,且已读到文件的末尾,则表达式feof(fp)的返回值是____C_____。
A 0
B -1
C 非零值
D NULL
5.正确的指针数组的描述是____C_____。
A int (*a)[10]
B int a[i][j]
C int *a[10]
D 指针数组表示一个指针指向数组
6.如下,哪个是c语言绘图时必须使用的语句____C_____。
A #include
B #include
C gdriver=VGA //图形驱动器为VGA 图形适配器
D window(20,5,50,20);
// 建立字符模式下的矩形字符窗口window(left,top,right,bottom);
7.main()
{
int x=3,y=2,z=1;
printf(“%s=%d\n”,”x/y&z”,x/y&z);
}
程序的输出结果是:____B______。
A x/y&z=0
B x/y&z=1
C x^y&z=0
D x^y&~z=1
//优先诀
括号成员第一; //括号运算符[]() 成员运算符. ->
全体单目第二; //所有的单目运算符比如++ -- +(正) -(负) 指针运算*&
乘除余三,加减四; //这个"余"是指取余运算即%
移位五,关系六; //移位运算符:<< >> ,关系:> < >= <= 等
等于(与)不等排第七; //即== !=
位与异或和位或; //这几个都是位运算: 位与(&)异或(^)位或(|)
"三分天下"八九十;
逻辑或跟与; //逻辑运算符:|| 和&&
十二和十一; //注意顺序:优先级(||) 底于优先级(&&)
条件高于赋值, //三目运算符优先级排到13 位只比赋值运算符和","高//需要注意的是赋值运算符很多!
逗号运算级最低! //逗号运算符优先级最低
//结合决
每种运算符都有一个优先级,优先级是用来标志运算符在表达式中的运算顺序的。
优先级高的先做运算,优先级低的后做运算,优先级相同的右结合性决定计算顺序。
大多数运算符都是按从左到右计算,只有三类运算符的结合性是从右到左。他们是:单目、三目和赋值。
8.定义一个返回值为整型的函数指针变量,下列哪一个是正确的___C___。
A int *p()
B int (*p)[]
C int (*p)()
D int p()
9.main()
{
int i,j;
do{
if(j%5==0) i++;
j++;
}while(i!=5)
}
修订为:
main()
{
int i=0,j=0;
do{
if ( j%5==0) i++;
j++;
}while(i!=5);
}
程序运行结束后j的值为____D___。
A 25
B 20
C 26
D 21
10.若int x=2,y=1,z=0,下列几个表达式的值分别为_____A_____。
⑴x|y&&z ⑵x!=y!=z ⑶~x>y
A 0,1,0
B 0,1,1
C 0,0,0
D 1,1,0
二读程序,并选出正确的答案(每空3分,共45分)
1.#include
int find(char *s1, char *s2)
{
int t;
char *p1,*p2;
for(t=0 ;s1[t] ;t++)
{
p1=&s1[t] ;
p2=s2 ;
while(*p2&&*p2==*p1)//先算*p2==*p1
{
p1++;
p2++;
}
if(!*p2) return(t);
}
return -1 ;
}
main()
{
if(find(“c is fun”,”is”)!=-1)
L1: printf(“is”);
if(find(“c is fun”,”Basic”)!=-1)
L2:printf(“basic\n”);
}
(11)行L1输出的结果为____A_____。
A is
B i
C c is fun D没有输出
(12)行L2输出的结果为_____D___。
A Basic
B c is fun
C basic D没有输出
2.main()
{
int w=2,k;
for(k=0;k<3;k++)
{