试卷总分:100
出卷时间:2014-07-11 11:24
答题时间:120分钟
一单选题
1.要把高级语言编写的源程序转换为目标程序,需要使用( D )[2分]
A.编辑程序
B.驱动程序
C.诊断程序
D.编译程序
2.以下叙述中正确的是( C )[2分]
A.C语言程序将从源程序中第一个函数开始执行
B.可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行
C.C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束
D.main可作为用户标识符,用以命名任意一个函数作为主函数
3.若变量a是int类型,并执行了语句:a=‘A'+1.6;,则正确的叙述是 ( D )[2分]
A.a的值是字符B
B.a的值是浮点型
C.不允许字符型和浮点型相加
D.a的值是字符‘A’的ASCII值加上2
4.若变量已正确定义并赋值,以下符合C语言语法的表达式是
( B )[2分]
A.a:=b+1
B.a=b=c+2
C.int 18.5%3
D.a=a+7=c+b
5.下列可用于C语言用户标识符的一组是( )[2分]
A.void, define, WORD
B.a3_b3, _123,car
C.For, -abc, IF Case
D.2a, DO, sizeof
6.若在定义语句:int a,b,c,*p=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是( )[2分]
A.scanf("%d",a,b,c);
B.scanf("%d%d%d",a,b,c);
C.scanf("%d",p);
D. scanf("%d",&p);
7.以下关于long、int和short类型数据占用内存大小的叙述中正确的是( )[2分]
A.均占4个字节
B.根据数据的大小来决定所占内存的字节数
C.由用户自己定义
D.由C语言编译系统决定
8.若变量已正确定义,有以下程序段
i=0;
do
{
printf("%d,",i);
}while(i++);
printf("%d\n",i);
其输出结果是( )[2分]
A. 0,0
B. 0,1
C. 1,1
D. 程序进入无限循环
9.有以下计算公式
若程序前面已在命令中包含math.h文件,不能够正确计算上述公式的程序段是( )[2分]
A. if(x>=0) y=sqrt(x); else y=sqrt(-x);
B. y=sqrt(x)if(x<0) y=sqrt(-x);
C. if(x>=0)y=sqrt(x); if(x<0)y=sqrt(-x);
D. y=sqrt(x>=0?x:-x);
10.设有条件表达式:(EXP)?i++;j--,则以下表达式中(EXP)完全等价的是( )[2分]
A.(EXP==0)
B.(EXP!=0)
C.(EXP==1)
D.(EXP!=1)
11.有以下程序
#include
int main(void)
{
int y=9;
for( ; y>0;y--)
{
if(y%3= =0)
printf("%d",--y);
}
}
程序的运行结果是( )[2分]
A.741
B.963
C.852
D.875421
12.若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是( )[2分]
A.函数的实参和其对应的形参共占同一存储单元
B.形参只是形式上的存在,不占用具体存储单元
C.同名的实参和形参占同一存储单元
D.函数的形参和实参分别占用不同的存储单元
13.已知字符'A'的ASCⅡ代码值是65,字符变量c1的值是'A',c2的值是'D'。执行语句printf("%d,%d",c1,c2-2);后,输出结果是( )[2分]
A.A,B
B.A,68
C.65,66
D.65,68
14.以下叙述中错误的是( )[2分]
A.改变函数形参的值,不会改变对应实参的值
B.函数可以返回地址值
C.可以给指针变量赋一个整数作为地址值
D.当在程序的开头包含文件stdio.h时,可以给指针变量赋NULL
15.以下正确的字符串常量是( )[2分]
A."\\\"
B.'abc'
C.Olympic Games
D." "
16.设有定义:char p[]={’1’,’2’,’3’},*q=p; ,以下不能计算出一个char型数据所占字节数的表达式是( )[2分]
A.sizeof(p)
B.sizeof(char)
C.sizeof(*q)
D.sizeof(p[0])
17.有以下函数
int func(char *s)
{
char *t=s;
while(*t++);
t--;
return(t-s);
}
以下关于func函数的功能叙述正确的是( )[2分]
A.求字符串s的长度
B.比较两个串的大小
C.将串s复制到串t
D.求字符串s所占字节数
18.若有定义语句:int a[3][6]; ,按在内存中的存放顺序,a数组的第10个元素是( )[2分]
A.a[0][4]
B.a[1][3]
C.a[0][3]
D.a[1][4]
19.有以下程序
#include
void fun(char **p)
{
++p;
printf("%s\n",*p);
}
int main(void)
{
char
*a[ ]={"Morning","Afternoon","Evening","Night"};
fun(a);
}
程序的运行结果是( )[2分]
A.Afternoon
B.fternoon
C.Morning
D. orning
20.若有定义语句:int a[2][3],*p[3]; ,则以下语句中正确的是( )[2分]
A.p=a;
B.p[0]=a;
C.p[0]=&a[1][2];
D. p[1]=&a;
21.有以下程序
#include
int fun(char s[ ])
{
int n=0;
while(*s<=’9’&&*s>=’0’)
{
n=10*n+*s-’0’;
s++;
}
return(n);
}
int main(void)
{
char s[10]={’6’,’1’,’*’,’4’,’*’,’9’,’*’,’0’,’*’};
printf("%d\n",fun(s));
}
程序运行的结果是( )[2分]
A.9
B.61490
C.61
D.5
22.以下能正确定义一维数组的选项是( )[2分]
A.int a[5]={0,1,2,3,4,5};
B.char a[ ]={0,1,2,3,4,5};
C.char a={’A’,’B’,’C’};
D.int a[5]="0123";
23.以下叙述中正确的是( ) [2分]
A.预处理命令行必须位于源文件的开头
B.在源文件的一行上可以有多条预处理命令
C.宏名必须用大写字母表示
D.宏替换不占用程序的运行时间
24.若有以下说明和定义( )
union dt
{
int a;
char b;
double c;
}data;
以下叙述中错误的是[[2分]
A.data的每个成员起始地址都相同
B.变量data所占的内存字节数与成员c所占字节数相等
C.程序段:data.a=5;printf("%f\n",data.c);输出结果为5.000000
D. data可以作为函数的实参
25.以下语句或语句组中,能正确进行字符串赋值的是 ( ) [2分]
A.char *sp;*sp="right!";
B.char s[10];s="right!";
C.char s[10];*s="right!";
D.char *sp="right!";
二填空题
1.以下程序的功能是:输出a、b、c三个变量中的最小值.请填空。#include
int main(void)
{
int a,b,c,t1,t2;
scanf("%d%d%d",&a,&b,&c);
t1=a
t2=c printf("%d\n",t2); }[每空2分] 2.以下程序的输出结果 是. #include int main(void) { int n=12345, d; while(n!=0) { d=n%10; printf("%d",d); n/=10; } }[每空4分] 3.已有定义如下: struct node { int data; struct node *next; } *p; 以下语句调用malloc函数,使指针p指向一个具有struct node类型的动态存储空间。 p = (struct node *)malloc( );[每空4分] 4.表达式(int)((double)5/2+2.5)的值 是:[每空4分] 5.写出以下两段程序的执行结果。如果程序无法编译,请指出出错 部分并写明原因;如果程序陷入死循环,请回答“死循环”。如果执行结果出现内存错误,请指出出错部分并写明原因。 int main(void) { char s[ ]="man"; int i; for(i=0;s[ i ];i++) printf("\n%c%c%c%c",s[ i ], *(s+i), *(i+s), i[s]); return 0; int main(void) { char *cptr,c; void *vptr,v; c=10; v=0; cptr=&c; vptr=&v; return 0; } [每空2分] 6.对下面的代码进行解释: typedef void (*lpFunction)(void); lpFunction lpReset = (lpFunction)0xF000FFF0; lpReset(); [4分] 7. 指出下面代码的不妥之处(不需要修改): void GetMemory(T_S8 *p, T_S16 nNum) { p = (T_S8 *)malloc(sizeof(T_S8) * nNum); } void Test(void) { T_S8 *str = NULL; GetMemory(str, 100); strcpy(str, "hello"); } [每空4分] 8.Test函数的运行结果如何?原因? char *GetMemory(void) { char p[] = "hello world"; return p; } void Test(void) { char *str = NULL; str = GetMemory(); printf("%s\n", str); } [每空4分] 9.Test函数的运行结果如何?原因? Void GetMemory2(char **p, int num) { *p = (char *)malloc(num); } void Test(void) { char *str = NULL; GetMemory(&str, 100); strcpy(str, "hello"); printf("%s\n", str); } [每空4分] 10. Test函数的运行结果如何?原因? void Test(void) { char *str = (char *) malloc(100); strcpy(str, “hello”); free(str); if(str != NULL) { strcpy(str, “world”); printf("%s\n", str); } } [每空4分] 三编程题 1.请编写一个函数func, 用来删除字符串中的所有空格。 例如,传入字符串“asd af aa z67”, 则返回为字符串“asdafaaz67”。[10分] ============ 本试卷共计36题,此处为结束标志。考试酷examcoo ============ (注:可编辑下载,若有不当之处,请指正,谢谢!)