C语言关于数组的编程题
时间: 2024-11-08 17:07:02 浏览: 27
c代码-字符数组学习jm
在C语言中,数组是一种非常基础的数据结构,常用于存储一组同类型数据。下面是一个简单的数组编程题示例:
**题目:** 编写一个程序,让用户输入一个整数数组的长度,然后创建该长度的动态数组,并允许用户逐个添加元素、查找元素和删除元素。
```c
#include <stdio.h>
#include <stdlib.h>
// 定义数组结构体
typedef struct {
int* arr; // 数组指针
int size; // 数组大小
} Array;
// 动态分配数组并初始化
Array create_array(int length) {
Array array;
array.arr = (int*)malloc(length * sizeof(int));
if (array.arr == NULL) {
printf("内存分配失败\n");
exit(1);
}
array.size = length;
return array;
}
// 添加元素到数组
void add_element(Array* arr, int element) {
arr->arr[arr->size] = element;
arr->size++;
}
// 查找元素
int find_element(Array arr, int target) {
for (int i = 0; i < arr.size; i++) {
if (arr.arr[i] == target) {
return i;
}
}
return -1; // 如果未找到目标元素,返回-1
}
// 删除元素
void delete_element(Array* arr, int index) {
if (index >= 0 && index < arr->size) {
memmove(arr->arr + index, arr->arr + index + 1, (arr->size - index - 1) * sizeof(int));
arr->size--;
} else {
printf("删除索引无效\n");
}
}
// 主函数演示如何使用
int main() {
int n;
printf("请输入数组长度: ");
scanf("%d", &n);
Array my_array = create_array(n);
while (1) {
printf("\n1. 添加元素\n2. 查找元素\n3. 删除元素\n4. 退出\n");
int choice;
scanf("%d", &choice);
switch (choice) {
case 1:
int value;
printf("请输入元素值: ");
scanf("%d", &value);
add_element(&my_array, value);
break;
case 2:
int target;
printf("请输入要查找的元素: ");
scanf("%d", &target);
int position = find_element(my_array, target);
if (position != -1)
printf("元素 %d 在位置 %d\n", target, position);
else
printf("元素不在数组中\n");
break;
case 3:
int del_index;
printf("请输入要删除的元素位置: ");
scanf("%d", &del_index);
delete_element(&my_array, del_index - 1); // 注意数组下标从0开始计数
break;
case 4:
free(my_array.arr);
return 0;
default:
printf("无效的选择\n");
break;
}
}
return 0;
}
```
阅读全文