当前位置:首页 » 编程语言 » 已排好的c语言数组
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

已排好的c语言数组

发布时间: 2022-05-12 20:46:56

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

主要有两个问题:
第一:for(i=0;getchar()!='\n';i++)==>for循环里,每次执行前先检测getchar()!='\n',而我们需要的是要在输入数字后再检查是否输入回车,所以放在循环后面:
for(
i=0;
;i++
)
{
scanf("%d",&a[i]);
if(
getchar()
==
'\n'
)
break;
}
第二:i
是从0开始计数的,所以数组数还要加1.比如输入0
1
2
3,i为3,但是是4个数。
//如下能正常运行:
#include
<stdlib.h>
#include
<stdio.h>
int
main()
{
int
a[20],i,n,x,k;
printf("请输入一组顺序数(从小到大的顺序):");
for(
i=0;
;i++
)
{
scanf("%d",&a[i]);
if(
getchar()
==
'\n'
)
break;
}
n
=
i
+
1;
//n表示数组内数字的个数
printf("请输入需要插入的数:");
scanf("%d",&x);
for(i=0;i<n;i++)
{
if(
x<=
a[i]
)
{
for(
k=
n-1;
k
>=
i;
k--)
{
a[k+1]=a[k];
}
a[i]=x;
break;
}
}
for(i=0;i<=n;
i++)
{
printf("%d
",a[i]);
}
printf("\n");
system("pause");
}

㈡ C语言有一个已排好序的整型数组,有10个元素,要求从键盘输入一个数后,按原来排序的规律将它插入数组中

源代码如下:

#include <stdlib.h>

#include <stdio.h>

int main()

{

int a[20],i,n,x,k;

printf("请输入一组顺序数(从小到大的顺序):");

for( i=0; ;i++ )

{

scanf("%d",&a[i]);

if( getchar() == ' ' )

break;

}

n = i + 1; //n表示数组内数字的个数

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

scanf("%d",&x);

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

{

if( x<= a[i] )

{

for( k= n-1; k >= i; k--)

{

a[k+1]=a[k];

}

a[i]=x;

break;

}

}

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

{

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

}

printf(" ");

system("pause");

}

(2)已排好的c语言数组扩展阅读

1、C语言支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。

2、数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量。

㈢ C语言编程:有一个已排好序的数组,现输入一个数插入到数组中,要求插入该数后数组元素仍然有序

#include <stdio.h>
main(){
int a[100],n=10,i,j,x;
/*输入10个数*/
for (i=0;i<n;i++) scanf("%d", &a[i]);
/*输入1个数*/
scanf("%d",&x);
/*找到需要插入的位置j*/
for (i=0;i<n;i++) if (a[i]<x) j=i+1;
/*把j之后的数据后移*/
for (i=n;i>j;i--) a[i]=a[i-1];
/*插入数据*/
a[j]=x;
/*输出结果*/
for (i=0;i<=n;i++) printf("%d\t", a[i]);
}

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

【例】把一个整数按大小顺序插入已排好序的数组中。
为了把一个数按大小插入已排好序的数组中,应首先确定排序是从大到小还是从小到大进行的。设排序是从大到小进序的,则可把欲插入的数与数组中各数逐个比较,当找到第一个比插入数小的元素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之间。

㈤ c语言 已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中。

#include "stdio.h"
main()
{
int a[11]={1,4,6,9,13,16,19,28,40,100};
int num,i,j;
printf("Array a:\n");
for(i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
printf("insert data:");
scanf("%d",&num);
for(i=0;i<10;i++)
if(a[i]>num)
{j=a[i];a[i]=num;num=j;}
a[i]=num;
printf("Now,array a:\n");
for(i=0;i<11;i++)
printf("%5d",a[i]);
printf("\n");
}
这绝对正确,我上机验证过了!!要加分啊。。。

㈥ 用C语言对一维数组排序,并输出已排好元素的原来位置

简单的思路:

定义一个指针数组,找到b数组中元素在a数组中的地址,并存储在指针数组对应位置。

之后将指针数组内的地址值依次取出来与a数组首地址相减,得到的就是原来的位置。

利用的原理:数组内地址是连续的!

#include<stdio.h>
intmain()
{
inta[5]={3,8,4,7,6},b[5]={8,7,6,4,3},c[5],i,j,*p[5];
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
if(b[i]==a[j])
p[i]=&a[j];
}
}

for(i=0;i<5;i++)
c[i]=p[i]-&a[0]+1;
printf("原来的位置数组c[5]={%d,%d,%d,%d,%d} ",c[0],c[1],c[2],c[3],c[4]);
}

㈦ c语言已有一个已经排好序的数组现输入一个数,要求按原来的规律将它插入数组中

你的插入排好序的数组的C语言程序,我帮你改完了(改动的地方见注释).

#include<stdio.h>

int main()

{

int a[7]={12,23,34,45,56,67};

int i,j,x;

printf("请输入一个数: ");

scanf("%d",&x);

for(i=0;i<6;i++){

if(a[i]>x){

for(j=5;j>=i;j--){//这里修改for循环

a[j+1]=a[j];//这里把i改成j

}

a[i]=x;//这里这句移到这里

break;//这里这句移到这里

}

}

printf("新的数组为: ");

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

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

printf(" ");

return 0;

}