#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;
}