C编程的一个小题目:有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中。

   更新日期:2024.05.16

#include<stdio.h>

int main()

{

int a[11]={1,4,6,9,13,16,19,28,40,100};

int temp,i=0,j=0;

scanf("%d",&temp);

for(i=9;i>=0;i--)

{

if(temp&lt;a<i>){

a[i+1]=a<i>;

}else{

a[i+1]=temp;

break;

}

}

for(i=0;i&lt;11;i++)

{

printf("%d",a<i>);

}

system("pause");

return 0;

}

扩展资料:

printf用法:

printf()函数的调用格式为:printf("&lt;格式化字符串&gt;",&lt;参量表&gt;)。

其中格式化字符串包括两部分内容:一部分是正常字符,这些字符将按原样输出;另一部分是格式化规定字符,以"%"开始,后跟一个或几个规定字符,用来确定输出内容格式。

参量表是需要输出的一系列参数,其个数必须与格式化字符串所说明的输出参数个数一样多,各参数之间用","分开,且顺序一一对应,否则将会出现意想不到的错误。

比如:

int a=1234;

printf("a=%d
",a);

输出结果为a=1234。

printf的格式控制的完整格式:

%-0 m.n l或h格式字符

下面对组成格式说明的各项加以说明:

①%:表示格式说明的起始符号,不可缺少。

②-:有-表示左对齐输出,如省略表示右对齐输出。

③0:有0表示指定空位填0,如省略表示指定空位不填。

④m.n:m指域宽,即对应的输出项在输出设备上所占的字符数。N指精度。用于说明输出的实型数的小数位数。为指定n时,隐含的精度为n=6位。

⑤l或h:l对整型指long型,对实型指double型。h用于将整型的格式字符修正为short型。



调试了一下,是末尾补值语句有逻辑错误,如下图:

数组a[],b[]在编译后在内存中是相邻的,即b[7]之后紧接a[0],在i=6时,b[]插入了23,j变成7,又走到i==6的判断,执行了b[j+1]=k语句,此时是b[8]=k(数组越界),b[8]就是a[0]的地址,故看到a[0]被赋值23.i==6的逻辑判断不严密。

 

修改代码和注释如下:

#include <stdio.h>

int main()

{

 int i,j,k,a[]={3,5,7,9,10,12,35},b[8];

 char flag_inserted=0;  //增加1个已完成插入的标志,中间插入与后边补值互斥

 printf("请输入需要插入的数:");

 scanf("%d",&k);

 for(i=0,j=0;i<7;i++,j++)

 {

  if(i==j)

  {

   if(k<a[i])

   {

    b[j]=k;

    j=j+1;

    flag_inserted=1;

   }

   //if((i==6)   //需要过滤已插入值的情况

   if((i==6)&&(flag_inserted==0))  

    b[j+1]=k;

  }

  b[j]=a[i];

 }

 printf("原数组为:");

 for(i=0;i<7;i++)

  printf("%5d",a[i]);

 printf("
");

 printf("新数组为:");

 for(j=0;j<8;j++)

  printf("%5d",b[j]);

 printf("
");

 return 0;

}

在VC6调试通过,如下图:

供参考。



  • 17579072784 :c语言程序编写 有一个已排好序的数组,由键盘又输入一个数,要求按原来排...
    米败林3009 :答:printf("请输入排好序的一串数字:\n");for(i=0;i<n;i++)scanf("%d",&a);printf("请输入要插入的数:");scanf("%d",&x);if(a[0]<a[1])//该数组按升序排列 { for(i=0;i<n;i++)if(x<a)break;for(j=n;j>=i;j--)//从插入位置后一位开始,每一个元素向后移一个位...
  • 17579072784 :编写一段C语言程序,有一个已经按从小到大排好序的数组,要求输入一个...
    米败林3009 :答:include<stdio.h> define N 20 define M 11 void main() { int a[N]={1,3,5,7,9,11,13,15,17,19,21},x,i,j;scanf("%d",&x);for ( i=M;i>0;i++ ) if ( a[i-1]>x ) a[i]=a[i-1]; else break;a[i]=x;for ( i=0;i<M+1;i++ ) printf("%d ",a[i...
  • 17579072784 :二级C语言:已有一个已排好序的数组,要求输入一个数后,按原来的排序的规...
    米败林3009 :答:include <stdio.h> int main() { int a[15] = {9,12,13,23,24,35,46,54,57,67,89}; int i,j,x,n = 11; int flag = 1; for(i = 0; i < n; ++i) printf("%d ",a[i]); printf("\n要插入的数:"); scanf("%d",&x); for(i = 0; i...
  • 17579072784 :C语言:已知一个已排好序的数组,a[]={1,2,3,4,5,6,7,8}.现在重新输入一...
    米败林3009 :答:int a[]={1,2,3,4,5,6,7,8};int alen = sizeof(a);int b[alen+1];int i;int c; //插入的 int ins = 0; //插入标记 for(i=0; i<alen; i++){ if(c
  • 17579072784 :有一个已经排好序的数组,今输入一个数,要求按原来的排序的规律将它插入...
    米败林3009 :答:} printf("\n");}//在有序数组插入数据,用折半插入法void InsertData(int data[],int *n,int x){ int j; int theLen; int low,high,mid; theLen=*n; data[0]=x; low=1; high=theLen; while(low<=high) { mid=(low+high)/2; if(data[mid...
  • 17579072784 :1.编程实现:将一个任意整数插入到一个已排序的整数数组中,插入后数组...
    米败林3009 :答:main( ){ int i,j,number;int a[11]={1,4,6,9,13,16,19,28,40,100};/*数组初始化时预留一位置*/ printf("array a:\n");for(i=0;i<10;i++) /* 输出数组原有元素 */ printf("%d ",a[i]);printf("\n");printf("Insert data:");scanf("%d"...
  • 17579072784 :C语言 将两个已排序(从小到大)的线性表归并为一个线性表,并且归并后...
    米败林3009 :答:以下代码创建了一个奇数线性表和一个偶数线性表,奇数表有10个节点,偶数表有5个节点。先看运行结果 以下是代码 include <stdio.h>#include <stdlib.h>typedef struct List { int number; struct List*next;} LinearList;LinearList*createList(int);LinearList*createList2(int);void freeList(...
  • 17579072784 :用c语言编程一个程序:有n个数已经从小到排列好,要求输入一个数将其插 ...
    米败林3009 :答:include <stdio.h>int main(int argc, const char *argv[]){int i = 0, j = 0;int a[11] = {10,20,30,40,50,60,70,80,90,100};int n = 0;int num = 10;int tmp = 0;printf("原有数组:\n");for (i=0; i<num; i++){printf("%d ",a[i]);}printf("\n");...
  • 17579072784 :c语言题目 填空:从键盘输入一个整数,将其插入已排序的数组中,要求仍然...
    米败林3009 :答:抄代码抄错了 最后一个printf 后面用a[i] 这里不需要&的。第一个空填的不对。include <stdio.h>void main(){int x,i,k=10;int a[11]={5,11,21,31,41,51,61,71,81,91}printf("请输入需要插入的一个整数:");scanf("%d",&x);k=10;for(i=0;i<10;i++)if(x>a[i]){k...
  • 17579072784 :C语言中,怎样把一个整数按大小顺序插入已经排好序的整形数组中?
    米败林3009 :答:4 2012-04-22 把一个整数x按大小顺序插入已排好序(从大到小,数据已定义)的... 2015-11-16 c语言,有一个已安排好序的数组,要求输入一个数后,按原来排序... 2012-01-05 c语言编程:将一个任意整数插入到已排列的整型数组中,插入后,... 31 更多...
  • 相关链接

    欢迎反馈与建议,请联系电邮
    2024 © 视觉网