C语言选择题
1、
int fun(int m)
{
static int temp=0;
temp+=m;
return temp;
}
void main()
{
int i=0;
int ret=0;
for(i=0; i<3; i++)
{
ret=fun(i);
}
printf(“%d \n”, ret);
}
请选择正确的输出结果: C
A.1
B.2
C.3
D.4
2、
int x=5;
void main()
{
int s=10;
{
int x=2;
x+=s;
}
x+=s;
printf(“%d \n”, x);
}
请选择正确的输出结果: A
A.15
B.22
C.12
D.24
3、
#define FUNC(x,y) (x>y)?’a’:’b’
int main()
{
unsigned int a=1;
char b=-1;
char c=0;
c=FUNC(a,b);
printf(“%c \n”, c);
return 0;
}
请选择正确的输出结果: B
A.a
B.b
C.’a’
D.’b’
4、
#define MAX(x) (12>x>2)?(x+2):(x+4)
int main()
{
int a=0;
int b=0;
a=10;
b=MAX(a);
printf(“%d ”, b);
b=MAX(a)+4;
printf(“%d ”, b);
return 0;
}
请选择正确的输出结果: A
A.14 18 B.14 14 C.18 18 D.18 14
5、
#define FUNC(a, b) \
a++;\
++b;
int main()
{
int a=2;
int b=4;
int i=0;
for(i=0; i<2; i++)
FUNC(a, b)
printf(“%d %d\n”, a, b);
return 0;
}
请选择正确的输出结果: A
A.4 5
B.4 6
C.4 4
D.5 6
6、
int main()
{
int a[]={23,5,87,11,5};
int *p=NULL;
p=a;
printf(“%d \n”, *(p+2));
p=(int *)(&a+1);
printf(“%d \n”, *(p-2));
return 0;
}
请选择正确的输出结果: D
A.5 5
B.5 11
C.87 5
D.87 11
7、
void GetMemory(char *p)
{
p = (char*)malloc(20);
}
void main()
{
char *p = NULL;
GetMemory(p);
strcpy(p, “hello world”);
printf(“%s”, p);
}
请选择正确的输出结果: D
A.hello world B.乱码 C.hello D.段错误
(因为是以传值的形式,子函数的p和主函数的p无关。而且不能对0地址进行操作)
正确写法:
void GetMemory(char **q)
GetMemory(&p)
8、
填空题
int main()
{
int a[]={2,3,2,3};
int *ptr1=(int *)(&a+1);
int *ptr2=(int *)((int)a+1);
printf(“0x%x 0x%x \n”, ptr1[-1], *ptr2);
return 0;
}
请写出程序的输出结果:_____ ______
9、
typedef int (*FUNC1)(int);
typedef int (*FUNC2)(int*, int*, int*);
int inc(int a)
{
return ++a;
}
int multi(int *a, int *b, int *c)
{
return *c=*a**b;
}
void show(FUNC2 func, int arg1, int *arg2)
{
FUNC1 p=inc;
int temp=p(arg1);
func(&temp, &arg1, arg2);
printf(“%d\n”, *arg2);
}
int main()
{
int a;
show(multi, 10, &a);
return 0;
}
请写出程序的运行结果:_____
10、
unsigned char *p1;
unsigned long *p2;
p1=(unsigned char *)0x801000;
p2=(unsigned long *)0x810000;
请问 p1+5=________ p2+5=_________
11、
struct Test
{
int Num;
char *pcName;
short sDate;
char ch;
}*p;
假设 p 的值为 0x2000,下面表达式的值为:
p+0x1=_______
(unsigned long)p+0x1=_________
(unsigned int *)p+0x1=_________
1. 画出 x86 32 位系统下,进程的虚拟地址空间布局, 明确标识出.text .data、堆、栈、user space 和 kernel space 的范围。 2. 简述 C/C++程序的编译、链接原理。
代码题目
1.实现以下函数接口,参数传入一个数字字符串 如”3456”,转换成十进制的整数并返回。 int ConvertStringToDigit(char *str) {
} 2.实现以下函数接口,判断参数传入的字符串是否 是回文,是返回 true,否则返回 false(注:回文 字符串是正反读都是一样的字符串, 如”abcdfdcba”): bool IsPalin(char *str) { } 3. 完成接口,判断系统的大小端模式,小端模式 返回 0,大端模式返回 1. int GetCurrentSysMode() {
}
|