一、选择题
下列哪个选项不是C语言的基本数据类型?
- A. int
- B. float
- C. char
- D. struct
以下哪个函数用于输出一个整数?
- A. printf()
- B. scanf()
- C. puts()
- D. getchar()
在C语言中,以下哪个运算符用于取模运算?
- A. %
- B. /
- C. *
- D. +
以下哪个语句可以定义一个整型变量a并初始化为10?
- A. int a = 10;
- B. int a = 10.0;
- C. float a = 10;
- D. double a = 10.0;
在C语言中,以下哪个函数用于动态分配内存?
- A. malloc()
- B. calloc()
- C. realloc()
- D. free()
二、填空题
C语言中,定义一个整型数组并初始化为{1, 2, 3, 4, 5}的语句是______。
在C语言中,将变量a的值赋给变量b的语句是______。
以下代码段中,变量i的值是多少?______
int i = 0; for(i = 0; i < 5; i++) { printf("%d ", i); }以下代码段中,变量sum的值是多少?______
int sum = 0; for(int i = 1; i <= 10; i++) { sum += i; }以下代码段中,变量result的值是多少?______
int result = 0; int a = 5, b = 3; result = (a + b) * (a - b);
三、编程题
编写一个C语言程序,实现计算两个整数的和、差、积、商。
编写一个C语言程序,实现判断一个整数是否为素数。
编写一个C语言程序,实现冒泡排序算法。
编写一个C语言程序,实现链表的基本操作,包括创建、插入、删除和遍历。
编写一个C语言程序,实现计算斐波那契数列的前n项。
解析
选择题解析:
- 1. D。struct是C语言的结构体类型,不是基本数据类型。
- 2. A。printf()函数用于输出数据,包括整数、浮点数、字符等。
- 3. A。取模运算符是%,用于计算两个整数的余数。
- 4. A。int类型用于存储整数,初始化时可以省略小数点。
- 5. A。malloc()函数用于动态分配内存,calloc()用于分配内存并初始化为0,realloc()用于重新分配内存,free()用于释放内存。
填空题解析:
- 1. int a[5] = {1, 2, 3, 4, 5};
- 2. b = a;
- 3. 0 1 2 3 4
- 4. 25
- 5. 12
编程题解析:
-
- 程序代码如下:
#include <stdio.h> int main() { int a, b; printf("请输入两个整数:"); scanf("%d %d", &a, &b); printf("和:%d\n", a + b); printf("差:%d\n", a - b); printf("积:%d\n", a * b); printf("商:%d\n", a / b); return 0; } -
- 程序代码如下:
#include <stdio.h> #include <stdbool.h> bool is_prime(int n) { if (n <= 1) { return false; } for (int i = 2; i * i <= n; i++) { if (n % i == 0) { return false; } } return true; } int main() { int n; printf("请输入一个整数:"); scanf("%d", &n); if (is_prime(n)) { printf("%d 是素数。\n", n); } else { printf("%d 不是素数。\n", n); } return 0; } -
- 程序代码如下:
#include <stdio.h> void bubble_sort(int arr[], int n) { for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n - i - 1; j++) { if (arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } } int main() { int arr[] = {5, 2, 8, 3, 1}; int n = sizeof(arr) / sizeof(arr[0]); bubble_sort(arr, n); printf("排序后的数组:"); for (int i = 0; i < n; i++) { printf("%d ", arr[i]); } printf("\n"); return 0; } -
- 程序代码如下:
#include <stdio.h> #include <stdlib.h> struct Node { int data; struct Node* next; }; struct Node* create_node(int data) { struct Node* new_node = (struct Node*)malloc(sizeof(struct Node)); new_node->data = data; new_node->next = NULL; return new_node; } void insert_node(struct Node** head, int data) { struct Node* new_node = create_node(data); new_node->next = *head; *head = new_node; } void delete_node(struct Node** head, int data) { struct Node* temp = *head, *prev = NULL; if (temp != NULL && temp->data == data) { *head = temp->next; free(temp); return; } while (temp != NULL && temp->data != data) { prev = temp; temp = temp->next; } if (temp == NULL) { return; } prev->next = temp->next; free(temp); } void print_list(struct Node* node) { while (node != NULL) { printf("%d ", node->data); node = node->next; } printf("\n"); } int main() { struct Node* head = NULL; insert_node(&head, 5); insert_node(&head, 2); insert_node(&head, 8); insert_node(&head, 3); insert_node(&head, 1); printf("链表:"); print_list(head); delete_node(&head, 3); printf("删除3后的链表:"); print_list(head); return 0; } -
- 程序代码如下:
#include <stdio.h> void fibonacci(int n) { int a = 0, b = 1, c; if (n == 0) { printf("%d ", a); } else { printf("%d %d ", a, b); } for (int i = 2; i < n; i++) { c = a + b; a = b; b = c; printf("%d ", c); } printf("\n"); } int main() { int n; printf("请输入要计算的斐波那契数列项数:"); scanf("%d", &n); fibonacci(n); return 0; }
-
