发布网友
共1个回答
热心网友
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <string.h>
#define BN 20
#define SN 40
#define STRN 5
#define MaxStr 30
void bubblesort(int *a, int n)
{
int i,j,temp;
for(j=0;j<n;j++)
{
for(i=0;i<n-j-1;i++)
{
if(a[i]<a[i+1])//降序
{
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
}
}
}
//输出用
void printint(int* a, int n)
{
int j=0;
for(int i=0; i<n; ++i)
{
printf("%3d ",a[i]);
++j;
if(j%10==0)
{
printf("\n");
}
}
printf("\n");
}
void bubble()
{
int a[BN];
srand(time(NULL));
//产生0-99之间的随机数
for(int i=0; i<BN; ++i)
{
a[i] = rand()%100;
}
printf("随机数:\n");
printint(a,BN);
bubblesort(a,BN);
printf("排序结果:\n");
printint(a,BN);
printf("\n");
}
void selectsort(float *a, int n)
{
int i,j,index;
float temp;
for(j=0;j<n-1;j++)
{
index = j;
for(i=j+1;i<n;i++)
{
if(a[index]<a[i])
{
index = i;
}
}
if (index != j)
{
temp=a[index];
a[index]=a[j];
a[j]=temp;
}
}
}
//输出用
void printfloat(float* a, int n)
{
int j=0;
for(int i=0; i<n; ++i)
{
printf("%5.2f ",a[i]);
++j;
if(j%10==0)
{
printf("\n");
}
}
printf("\n");
}
void select()
{
float a[SN];
srand(time(NULL));
//产生0-10之间的随机数
for(int i=0; i<SN; ++i)
{
a[i] = rand()%100/10.0;
}
printf("随机数:\n");
printfloat(a,SN);
selectsort(a,SN);
printf("排序结果:\n");
printfloat(a,SN);
printf("\n");
}
void sortstr(char a[][MaxStr],int n)
{
int i,j;
char temp[MaxStr];
for(j=0;j<n;j++)
{
for(i=0;i<n-j-1;i++)
{
if(strcmp(a[i],a[i+1])>0)
{
strcpy(temp,a[i]);
strcpy(a[i],a[i+1]);
strcpy(a[i+1],temp);
}
}
}
}
void printstr(char a[][MaxStr], int n)
{
for(int i=0; i<n; ++i)
{
printf("%s\n",a[i]);
}
}
void str()
{
printf("请输入%d个字符串:\n",STRN);
char a[STRN][MaxStr];
for(int i=0; i<STRN; ++i)
{
scanf("%s",a[i]);
}
printf("姓氏:\n");
printstr(a,STRN);
sortstr(a,STRN);
printf("排序结果:\n");
printstr(a,STRN);
printf("\n");
}
int main()
{
bubble();
select();
str();
return 0;
}