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() == '\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");

}

扩展资料

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

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

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-06-04

#include<stdio.h>

intmain()

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

inttemp,i=0,j=0;

scanf("%d",&temp);

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

if(temp<a[i]){

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

}else{

a[i+1]=temp;

break;

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

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

system("pause");

return0;

运行结果:

扩展资料:

system用法

system函数的用法,需要包含头文件#include<process.h>

这个函数跟他的参数没有任何关系,他的参数是字符串;

intsystem(constchar*command);

int_wsystem(constwchar_t*command);

command:Commandtobeexecuted

可以用来执行指定路径下的可执行文件,其中可以包含一些DOS命令,在这里使用和在CMD的命令行中执行这条命令的效果相同,比如:

system("C:\\MT_Sqlconn.exe>C:\\out.log");

这行代码的意思就是,执行C:\\MT_Sqlconn.exe,并把这个文件的输出结果重定向到C:\\out.log文件中,以前通过printf打印到标准输出的结果全system("pause");部打印到了C:\\out.log文件中。

system函数是可以调用一些DOS命令,比如

system("cls");//清屏,等于在DOS上使用cls命令system("notepad")//打开记事本程序system("ipconfig>>123.txt");//输出ipconfig查询出的结果到当前目录的123.txt文件中,每次都是覆盖的。

system(执行shell命令)

相关函数fork,execve,waitpid,popen

表头文件#include<stdlib.h>,

例:

#include<stdlib.h>

main()

system(“ls-al/etc/passwd/etc/shadow”);



本回答被网友采纳
第2个回答  推荐于2017-11-25

下面是一个升序的整型数组,从键盘插入插入一个数,使原规律不变的编程:

 

#include<stdio.h> 

int main() 

    int m,i,j,t; 

    int a[11]={1,2,4,5,7,8,9,10,22,66};

 scanf("%d",&m); 

 

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

   if(m<a[i]) 

      { for(j=9;j>=i;j--) 

           { t=a[j+1];a[j+1]=a[j];a[j]=t;} 

            a[i]=m; }   

 

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

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

    return 0;

 

 

 

希望对你有帮助,望采纳;

谢谢。。。。。

 

 

 

 

 

本回答被提问者和网友采纳
第3个回答  2013-01-04
//那你需要定义一个新数组了,程序如下吧:
#include <stdio.h>
int main() {
int a[10] = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 }; //加入是这样的数组,要么升序,要么降序;
int b[11] = { 0 };
int insert = 0;
int i = 0;
int j = 0;
int insert_already = 0;
printf("Enter the number\n");
scanf("%d", &insert);
//判断升序还是降序
if (a[0] > a[9]) //降序,插入到比他小的前面
{
while (j < 11) {
if (insert_already == 0) { //尚未插入该值
if (insert > a[i]) {
b[j] = insert;
i--;
insert_already = 1; //已经插入该值
} else {
b[j] = a[i];
}
i++;
j++;
} else //已经插入该值
{
b[j] = a[i];
i++;
j++;
}
}
} else //升序,插入到比他大的前面前面
{
while (j < 11) {
if (insert_already == 0) {
if (insert < a[i]) {
b[j] = insert;
i--;
insert_already = 1;
} else {
b[j] = a[i];
}
i++;
j++;
} else //已经插入该值
{
b[j] = a[i];
i++;
j++;
}
}
}
//输出b[11];
for (i = 0; i < 11; i++) {
printf("%d\n", b[i]);
}
return 0;
}
//给分吧
第4个回答  2013-01-04
用循环找到一个位置,使这个位置前的数都小于这个数,并且后面的数不小于这个数,再把后面的数往后移1位,把这个数插入追问

额 要程序设计…这是我们的考试题…你能把编程给我么?非常感谢!

相似回答