真题笔试部分
- 格式:doc
- 大小:170.00 KB
- 文档页数:32
第 1 页 共 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()
{ 第 2 页 共 32 页 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); 第 3 页 共 32 页 }
程序运行结束后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++)
{ 第 4 页 共 32 页 w=f(w);
printf(“%d\n”,w);
}
}
f(int x)
{
int y=0;
static z=3;
y++;z++;
return (x+y+z) ;
}
程序结束后,y的值为____B____。
(13) A 0 B 1 C 2 D 3
程序结束后,w的值为___A___。
(14) A 20 B 7 C 28 D 13
3.int x1=30,x2=40;
main()
{
int x3=10,x4=20 ;
sub(x3,x4) ;
sub(x2,x1);
L1:printf(“%d,%d,%d,%d\n”,x3,x4,x1,x2);
}
sub(int x, int y)
{
x1=x ;x=y ;y=x1 ;
L2 :printf(“%d,%d\n”,x,y) ;
}
L1行输出结果为______D_________。
(15) A 10,20,30,40 B 10,20,40,10
C 20,10,40,30 D 10,20,40,40
L2行输出结果为_______B________。
(16) A 10,20 B 20,10 C 10,20 D 20,10
40,10 10,40 10,40 40,10
4.main()
{
int x=1,i=1 ;
for( ;x<50 ;i++)
{
if(x>10) break ;
if(x%2 !=2) {x+=3 ;continue ;}
x-=1 ;
}
printf(” %d\n”,x) ; 17该语句输出为____D______。 第 5 页 共 32 页 printf(” %d\n”,i) ; 18该语句输出为_____D______。
}
修订为:
main()
{
int x=1,i=1 ;
for( ;x<50 ;i++)
{
if(x>10) break ;
if(x%2 !=0) {x+=3 ;continue ;}
x-=1 ;
}
printf(" %d\n",x) ; // D
printf(" %d\n",i) ; // D
}
(17) A 11 B 14 C 10 D 12
(18) A 7 B 8 C 9 D 10
5.以下程序不用第三个变量实现两个数对调的操作。程序中(19)为____A_____,(20)为____B______,(21)为____B______。
#includ
main()
{
int a,b;
scanf(“%d,%d”&a,&b);
a=_____A_____;(19)
b=_____B_____;(20)
c=______B____;(21)
printf(“%d,%d”,a,b);
}
修订为:
#include
main()
{
int a,b;
scanf("%d,%d",&a,&b);
a=a+b;
b=a-b;
a=a-b;
printf("%d,%d",a,b);
}
(19) A a+b B a-b C a*b D a/b
(20) A a+b B a-b C b-a D a*b
(21) A a+b B a-b C b*a D a/b
6.#include