用C语言编写程序,实现在数组中指定位置插入一个新的数字?(数组不是排序好的)谢谢
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用C语言编写程序,实现在数组中指定位置插入一个新的数字?(数组不是排序好的)谢谢相关的知识,希望对你有一定的参考价值。
参考技术A 建议加一个全局变量用于存储当前有多少有效数据。就先假设是current_num好了
删除的话:
//假设删除第target位
//(数组下标为从0~current_num-1 如果不一样的话稍微改下就好)
if(target<0||target>=current_num)
//越界处理
else
for(int i=target+1;i<current_num;i++)
s[i-1]=s[i];
current_num--;
插入的话思想类似
//假设插入第target位
//(数组下标为从0~current_num-1 如果不一样的话稍微改下就好)
if(target<0||target>current_num) //target可以等于currnet_num是因为可以插入到数组尾
//越界处理
else
for(int i=target;i<current_num;i++)
s[i+1]=s[i];
//对s[target]进行赋值
current_num++;
冒泡排序——用指针实现
每日坚持编程,每天都能收获新的知识
C语言基础编程习题讲解——利用指针对数组进行排序插入操作
指针应用内容回归啦!
大家现在学习C语言的内容应该学习到了指针部分了吧,现在小编就以一道经典的指针题给大家复习一下前面所学习过的内容。
题目:
编写程序,输入10个整数到一数组,使用指针方法对数组元素排序。再读入一个任意整数并将其插入到这个已排序的整数数组中,插入后数组中的数仍然保持有序。
如何对数组实现排序?
答案是使用冒泡排序!我们已经在之前的文章中对这部分内容有所提及,那么我们今天就先来讲讲如何用指针实现数组的冒泡排序。
原理还是类似的:
void fun(int *arr, int sz)
{ int i;
int j;
int tmp;
for (i = 0; i < sz; i++)
{
for (j = 0; j < sz - 1 - i; j++)
{
if (*(arr + j) < *(arr + j + 1))
{ tmp = *(arr + j);
*(arr + j) = *(arr + j + 1);
*(arr + j + 1) = tmp;
}
}
}
}
而在这道题中,我们要求是先讲数组中10个元素进行排序再向其中插入一个数字进行排序,因此我们定义的数组长度便是11。我们再通过定义指向数组的指针p。而具体插入思维在后面数据结构内容会讲述,这里就不做分析,我们今天的任务就是了解如何用指针排序。
小编解题代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a[11],temp,insert_num;
int *p,i,j;
for(p = a;p<(a+10);p++)
scanf("%d",p);
p =a;
for(i=0;i<10;i++)
{
p = a;
for(j=0;j<10-i-1;j++)
{
if(*p>*(p+1))
{
temp = *p;
*p = *(p+1);
*(p+1) = temp;
}
p++;
}
}
scanf("%d",&insert_num);
*(a+10) = insert_num;
for(i=0;i<11;i++)
for(j=0;j<10-i;j++)
{
if(*p>*(p+1))
{
temp = *p;
*p = *(p+1);
*(p+1) = temp;
}
p++;
}
for(p = a;p<(a+11);p++)
{
printf("%d ",*p);
}
return 0;
}
总结
对数组进行排序的方法还有许多,冒泡排序是其中之一,常见的使用方法有三种:数组、函数和指针。总体来说,数组的应用还是过于死板,我们将在后面文章中发布关于动态内存分配的方式和原理。
PS:微信添加“小南教育”获取实惠划算的二级资料
以上是关于用C语言编写程序,实现在数组中指定位置插入一个新的数字?(数组不是排序好的)谢谢的主要内容,如果未能解决你的问题,请参考以下文章
用C语言实现 原字符串中指定的子串的的查找与替换代码?注:一定要有用户自己输入指定子串的那个过程!