一维数组的增删查改练习
#include <stdio.h> #include <stdlib.h> /* 学习数组的增删改查操作 */ int main() { double nums[] = {23, 43, 98, 57, 83}; int i, j;//循环变量 int numsLen;//数组长度 int index = -1;//待查找的元素下标 double element;//待查找的值 /* 计算数组长度 */ numsLen = sizeof(nums) / sizeof(nums[0]); /* 一维数组的查找 通过数组下标实现对数组的循环访问操作,将数组元素与待查找的值进行比对 */ /* 打印数组 */ for (i = 0; i < numsLen; i++) { printf("%-8.2lf", nums[i]); } printf("\n"); /* 提示用户输入待查找的值 */ printf("请输入待查找的值:"); scanf("%lf", &element); for (i = 0; i < numsLen; i++) { if (element == nums[i]) { index = i; break; } } if (-1 != index) printf("找到了待查找的元素:%lf,他是数组的第%d个元素\n", element, index + 1); else { printf("没有找到待查找的元素:%lf\n", element); return 0; } printf("\n"); /* 数组的修改元素操作 思路:①通过下标直接修改 ②给出待修改的值,则先查找再修改 */ /* ①通过下标直接修改 */ /* 打印数组 */ for (i = 0; i < numsLen; i++) { printf("%-8.2lf", nums[i]); } printf("\n"); printf("请输入你要修改的元素序号(1-%d):", numsLen); scanf("%d", &index); /* 对用户输入的值进行合法性判断 */ if ((index < 1) || (index > numsLen))//输入的数据非法 { printf("\n输入的序号非法.\n"); return 0; } else { printf("\n请输入修改后的值:"); scanf("%lf", &element); nums[index - 1] = element;//进行数值替换 } /* 打印替换后的数组 */ printf("修改后的数组为:\n"); for (i = 0; i < numsLen; i++) { printf("%-8.2lf", nums[i]); } printf("\n\n"); /* ②给出待修改的值,则先查找再修改 思路:先查找该值再替换 */ /* 打印数组 */ index = -1; for (i = 0; i < numsLen; i++) { printf("%-8.2lf", nums[i]); } printf("\n"); printf("请输入待修改的值:");//提示用户输入待修改的值 scanf("%lf", &element); /* 查找该值 */ for (i = 0; i < numsLen; i++) { if (element == nums[i]) { index = i; break; } } if (-1 != index)//找到了该值 { printf("\n请输入修改后的值:"); scanf("%lf", &element); nums[index] = element;//进行数值替换 } else printf("数组中没有改元素\n"); /* 打印替换后的数组 */ printf("修改后的数组为:\n"); for (i = 0; i < numsLen; i++) { printf("%-8.2lf", nums[i]); } printf("\n"); /* 数组的删除操作 思路:先查找待删除元素在数组中的下标,从该下标开始下标后的元素循环覆盖前一个元素,数组长度减一 */ index = -1; /* 提示用户输入待删除的值 */ printf("请输入待删除的值:"); scanf("%lf", &element); /* 查找用户待删除元素在数组中的索引下标 */ for (i = 0; i < numsLen; i++) { if (element == nums[i]) { index = i; break; } } if (-1 != index)//找到了待删除元素的下标 { for (i = index; i < numsLen - 1; i++) { nums[i] = nums[i + 1];//后一个替换前一个 } numsLen--; /* 打印删除后的数组 */ printf("删除后的数组为:\n"); for (i = 0; i < numsLen; i++) { printf("%-8.2lf", nums[i]); } } else printf("没有找到待删除的元素:%lf\n", element); printf("\n"); /* 数组的增加操作 ①插到数组的尾部; ②插到指定序号 */ /* 插到数组的尾部 */ /* 提示用户输入待增加的值 */ printf("请输入待增加的值:"); scanf("%lf", &element); nums[numsLen] = element; numsLen++; /* 打印增加后的数组 */ printf("增加后的数组为:\n"); for (i = 0; i < numsLen; i++) { printf("%-8.2lf", nums[i]); } return 0; }