特意为大家整理的09年4月全国计算机等级二级C语言考前练习,希望对大家的备考有好的帮助!
1.分析以下程序,执行后的输出结果是()
int f1(int x,int y)
{return x >y? x:y;
}
int f2(int x,int y)
{return x >y? y:x;
}
main()
{int a=4,b=3,c=5,d,e,f;
d=f1(a,b);d=f1(d,c);
e=f2(a,b);e=f2(e,c);
f=a+b+c-d-e;printf( "%d,%d,%d",d,f,e);
}
A)3,4,5
B)5,3,4
C)5,4,3
D)3,5,4
2.分析下面函数
swap(int *p1,*p2)
{ int *p;
*p=*p1;*p1=*p2;*p2=*p;
}
则该程序功能为()
A)交换*p1和*p2的值
B)正确,考试大提示:但无法改变*p1和*p2的值
C)交换*p1和*p2的地址
D)可能造成系统故障,因为使用了空指针
3.有以下程序
main()
{
int n[3],i,j;
for(i=0;i <3;i++)n[i]=0;
for(i=0;i <2;i++)
for(j=0;j <2;j++)n[j]=n[i]+1;
printf( "%d\n",n[1]);
}
程序运行后的输出结果是()
A)2
B)1
C)0
D)3
4.有如下程序段:
int a=14,b=15,x;
char c=′A′;
x=(a &&b)&&(c<′B′);
执行该程序段后,x的值为()
A)1
B)0
C)false
D)true
5.有以下程序
# include
struct NODE
{int num;struct NODE*next;}
main()
{struct NODE*p,*q,*r;
p=(struct NODE*)malloc(sizeof(struct NODE));
q=(struct NODE*)malloc(sizeof(struct NODE));
r=(struct NODE*)malloc(sizeof(struct NODE));
p- >num=10;q->num=20;r->num=30;
p- >next=q;q->next=r;
printf( "%d\n",p->num+q->next->num);
}
程序运行后的输出结果是()
A)10
B)20
C)30
D)40
6.设有如下定义:
structsk
{ inta;
float b;
} data;
int *p;
若要使p指向data中的a域,正确的赋值语句是()
A)p= &a;
B)p=data.a;
C)p= &data.a;
D)*p=data.a;
7.若有如下说明:
unions
{char a[9];
intb;float c;
} t;
则下列叙述正确的是()
A)共用体变量t不能作为函数的参数
B)通过引用共用体变量名t可以得到成员的值
C)共用体变量t的地址和它的各成员的地址不同
D)共用体变量t所占的内存长度等于它的各成员所占的内存长度之和
8.若定义了以下函数:
void sub(......)
{......
*t=(int*)malloc(10*sizeof(int));
......}
其中t是该函数的形参,要求通过t把动态分配存储单元的地址传回主调函数,则形参t的正确定义应该是()
A)int *t
B)int **t
C)long **t
D)long *t
9.以下对枚举类型名的定义中正确的是()
A)enum a={one,two,three};
B)enum a {one=9,two=-1,three=200};
C)enum a={ "one","two","four"};
D)enum a { "nine","two","three"};
10.C语言规定如果调用fputc函数输出成功,则返回值是()
A)1
B)输出的字符
C)0
D)true
答案:1.C 2.D 3.D 4.A 5.D 6.C 7.A 8.B 9.B 10.B
11.有以下结构体说明和变量的定义,且如下图所示指针p指向变量a,指针q指向变量b。则不能把结点b连接到结点a之后的语句是()
struct node
{char data;
struct noe*next;
}a,b,*p= &a,*q=&b;
A)a.next=q;
B)p.next= &b;
C)p- >next=&b;
D)(*p).next=q;
12.若有如下定义:
int(*p)(),*q();
则下列说法正确的是()
A)p是一个函数名,q是一个指针变量
B)p是一个指向整型变量的指针变量,q是一个指向一维数组的指针变量
C)p和q是等价的,都是指针变量
D)p是指向函数的指针变量,函数的返回值是整型数据;q是带回指针值的函数
13.有以下程序
# include <stdio.h>
main()
{ float x,y;
scanf( "%f",&x);
if(x <0.0)y=0.0;
else if((x <5.0)&&(x!=2.0))
y=1.0/(x+2.0);
else if(x <10.0)y=1.0/x;
else y=10.0
printf( "%f\n",y);
}
若运行时从键盘上输入2.0 <CR>(<CR>表示回车),则上面程序的输出结果是()
A)0.000000
B)0.250000
C)0.500000
D)1.000000
14.以下程序段中,能够通过调用函数fun,使main函数中的指针变量p指向一个合法的整型单元的是()
A)main ()
{int*p;
fun (p);
…
}
intfun (int*p)
{ int s;p= &s;}
B)main
{int*p;
fun ( &p);
…
}
intfun (int**p)
{ints;*p= &s;}
C)#include <stdlib.h>
main ()
{int*p;
fun ( &p);
…
}
intfun (int**p)
{*p=(int*)malloc (2); }
D)#include <stdlib.h>
main ()
{ int*p;
fun (p);
…
}
int fun (int*p)
{p=(int*)malloc(sizeof (int)); }
15.执行下列程序时输入:23 <空格>456<空格>789<回车>,输出结果是()
main()
{ char s[100]
int c,i;
scanf( "%c",&c);
scanf( "%d",&i);
scanf( "%s",s);
printf( "%c,%d,%s\n",c,i,s);
}
A)1,456,789
B)1,23,456
C)1,23,456,789
D)23,456,789
16.有以下程序
#include <stdio.h>
#include <string.h>
main()
{ char b1[8]= "abcdefg",b2[8],*pb=b1+3;
while(--pb >b1)strcpy(b2,pb);
printf( "%d\n",strlen(b2));
}
程序运行后的输出结果是()
A)8
B)3
C)1
D)6
17.设有如下定义和声明:
structs
{ inta;
structs*next};
structsx[4]={1, &x[1],3,&x[2],5,&x[3],7,’\0’},*t;
t= &x[0];
则下列表达式值为2的是()
A)++t- >a
B)(*t).a++
C)t- >a++
D)t++- >a
18.若有如下程序:
main()
{int a=6; char ch=c;
printf( "%d\n",(a&2)&&(ch<′m′));}
则程序运行后的输出结果是()
A)0
B)1
C)2
D)3
19.下列说法不正确的是()
A)下列结构体定义时,占据了5个字节的空间
struct s {int num;
int age;
char sex;
}
B)结构体的成员名可以与程序中的变量名相同
C)对结构体中的成员可以单独使用,它的作用相当于普通变量
D)结构体的成员可以是一个结构体变量
20.若要打开A盘中user子目录下名为aaa.txt的文本文件进行读、写操作,下面符合此要求的函数调用是()
A)fopen( "A:\user\aaa.txt","r")
B)fopen( "A:\\user\\aaa.txt","r+")
C)fopen( "A:\user\aaa.txt","rb")
D)fopen( "A:\\user\\aaa.txt","w")
答案:1.B 2.D 3.C 4.C 5.B 6.D 7.A 8.A 9.A 10.B
3COME考试频道为您精心整理,希望对您有所帮助,更多信息在http://www.reader8.com/exam/