c语言程序设计:有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中

用c语言做以下题目:已有一个已排好的数组,要求输入一个数后,按原来排序的规律将它插入数组中。~

1、先逐个筛选数组中的每个元素。

2、再比较每相邻的两个元素。

3、根据比较结果进行元素的交换,以实现排序。

4、如果要从终端输入数组,就加一个输入函数。

5、最后,如果是从小到大排序,基本逻辑也是一样的。

注意事项:
C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。

中间那一段改成:
scanf(…)//这一句及前面的不变
for(i=0;i<4;i++)if(x<a[i])break;
if(i=i;j--)a[j+1]=a[j];
a[i]=x;
for(i=0;i<5;i++)
{
printf(…)//这一句及后面的不变
应该就好了。
有什么问题请留言。

【例】把一个整数按大小顺序插入已排好序的数组中。
为了把一个数按大小插入已排好序的数组中,应首先确定排序是从大到小还是从小到大进行的。设排序是从大到小进序的,则可把欲插入的数与数组中各数逐个比较,当找到第一个比插入数小的元素i时,该元素之前即为插入位置。然后从数组最后一个元素开始到该元素为止,逐个后移一个单元。最后把插入数赋予元素i即可。如果被插入数比所有的元素值都小则插入最后位置。
main()
{
int i,j,p,q,s,n,a[11]={127,3,6,28,54,68,87,105,162,18};
for(i=0;i<10;i++)
{ p=i;q=a[i];
for(j=i+1;j<10;j++)
if(q<a[j]) {p=j;q=a[j];}
if(p!=i)
{
s=a[i];
a[i]=a[p];
a[p]=s;
}
printf("%d ",a[i]);
}
printf("\ninput number:\n");
scanf("%d",&n);
for(i=0;i<10;i++)
if(n>a[i])
{for(s=9;s>=i;s--) a[s+1]=a[s];
break;}
a[i]=n;
for(i=0;i<=10;i++)
printf("%d ",a[i]);
printf("\n");
}

本程序首先对数组a中的10个数从大到小排序并输出排序结果。然后输入要插入的整数n。再用一个for语句把n和数组元素逐个比较,如果发现有n>a[i]时,则由一个内循环把i以下各元素值顺次后移一个单元。后移应从后向前进行(从a[9]开始到a[i]为止)。 后移结束跳出外循环。插入点为i,把n赋予a[i]即可。 如所有的元素均大于被插入数,则并未进行过后移工作。此时i=10,结果是把n赋于a[10]。最后一个循环输出插入数后的数组各元素值。
程序运行时,输入数47。从结果中可以看出47已插入到54和 28之间。

#include<stdio.h> 
 int main() 
 { 
 int a[6] = {1,3,6,7,9};
   int i,j,x,t; 
   printf("insert data:");  
  scanf("%d",&x);  
  for(i=0;i<5;i++) 
    if(x<a[i])  
    break;   
   for(j=5;j>i;j--) 
      a[j]=a[j-1];
        a[j]=x;     
   printf("Now array a:
"); 
       for(i=0;i<6;i++)  
      printf("%4d",a[i]);  
      printf("
");     
   return 0;
    }


  1. 分析问题

  2. 画出程序的基本轮廓

  3. 实现该程序

  4. 编写程序

  5. 测试和调试程序

  6. 提供数据打印结果



#include<stdio.h>
int main()
{
int a[7]={12,23,34,45,56,67};//初始化,使a中的元素值非递减有序
int i,j,x;
printf("Please input x be inserted:\n");
scanf("%d",&x);
for(i=0;i<6&&a[i]<x;i++);//查找待插入的位置i,循环停止时的i就是
for(j=5;j>=i;j--)
a[j+1]=a[j];
a[j]=x;
printf("The new array is:\n");
for(i=0;i<7;i++)
printf("%5d",a[i];
printf("\n");
return 0;
}
好好揣摩一下吧。。。祝你好运。。。

C程序编写,将一个数插入到一个已经有序的数组里,要求保持有序
答:n; j++)//冒泡排序,将数组数列排好 { for (i = 0; i < n - j; i++){ if (b[i] > b[i + 1]){ t = b[i];b[i] = b[i + 1];b[i + 1] = t;} } } for (j = 0; j < n + 1; j++)//顺序输出 { printf("%d ", b[j]);} } 程序输出结果如下:...

c语言!!!程序设计:建立一个学生信息链表,包括学号,姓名,成绩.(实现添...
答:代码如下:/*用c语言链表编写一个学生信息系统程序,要求输出学生的学号,姓名,性别,学号,姓名,成绩(实现添加,删除,查询,排序,平均)*/ include <stdio.h> include <iostream> include <string.h> include <stdlib.h> using namespace std;const int n=5;/ nodeEntry : 节点数据类型 nodeADT...

C语言:结构化程序设计方法
答:由于其高效的性能和强大的可移植性,C语言已经被广泛地移植到了各种类型的计算机上,形成了多种版本的C语言。源程序的结构特点C源程序的结构特点鲜明,一个源程序可以由一个或多个源文件组成,每个源文件又包含一个或多个函数。不论源程序由多少个文件组成,都只能有一个主函数,即main函数,它是程序的入口点。

C语言程序设计
答:用C语言程序设计管理学生信息(包括学号,姓名,3门科目的成绩,总分)要求:输入以上信息,显示信息,还能添加信息,删除信息,修改信息,总分排序(升序降序无要求),通过学号查找... 用C语言程序设计管理学生信息(包括学号,姓名,3门科目的成绩,总分)要求:输入以上信息,显示信息,还能添加信息,删除信息,修改信息,总分排序(升序...

c语言程序设计:设变量a、b、c分别存放从键盘输入的3个整数。编写程序...
答:include<stdio.h> int main(){ int a,b,c,t;scanf("%d%d%d",&a,&b,&c);if(a<b) {t=a;a=b;b=t;};//如果a<b,则交换a,b的位置 if(a<c) {t=a;a=c;c=t;};//如果a<c,则交换a,c的位置 if(c>b) {t=c;c=b;b=t;}//如果 c>b,则交换c,b的位置,以保证c...

...删除其中所有值等于X的元素完整的C语言程序
答:操作结果:销毁顺序线性表L */void DestroyList(SqList *L) { free(L->elem);L->elem=NULL;L->length=0;L->listsize=0;}/* 初始条件:顺序线性表L已存在,1≤i≤ListLength(L)+1 *//* 操作结果:在L中第i个位置之前插入新的数据元素e,L的长度加1 */Status ListInsert(SqList *L,...

用C语言编写一个简单的学生成绩管理的程序
答:}while(1);/*至此功能选择结束*/ } void input()/*原始数据录入模块*/ { int i=0;char ch;do { printf("\t\t\t\t1.录入学员信息\n输入第%d个学员的信息\n",i+1);printf("\n输入学生编号:");scanf("%d",&stu[i].no);fflush(stdin);printf("\n输入学员姓名:");fflush(stdin)...

C语言程序设计
答:int c = 0;printf("目前数据库为%s,需要修改吗?(选择y修改数据库名,其他任意键放弃修改)", filename);c = getch();if(c == 'y' || c == 'Y') { printf("请输入新数据库名(目前名称为%s):", filename);scanf("%s", filename);}/*end SetDB*/ return 0;}/*end Set...

设计一个c语言程序 据要求设计菜单程序 好的话可以追加哦
答:printf("输入一个整数(-1 结束):");while(scanf("%d",&x) == 1 && x != -1) {p->next = (pNode)malloc(sizeof(struct node));p->next->data = x;p = p->next;printf("输入一个整数(-1 结束):");}p->next= NULL;}void AppendNode(LinkList head, int x) {pNode p ...

请大家帮忙用C语言编个程序,“有一个三乘四的矩阵,求编程求出其中值最...
答:{ int max,maxi,maxj,min,mini,minj,a[3][4],i,j;printf("input numbers:\n');for(i=0,i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);max=min=a[0][0];for(i=0,i<3;i++)for(j=0;j<4;j++){ if(a[i][j]>max){ max=a[i][j];maxi=i+1;maxj...

IT评价网,数码产品家用电器电子设备等点评来自于网友使用感受交流,不对其内容作任何保证

联系反馈
Copyright© IT评价网