典型的程序员面试题

1、一般赋值语句的概念和方法。求下程序输出:
#include  
 
int main()  
{  
int x, y = 3, z = 4;  
x = (y = z);  
printf("x = %d\n", x);  x = 4;
 
x = (y == z);  
printf("x = %d\n", x);  x = 1
 
x = (y | z);  
printf("x = %d\n", x);  x = 7
 
x = (y || z);  
printf("x = %d\n", x);  x = 1
 
x = (y & z);  
printf("x = %d\n", x);  x = 0
 
x = (y && z);  
printf("x = %d\n", x);  x = 1
 
return 0;  
}  

2、i++和++i的区别 阅读代码写输出
#include  
 
int main()  
{  
int i = 8;  
 
printf("i = %d\n", ++i);  i = 9
printf("i = %d\n", --i);  i = 8
printf("i = %d\n", i++);  i = 8
printf("i = %d\n", i--);  i = 9 
printf("i = %d\n", -i++); i = -8
printf("i = %d\n", -i--); i = -9
 
return 0;  
}  

3、有符号变量与无符号变量的值的转换 看程序写输出
#include  
 
char getchar(int x, int y)  
{  
char c;  
unsigned int a = x;  
(a + y > 10 ) ? (c = 1):(c = 2);  
return c;  
}  
 
int main()  
{  
char c1 = getchar(7, 4);  
char c2 = getchar(7, 3);  
char c3 = getchar(7, -7);  
char c4 = getchar(7, -8);  
 
printf("c1 = %d\n", c1);  c1 = 1
printf("c2 = %d\n", c2);  c2 = 2
printf("c3 = %d\n", c3);  c3 = 2
printf("c4 = %d\n", c4);  c4 = 1  
 
return 0;  
}  


4、为什么标准头文件都有类似以下的结构?
1#ifndef _HEAD_H  
2#define _HEAD_H  
3#ifdef _cplusplus  
4extern "C" {  
5#endif  
6/*...*/  
7#ifdef _cplusplus  
8}  
9#endif  
10#endif /*_INCvxWorksh*/
1.2.10的作用是为了防止该头文件被重复引用
代码第3行的作用是表示当前使用的C++编译器
代码4 ~8 的extern“c”是C++编译器提供的与C++编译器提供的与C连接交换指定的符号,用来解决名字匹配的问题

5、#include 和#include “head.h”有什么区别?
<>表明这个文件是一个工程或标准头文件,查找过程会首先检查预定义的目录,我们可以通过设置搜索路径环境变量或者命令行选项来修改这些目录。
如果一个文件名用一对引号括起来则表明该文件是用户提供的头文件,查找该文件时将从当前文件目录中寻找文件,然后在标准位置寻找文件。


6、C语言中main函数执行完后还执行其他语句吗?


不执行


7、写出代码输出结果
#include  
 
#define SQR(x)   (x*x)  
 
int main()  
{  
int a, b = 3;  
a = SQR(b+2);  
printf("a = %d\n", a);  
 
return 0;  
}  

a= 11
8、宏参数的连接 看代码,写输出
#include  
 
#define STR(s)          #s  
#define CONS(a, b)      (int)(a##e##b)  
 
int main()  
{  
printf(STR(vck));  
printf("\n");  
printf("%d\n", CONS(2,3));  
 
return 0;  
}  
vck
2000

9、const使用时的注意点,指出下面程序中哪句话出现错误
1#include  

3int main()  
4{  
5 const int x = 1;  
6 int b = 10;  
7 int c = 20;  
8  
9 const int* m = &b;  
10 int* const n = &b;  
11 const int* const s = &b;  
12  
13 x = 2;  
14  
15 m = &c;  
16 *m = 1;  
17  
18 n = &c;  
19 *n = 1;  
20  
21 s = &c;  
22 *s = 1;  
23  
24 return 0;  
25}  
13 16 18 21 出现了错误
10、使用sizeof计算普通变量所占空间大小  计算结果:(假设32位win)
char str[] = "hello";  
char *p = str;  
int n = 10;  
sizeof(str) = __6__;  
sizeof(p) = __4__;  
sizeof(n) = ___4_;  
void func(char str[100])  

你可能感兴趣的:(c语言)