前言
在博客问答那见到这样的题,觉得挺不错的,所以就分享给大家,希望对大家有所帮助吧。
题目
1. 用C语言编写三个函数,分别对数组完成以下功能:
(1)编写一个函数get_elem(int arr[ ],int i),返回数组arr中的第i个元素。.
(2)编写一个函数insert_elem(int arr[ ],int i,int x),在数组arr中的第i个位置插入数值x。
(3)编写一个函数del_elem(int arr[ ],int i),删除数组arr中的第i个元素。
2. 编写主函数,进行数组的定义,数组元素的输入,并分别对上述函数进行调用,并输出结果。。
代码实现
* */
#include <stdio.h>
int sz = 5; //全局变量,数组元素的个数
/*函数声明部分*/
void my_printf(int arr[]); //打印数组
int get_elem(int arr[],int i); //返回第i个元素的值
void insert_elem(int arr[],int i,int x);//在i位置上插入x
void del_elem(int arr[],int i); //删除i位置的元素
int main()
{
int ret;
int arr[] = {1,2,3,4,5};
my_printf(arr);
//查找下标为3的元素
ret = get_elem(arr,3);
printf("ret = %d\n",ret);
//下标为1的位置插入元素8
insert_elem(arr,1,8);
my_printf(arr);
//删除下标为1的元素
del_elem(arr,1);
my_printf(arr);
return 0;
}
/*函数定义部分*/
void my_printf(int arr[])
{
int i = 0;
for(i=0;i<sz;i++)
{
printf("%d ",arr[i]);
}
printf("\n");
}
int get_elem(int arr[],int i)
{
return arr[i];
}
void insert_elem(int arr[],int i,int x)
{
if(i<0||i>sz-1)
{
return ;
}
int j = 0;
for(j=sz;j>i;j--)
{
arr[j] = arr[j-1];//把i位置后面的元素全面往后移1位,先移动最后一位元素,避免数据覆盖
}
arr[i] = x; //插入元素
sz++; //数组元素+1
}
void del_elem(int arr[],int i)
{
if(i<0||i>sz-1)
{
return ;
}
int j = 0;
for(j=i;j<sz-1;j++)
{
arr[j] = arr[j+1];//把i位置后面的元素往前移1位,先移动靠近i的,避免数据覆盖
}
sz--; //数组元素-1
}
程序运行结果: