学习c语言练习题

继上次说要总结排序知识之后,也过去好几天了,也一直没总结下一个,今天就趁着这个活动,把课上老师讲的笔记敲进来,顺便得一个五一勋章,美滋滋。

首先:我们对于排序,有个序言:

当我们处理存储在数组中的大量的数据的时候,就需要对数据进行处理,比如排序,查找之类的操作。

我们就举例说明:(书上的例子)

从键盘输入某班学生某门课的成绩(每班人数最多不超过40人),当输入为负值的时候呢,就表示输入结束,试编程将分数从高到低的顺序进行排序输出。用函数实现排序功能。

这道题的具体思路呢,或者说排序的大致的思路呢,就是两层循环。一层循环负责找出最值,另一层循环就是进行的轮数,持续的找最值。

一:

选择排序法:

选择排序的思想:

首先进行第一轮比较,参与比较的数有n个,将第一个数分别与后面所有的数进行比较,若后面的数较大,则交换后面这个数和第一个数的位置。这一轮比较结束以后,就求出了一个最大数放在了第一个数位置,然后进行第二轮的比较,参与比较的数变为n-1个,在这n-1个数中按上述方法求出一个最大的数放在第二个位置,然后进行第三轮的比较。以此类推。直到n-1轮比较。参与比较的数字的个数变为了两个。

第一轮:

①:84 83 88 87 61

②:84 83 88 87 61

③:88 83 84 87 61

④:88 83 84 87 61

⑤:88 83 84 87 61

第二轮:

①:88 83 84 87 61

②:88 84 83 87 61

③:88 87 83 84 61

④:88 87 83 84 61

第三轮:

①:88 87 83 84 61

②:88 87 84 83 61

③:88 87 84 83 61

第四轮:

①:88 87 84 83 61

②:88 87 84 83 61

代码如下:

#include 
#define N 40
int ReadScore(int score[]);
void DataSort(int score[],int n);
void PrintScore(int score[],int n);


int main()
{
    int score[N],n;
    n=ReadScore(score);
    printf("Total students are %d\n",n);
    DataSort(score,n);
    printf("Sorted scores:");
    PrintScore(score,n);
    return 0;
}

int ReadScore(int score[])
{
    int i=-1;
    do
    {
        i++;
        printf("input score:");
        scanf("%d",&score[i]);
    }while(score[i]>=0);
    return i;
}

void DataSort(int score[],int n)
{
    int i,j,temp;
    for(i=0;iscore[i])
            {
                temp=score[j];
                score[j]=score[i];
                score[i]=temp;
            }
        }
    }
}

void PrintScore(int score[],int n)
{
    int i;
    for(i=0;i

运行结果如下:

学习c语言练习题_第1张图片

 

欢迎交流(我要有五一勋章了!)

你可能感兴趣的:(学习,sse题库,笔记总结)