求C语言新手学的算法

发布网友

我来回答

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;
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com