搜档网
当前位置:搜档网 › C语言考试题2

C语言考试题2

?注:简单变量又称之基本数据类型的变量

一、选择题
1.C语言中,下列关于循环的代码有可能编译不通过的是:
A.int i; for(i=0;i<10;i++){ } B.for(int i=0;i<10;i++){ }
C.int i; for(i=0; ;i++){ } D.for( ; ; ) ;

2.在C语言中,下列代码的执行结果为?
int s,i = 2;
s = i++ + ++i;
printf(“i=%d,s=%d\n”,i,s);
A.i=3,s=5 B.i=4,s=5 C.i=4,s=6 D.i=4,s=7

3.在C语言中,下列代码执行结果是?
int score = 4;
switch(score){
case 5:
printf("A");
case 4:
printf("B");
case 3:
printf("C");
default:
printf("D");
}
A.ABCD B.BCD C.B D.BD

4.在C语言中调用函数f1,当f1函数执行完毕后,哪个变量的内存没有被回收?
int a = 1000;
void f1(int b){
b = 10;
int c = 20;
static int d = 30;
}
A.只有a B.Abcd都没有回收 C.只有d D.ad

5.以下代码
int a, b;
for (a = 0, b = 0; a <= 1 && ! b++; a++)
a++;
printf ("%d %d\n", a, b);
的输出是?
A.2 2 B.2 1 C.0 1 D.1 2

6.C语言中,以下程序的输出结果为?
int a = 10;
printf(“%d\n”,sizeof( (a>5)?4:8.0 ) );
A.1 B.2 C.4 D.8

7.在vi中,以下哪个底行命令可将第10到20行的内容拷贝至第30行之后?
A.:10,20 co 30 B.:10,20 co 31 C.:10,20 cp 30 D.:co 10,20,30

8.-80转换成二进制的结果是:A
A.1011 0000 B.0101 0000 C.1101 0001 D.1010 1111

9.C语言规定,除主函数外,程序中各函数之间()
A) 既允许直接递归调用也允许间接递归调用
B) 不允许直接递归调用也不允许间接递归调用
C) 允许直接递归调用不允许间接递归调用
D) 不允许直接递归调用允许间接递归调用

10.若函数调用时参数为基本数据类型的变量(俗称简单变量),以下叙述正确的是().
A) 实参与其对应的形参共占存储单元
B) 只有当实参与对应的形参同名时才共占存储单元
C) 实参与其对应的形参分别占用不同的存储单元
D) 实参将数据传递给形参后,立即释放原先占用的存储单元

11.对于C语言的函数,下列叙述中正确的是
A) 函数的定义不能嵌套,但函数调用可以嵌套
B) 函数的定义可以嵌套,但函数调用不能嵌套
C) 函数的定义和调用都不能嵌套
D) 函数的定义和调用都可以嵌套

12.调用函数时,当实参和形参都是简单变量时,它们之间数据传递的过程是()
A) 实参将其地址传递给形参,并释放原先占用的存储单元
B) 实参将其地址传递给形参,调用结束时形参再将其地址回传给实参
C) 实参将其值传递给形参,调用结束时形参再将其值回传给实参
D) 实参将其值传递给形参,调用结束时形参并不将其值回传给实参

13.以下程序段中与语句k=a>b?(b>c?1:0):0;功能等价的是
A) if((a>B)&&(b>C)) k=1; B)

if((a>B)||(b>C)) k=1;
else k=0; else k=0;
C) if(a<=B) k=0; D) if(a>B) k=1;
else if(b<=C) k=1; else if(b>C) k=1;
else k=0; else k=0;

14.以下关于数组的描述正确的是()
A) 数组的大小是固定的,但可以有不同类型的数组元素。
B) 数组的大小是可变的,但所有数组元素的类型必须相同。
C) 数组的大小是固定的,所有数组元素的类型必须相同。
D) 数组的大小是可变的,可以有不同类型的数组元素。

15.C语言中,凡未指定存储类别的局部变量的隐含存储类别是()
A) auto B) static C) extern D) register

二、填空题
1.把int型变量low中的低字节及变量high中的高字节放入变量s中的表达式是____________。

2.以下代码
char c = 200;
printf ("%d\n", c);
的结果为____________。

3.定义联合代码如下:
union {
double d;
int i;
} u;
printf("u=%d\n",sizeof(u));
那么,结果是__________。

4.#ifndef _TEXT_H_
#define _TEXT_H_
#include T
#endif
上面代码的主要作用是________________。


5.以下代码
int main (void) {
char a[] = "456789";
char b[] = "123";
strcpy (a, b);
printf ("%s %s\n", b, a);
return 0;
}
的输出是?

6.typedef struct Part{
short s;
int id;
char name;
} Part;
int main(void){
printf(“%d\n”,sizeof(Part));
return 0;
}
在考虑结构的对齐和补齐的前提下,打印的结果应该是_________。

7.假定w、x、y、z、m均为int型变量,有如下程序段:
w=1;x=2;y=3;z=4;
m=(w则该程序段执行后,m的值是_________。


8.设整形变量x=y=z=5:
执行"x-=y-z"后x=??
执行"x=(y-z)?x+2:x-2,3,4"后x=?

9.int main(void) {
int a[]={2,4,6,8,10};
int y=1,x,* p;
p=&a[1];
for(x=0;x<3;x++)
y+=*(p+x);
printf(“%d\n”,y);
return 0;
}

10.#include
int main(void){
int x=1,y,z;
x*=3+2;
printf("%d,",x);
x*=y=z=5;
printf("%d,",x);
x=y==z;
printf("%d\n",x);
return 0;
}


三、简答题
1.指针和数组的区别?

2.unsigned char a = 0xa5;
unsigned char b = ~a >> 1 + 2 + 3;
printf ("%d\n", b); 的输出是?

3.用变量a给出下面的定义
a) 一个整型数
b) 一个指向整型数的指针
c) 一个指向指针的的指针,它指向的指针是指向一个整型数
d) 一个有10个整型数的数组
e) 一个有10个指针的数组,该指针是指向一个整型数的地址
f) 一个指向有10个整型数数组的指针
g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数
h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数


四、编程题:
1.函数原型:char *strcpy(char *de

st,const char *str);
功能:把src所指的由\0结束的字符串拷贝到dest所指的内存地址的起始位置。
返回值:src和dest所指内存区域不能重叠,返回指向dest的指针。

2.void *memcpy(void *dest,const void *src,size_t n);
功能:从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置。
返回值:src和desr所指内存区域不能重叠,返回指向dest的指针。

3.输入两个数a,b.然后按逆序输出a到b之间的所有数字.

4.文件的拷贝,把一个a.out文件拷贝成b.out,并获取与打印该文件的大小。

相关主题