1、先逐个筛选数组中的每个元素。
2、再比较每相邻的两个元素。
3、根据比较结果进行元素的交换,以实现排序。
4、如果要从终端输入数组,就加一个输入函数。
5、最后,如果是从小到大排序,基本逻辑也是一样的。
注意事项:
C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。
#define_CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
voidsort(inta[],intL,intx){
inttepm;
for(inti=0;i<L;++i){
intm=i;
for(intj=i+1;j<L;++j){//a[i]依次和a[i]之后的元素作比较,记录较小的下标
switch(x){
case0:
if(a[j]>a[m]){
m=j;
}break;
case1:
if(a[j]<a[m]){
m=j;
}break;
}
}
if(m!=i){
tepm=a[i];
a[i]=a[m];
a[m]=tepm;
}
}
}
voidmain(){
//intarr[11]={0,8,36,45,89,185,234,250,290,300};
intarr[11]={300,290,250,234,185,89,45,36,8,0};
intlength=sizeof(arr)/sizeof(arr[0]);
intX;
for(inti=0;i<10;++i){
printf("%d",arr[i]);
}
printf("\n请输入需要插入的数\n");
scanf("%d",&arr[10]);
if(arr[0]<arr[9]){//从小到大
X=1;
}
elseif(arr[0]>arr[10]){//从大到小
X=0;
}
sort(arr,length,X);
printf("插入新元素后数组为;\n");
for(inti=0;i<11;++i){
printf("%d",arr[i]);
}
printf("\n");
system("pause");
}
运行效果:
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”);
}
代码如下:
#include
int main()
{ int a[8]={1,3,5,7,9,11,13},i,j,t,k;
scanf("%d",&t);
for(i=1;i<8;i++)
{
#include
intmain()
{
inta[6]={1,3,6,7,9};
inti,j,x,t;
printf("insertdata:");
scanf("%d",&x);
for(i=0;i<5;i++)
题目要求是插入原有序列,并且存储在数组中
所以在要插入的位置之后所有的元素都要后移一个位置——不能前移,因为已经到0了
你的错误在for循环内部一直比较a[i]和a[i+1],没刚读入的a[9]什么事,一直到i=8了才会涉及到a[9],不过也就交换了8和9的位置而已,根本不算插入
以下程序可以正确编译运行
void main()
{
int a[10]={0,1,3,4,5,6,7,8,9};
int i,t;
int found = 0; //是否已经插入的标志位
scanf("%d",&a[9]);
t= a[9];
for(i=0;i<9;i++)
{
if(a[i]>t && !found) //判断是否为插入位置
{
t=a[i]; //插入数据并设置标志位
a[i]=a[9];
found = 1;
}
else if(found) //已经插入,之后数据全部后移1格
{
a[9] = a[i];
a[i] = t;
t = a[9];
}
}
for(i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
}