c开发面试题及答案

  • 格式:docx
  • 大小:37.63 KB
  • 文档页数:5

c开发面试题及答案

C开发面试题及答案

一、选择题

1. 在C语言中,以下哪个关键字可以用来定义一个结构体?

A. class

B. struct

C. union

D. enum

答案:B

2. C语言中,一个指针变量可以存储什么?

A. 一个整数

B. 一个浮点数

C. 一个字符串

D. 一个内存地址

答案:D

3. 下列哪个函数用于将浮点数转换为字符串?

A. atoi()

B. atof()

C. itoa()

D. sprintf()

答案:D

二、简答题

1. 解释C语言中的递归函数是什么,并给出一个简单的例子。

递归函数是指在函数内部调用自身的函数。递归函数通常用于解决那些可以被分解为相似子问题的更小问题的情况。递归函数需要有一个明确的退出条件,以避免无限递归。

例子:

```c

int factorial(int n) {

if (n <= 1) // 退出条件

return 1;

else

return n * factorial(n - 1); // 递归调用

}

```

2. 描述C语言中的动态内存分配,并说明如何释放分配的内存。

动态内存分配是指在程序运行时,根据需要分配内存空间。C语言提供了`malloc()`, `calloc()`, `realloc()`等函数来进行动态内存分配。分配的内存必须通过`free()`函数来释放,以避免内存泄漏。

例子:

```c

int *array = (int *)malloc(10 * sizeof(int)); // 分配内存

if (array == NULL) {

// 错误处理

}

// 使用array

free(array); // 释放内存 ```

三、编程题

1. 编写一个C语言程序,实现字符串的反转。

```c

#include

#include

void reverseString(char *str) {

int len = strlen(str);

for (int i = 0; i < len / 2; i++) {

char temp = str[i];

str[i] = str[len - i - 1];

str[len - i - 1] = temp;

}

}

int main() {

char str[] = "Hello, World!";

reverseString(str);

printf("Reversed string: %s\n", str);

return 0;

}

```

2. 编写一个C语言程序,实现两个整数数组的合并,并按升序排序。

```c

#include

void mergeAndSort(int *array1, int size1, int *array2, int

size2) {

int i = 0, j = 0, k = 0;

int *mergedArray = (int *)malloc((size1 + size2) *

sizeof(int));

while (i < size1 && j < size2) {

if (array1[i] < array2[j]) {

mergedArray[k++] = array1[i++];

} else {

mergedArray[k++] = array2[j++];

}

}

while (i < size1) {

mergedArray[k++] = array1[i++];

}

while (j < size2) {

mergedArray[k++] = array2[j++];

}

// 复制排序后的数组回array1,假设array1足够大

for (i = 0; i < size1 + size2; i++) {

array1[i] = mergedArray[i];

}

free(mergedArray);

}

int main() { int array1[] = {1, 5, 9, 10};

int array2[] = {2, 3, 4, 6, 8};

mergeAndSort(array1, 4, array2, 5);

printf("Sorted array: ");

for (int i = 0; i < 9; i++) {

printf("%d ", array1[i]);

}

printf("\n");

return 0;

}

```

四、问答题

1. 在C语言中,全局变量和局部变量有什么区别?

全局变量是在函数外部定义的变量,它们在程序的整个运行期间都是可用的,并且可以在程序的任何部分被访问和修改。局部变量是在函数内部定义的变量,它们只在定义它们的函数内部可见,函数执行完毕后,局部变量的生命周期结束。

2. 解释C语言中的指针和数组之间的关系。

在C语言中,数组名可以作为指针使用,它指向数组的第一个元素的内存地址。指针