无聊时写的一个小练习,仅仅作为个人的记录使用:
在一个原有的数组中,在原数组中,在规定的点,插入规定的数字:
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
void main()
{
int charu(int addr,int n,int *p,int * number);
int exchange(int a,int b);
int number;//用来存放你要插入的数字
int addr;//用来存放要插入数字在哪个节点
int i;
int *p=NULL;
int n;
printf("输入你一开始需要的数字个数\n");
scanf("%d",&n);
p=(int *)malloc(sizeof(int)*(n+1));//开辟一个n+1的内存空间
if(p==NULL)
{
printf("无法申请到内存空间");
}
else
{
printf("成功申请到内存空间\n");
printf("初始化你需要的n个数字\n");
//输入你需要的数字
for(i=0;i<n;i++)
scanf("%d",p+i);
printf("初始化完成,你输入的字符串为:\n");
// 输出结构
for(i=0;i<n;i++)
printf("%d\t",*(p+i));
printf("\n");
printf("输入你要插入到第几个数后面:\n");
scanf("%d",&addr);
printf("输入你要插入的数字\n");
scanf("%d",&number);
charu(addr,n,p,&number);//调用插入的函数
//输出最后的字符串
printf("最终的结果为:\n");
for(i=0;i<n+1;i++)
printf("%5d\t",*(p+i));
printf("\n");
}
}
//算法:一次将number中的值与P指向的值进行交换
int charu(int addr,int n,int *p,int *number)
{
int exchange(int *a,int* b);
for(;addr<n+1;addr++)
{
exchange(number,(p+addr));//将number中的值与指针指向的值进行交换
}
return 0;
}
//三种交换的方法
int exchange(int *a,int* b)
{
//int c;
//c=a;
//a=b;
//b=c;
*a=(*a)+(*b);
*b=(*a)-(*b);
*a=(*a)-(*b);
//a=a^b;
//b=a^b;
//a=a^b;
return 0;
}