C语言笔试题题目
一、 简答题
1. 程序的局部变量存在于()中,全局变量存在于()中,动态申请数据存在于()中。 2. 设有以下说明和定义:
typedef union {long i; int k[5]; char c;} DATE;
struct data { int cat; DATE cow; double dog;} too; DATE max;
则语句 printf(\的执行结果是:_______ 3. 32位系统下,请问如下语句的值
unsigned char *p1; unsigned long *p2;
p1=(unsigned char *)0x801000; p2=(unsigned long *)0x810000; 请问p1+5= p2+5=
4. int i=10, j=10, k=3; k*=i+j; k最后的值是?
5. #define DOUBLE(x) x+x ,i = 5*DOUBLE(5); i 是多少? 6. 下面程序的输出是_____,为什么? char *ptr;
if ((ptr = (char *)malloc(0)) == NULL) {
puts(\} else {
puts(\}
7. 以下程序运行后的输出结果是______ 。 main() {
char m;
m='B'+32; printf(\}
8. 已有定义如下:
struct node {
int data;
struct node *next; } *p;
以下语句调用malloc函数,使指针p指向一个具有struct node类型的动态存储空间。请填空p = (struct node *)malloc(________);
9. 在绝对地址0xXXXXXXXX上写入字符’a’的语句是___________。
10. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) 11. 写一个\标准\宏MIN ,这个宏输入两个参数并返回较小的一个。 12. 嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢? 13. 用变量a给出下面的定义
a) 一个整型数(An integer)
b) 一个指向整型数的指针( A pointer to an integer) c) 一个指向指针的的指针,它指向的指针是指向一个整型数( A pointer to a pointer to
an intege)
d) 一个有10个整型数的数组( An array of 10 integers) e) 一个有10个指针的数组,该指针是指向一个整型数的。(An array of 10 pointers to
integers)
f) 一个指向有10个整型数数组的指针( A pointer to an array of 10 integers)
g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A pointer to a
function that takes an integer as an argument and returns an integer)
h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一
个整型数( An array of ten pointers to functions that take an integer argument and return an integer )
14. 关键字static的作用是什么? 15. 关键字const的含义。
16. 关键字volatile有什么含意?并给出三个不同的例子。 17. 一个参数既可以是const还可以是volatile吗?解释为什么。 18. 一个指针可以是volatile 吗?解释为什么。 19. 下面的函数有什么错误:
int square(volatile int *ptr) {
return *ptr * *ptr; }
20. 在某工程中,要求设置一绝对地址为0x67a9的整型变量的值为0xaa66。编译器是一个
纯粹的ANSI编译器。写代码去完成这一任务。 21. 局部变量能否和全局变量重名? 22. 如何引用一个已经定义过的全局变量?
23. 全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?
24. 语句for( ;1 ;)有什么问题?它是什么意思? 25. do……while和while……do有什么区别? 26. 下列哪种方法更好,为什么?
define dPS struct s * typedef struct s * tPS;
27. 下面的结构是合法的吗,如果是它做些什么?
int a = 5, b = 7, c; c = a+++b;
28. 队列和栈有什么区别?
29. 全局变量和局部变量是否有区别?如果有,是什么区别? 30. 堆栈溢出一般是由什么原因导致的? 31. 冒泡排序算法的时间复杂度是什么?
32. 分别写出BOOL,int,float,指针类型的变量a 与“零”的比较语句。 33. 不能做switch()的参数类型是: 34. 某32位系统下,请计算sizeof 的值.
char str[] = “http://www.ibegroup.com/” char *p = str ; int n = 10;
请计算
sizeof (str ) = ? (1) sizeof ( p ) = ? (2) sizeof ( n ) = ? (3) void Foo ( char str[100]){ sizeof( str ) = ? (4) }
void *p = malloc( 100 ); sizeof ( p ) = ? (5)
35. 请说出const与#define 相比,有何优点? 36. 回答下面的问题.
a) 头文件中的 ifndef/define/endif 干什么用?预处理
b) #include
37. 使用malloc()函数时,为什么要将其返回值强制转换成被赋值指针变量的数据类型? 38. 列举一个软件中时间换空间或者空间换时间的例子。 39. 以下C语言语句有什么区别
char * const p; char const * p;
const char *p;
40. 下面x, y, *p的值是多少,有什么问题?
int x, y, z = 2; int *p=&z; x=sizeof*p; y=x/*p;
41. 下面的语句是什么意思?如何声明或定义才使它们更易懂?(10分)
int (*foo())(); int (*foo())[]; int (*foo[])(); (*(void(*)())0)();
void (*signal(int,void(*)(int)))(int);
42. 如何定义Bool变量的TRUE和FALSE的值。
43. 运行char a*+ = ”abc”后,内存会开辟几块内存,这此内存共占多少个字节? 44. 运行char *p = ”abc”后,内存会开辟几块内存,这此内存共占多少个字节? 45. 说出 int *(*p)[3]; p是什么变量?如果p是指针变量,那么p+1的偏移量是多少? 46. 一个32位的机器,该机器的指针是多少位?
47. 已知一个数组table,用一个宏定义,求出数据的元素个数
二、 程序分析题
1. 下面的代码有什么问题?
char *_strdup( const char *strSource ) {
static char str[MAX_STR_LEN]; strcpy(str, strSource); return str; }
2. 下面的代码输出是什么,为什么? void foo(void) {
unsigned int a = 6; int b = -20;
(a+b > 6) ? puts(\}
3. 请写出下列代码的输出内容
#include main() {
int a,b,c,d; a=10; b=a++; c=++a; d=10*a++;
printf(\,c,d:%d,%d,%d\,b,c,d); return 0; }
4. Test函数的运行结果如何?
void GetMemory(char *p) {
p = (char *)malloc(100); }
void Test(void) {
char *str = NULL; GetMemory(str);
strcpy(str, \printf(str); } 5. Test函数的运行结果如何?
char *GetMemory(void) {
char p[] = \return p; }
void Test(void) {
char *str = NULL; str = GetMemory(); printf(str); }
6. Test函数的运行结果如何?
Void GetMemory2(char **p, int num) {
*p = (char *)malloc(num); }
void Test(void) {
char *str = NULL;
GetMemory(&str, 100); strcpy(str, \printf(str); }