C语言数组中插入一个元素
定义一个整形数组(足够大),数组元素从小到大排列,输入一个整数,将其插入在数组的合适位置,保持数组从小到大顺序不变,并输出数组元素的个数和数组元素的各个值。 参考下:#include <stdio.h>#define MAXSIZE 15
int move(int num[], int ci, int cnum)
{
int i;
cnum++;
for(i=cnum; i>ci; i--)
{
num = num;
}
return cnum;
}
int insert(int num[], int n, int cnum)
{
int i;
if(cnum < MAXSIZE) // 判断是否超出数组的最大容量
{
if (n >= num)// 如果待插入的数比最后一个数大或相等,则直接插入到最后
{
num = n;
cnum++; // 数组元素个数 +1
}
else
{
for(i=0; i<cnum; i++)
{
if(n < num)
{
cnum = move(num, i, cnum); // 移动数组后面的元素
num = n;
break;
}
}
}
}
else
{
printf("数组已满,无法执行插入操作~!!!\n\n");
}
return cnum;
}
void print(int num[], int cnum)
{
int i;
for(i=0; i<cnum; i++)
{
printf("%d ", num);
}
printf("\n");
}
int main(void)
{
int num = {1,2,3,4,5,6,7,8,9};
int n;
int cnum = 9; // 用于存入数组元素的个数
while(1)
{
printf("请输入个整数:");
scanf("%d", &n);
cnum = insert(num, n, cnum);
print(num, cnum);
printf("当前数组元素的个数是:%d 个\n", cnum);
}
}
ba21 发表于 2018-3-14 21:34
参考下:
非常感谢。 个人思路:
根据作业的需要,数组是以-1为结束的标志。
#include<stdio.h>
#include<stdlib.h>
int a;
void input() //输入数据
{
int i=0;
printf("请输入一个整数:");
scanf("%d",&a);
do{
i++;
printf("请输入下一个整数:");
scanf("%d",&a);
}while(a!=-1);
printf("数组输入完毕\n");
}
void insert() //插入数据
{
int x,i,j=0;
printf("请输入插入的数:");
scanf("%d",&x);
for(i=0;a!=-1;i++) //记录数组中的元素个数
{
j++;
}
for(i=0;a!=-1;i++)
{
if(x>=a&&x<=a)
{
while(i<j)
{
a=a;
j--;
}
a=x;
break; //循环一次即可
}
}
}
void output() //输出数组元素
{
for(int i=0;a!=-1;i++)
{
printf("%d\t",a);
}
printf("\n元素个数:%d",i);
}
void main() //调用函数
{
input();
insert();
output();
}
个人感觉可能更简单易懂一些,同样希望大神能够提出其中的不足之处。
页:
[1]