#include<stdlib.h>
void swap(int*a,int*b)
{
int temp
temp=*a
*a=*b
*b=temp
}
void select_sort(int A[],int n)
{
register int i,j,min,m
for(i=0i<n-1i++)
{
min=i//查找最小值
for(j=i+1j<nj++)
{
if(A[min]>A[j])
{
min=j
}
}
if(min!=i)
{
swap(&A[min],&A[i])
printf("第%d趟排序结果为:\n",i+1)
for(m=0m<nm++)
{
if(m>0)
{
printf("")
}
printf("%d",A[m])
}
printf("\n")
}
}
}
int main(void)
{
int n
while(scanf("%d",&n)!=EOF)/* VS2013等版本中需使用scanf_s(),VC6.0中使用scanf() */
{
int i
int*A=(int*)malloc(sizeof(int)*n)
for(i=0i<ni++)
{
scanf("%d",&A[i])
}
select_sort(A,n)
printf("最终排序结果为:\n")
for(i=0i<ni++)
{
if(i>0){
printf("")
}
printf("%d",A[i])
}
printf("\n")
}
return 0
}
晚上随手写,也未调试,权当看看
程序有不严谨地方还得调试修改
#include <REGX51.H>
#define STATUS_1S 1
#define STATUS_2S 2
#define STATUS_3S 3
#define STATUS_4S 4
#define STATUS_5S 5
#define STATUS_15S 15
#define STATUS_28S 28
#define STATUS_29S 29
#define STATUS_30S 30
unsigned char flag,status,status_temp=1,status_temp_
sbit K1 = P0^0
sbit K2 = P0^1
sbit RLED = P0^2
sbit YLED = P0^3
sbit GLED = P0^4
void Init(void)
{
ET0=1
TR0=1
RLED=0 //亮
YLED=0
GLED=0
while(status_temp)
{
switch (status)
{
case STATUS_1S: //1S
{
RLED=1 //灭,闪一次
YLED=1
GLED=1
} break
case STATUS_2S: //1S
{
RLED=0 //亮,闪一次
YLED=0
GLED=0
} break
case STATUS_3S: //1S
{
RLED=1 //灭
YLED=1
GLED=1
status_temp=0
} break
}
}
status_temp=1
ET0=0
TR0=0
}
void Init_Timer0(void)
{
TMOD=0x01
// ET0=1
// TR0=1
EA=1
TH0=0X3C
TL0=0XB0 // 未计算,偷楼上的
}
void M_Start(void)
{
TH0=0X3C
TL0=0XB0
ET0=1
TR0=1
RLED=0 //红亮
while(status_temp)
{
switch (status)
{
case STATUS_1S:
{
if(status_temp_==1)
{
YLED=0
}
} break
case STATUS_2S:
{
if(status_temp_==1)
{
YLED=1
}
} break
case STATUS_3S:
{
if(status_temp_==1)
{
YLED=0
status_temp_=0
}
} break
case STATUS_15S: //15S灭,绿亮
{
RLED=1
GLED=0
} break
case STATUS_28S:
{
GLED=1
} break
case STATUS_29S:
{
GLED=0
} break
case STATUS_30S:
{
GLED=1
status=0
status_temp_=1
} break
}
}
ET0=0
TR0=0
status=0
status_temp=1
YLED=1
}
void M_End(void)
{
TH0=0X3C
TL0=0XB0
ET0=1
TR0=1
RLED=0 //亮 1次
YLED=0
GLED=0
while(status_temp)
{
switch (status)
{
case STATUS_1S: //1S
{
RLED=1 //灭一次
YLED=1
GLED=1
} break
case STATUS_2S: //1S
{
RLED=0 //亮二次
YLED=0
GLED=0
} break
case STATUS_3S: //1S
{
RLED=1 ////灭二次
YLED=1
GLED=1
} break
case STATUS_4S: //1S
{
RLED=0 ////亮三次
YLED=0
GLED=0
} break
case STATUS_5S: //1S
{
RLED=1 ////灭三次
YLED=1
GLED=1
status_temp=0
} break
}
}
status_temp=1
ET0=0
TR0=0
}
main()
{
Init_Timer0()//定时器初始化
while(1)
{
if(K1==0)
M_Start()//模拟开始
if(K2==0)
M_End()//模拟结束
}
}
void interrupt_time0() interrupt 1 //核对头文件,一致就好
{
TH0=0X3C
TL0=0XB0
flag++
if(flag==20)
{
status++
flag=0
}
}
#include sbit pluse=P1^0void t0isr() interrupt 1 { TH1=(65536-10000)/256TL1=(65536-10000)%256pluse=~pluse} main() { TMOD=0x10TH1=(65536-10000)/256TL1=(65536-10000)%256TR1=1ET1=1EA=1while(1)}欢迎分享,转载请注明来源:内存溢出
评论列表(0条)