三九宝宝网宝宝教育教学论文

C语言 sort函数的一点疑问

02月03日 编辑 39baobao.com

[C语言 dos函数高手进!]CTime t = CTime::GetCurrentTime(); //获取系统日期 int d=t.GetDay(); //获得几号 int y=t.GetYear(); //获取年份 int m=t.GetMonth(); //获取当前月份 int h=t.GetHour(); //获取...+阅读

sort是排序吧。程序错误有三:

1. b=x-1 是错的,因为x和b一样表示数组的长度,注意,长度和最后一个下标相差一,但是在for里面采用诸如for(int m=0;m

由于这个问题,b错误的减少了1,所以输入的数组实际只有2个数

2. 双重for循环里面二个for有问题

这里,要清楚 i 和 j 的具体含义。i 之所以从1开始,就是因为要防止j+1弄到数组外面去,而且这里有个问题是,需要不断扩大“已排序”的部分。即i=1时排好前两个数,i=2时,把第三个数纳入到“已排序”的队列里面,此时注意,前面排好的就不必排了,所以,j 循环的时候是从后面开始循环的!

两个for可以这么写:

for (i = 1; i < d; i++)

for (j = i; j >=0; j--)

……

或者

for (i = d-2; i >= 0; i--)

for (j = i; j < d-1; j ++)

……

3. 一点建议,输入和输出数组以及排序分开,不要放一起,不容易读懂程序。

sort函数写得有点乱,这是非常不好的。

比如,输入数组的部分一个函数,输出又是一个函数,跳过排序,直接输出就知道输入有没有问题了,这样的结构性问题比真正的错误还要致命,因为无法迅速查找错误,而错误是不可能避免的!

以下为关联文档:

C语言中有哪些可以调用的函数#include <windows.h> // 用进程快照得到QQ进程的ID int ProcessSnapshot() { // 进程快照结构体 PROCESSENTRY32 pe32 = {sizeof(pe32)}; // 快照进程的API HANDLE hProcess...

语言函数大全和其概念在C语言中可从不同的角度对函数分类。 1. 从函数定义的角度看,函数可分为库函数和用户定义函数两种。 (1)库函数 由C系统提供,用户无须定义, 也不必在程序中作类型说明,只需在程序...

C语言要懂哪些数学函数1.光学C不需要另外懂哪种数学,如果要学的深,计算机专业的会开计算机代数基础(即线性代数,清华大学居于马著),离散数学(有图论的知识),不过这个你目前都用不着 2.语言只是一门工具,c也...

说明一下C语言函数的基本结构谢谢!函数首部包括:函数返回值类型、函数名称、以及形参;函数体是由 {} 括起来的语句组成。在函数声明中的参数列表中,不需给出具体的变量名称,但要给出每个变量的类型。确定的函数名...

C语言函数除所有变量在所有函数外部定义的变量称为全局变量(Global Variable),它的作用域是整个源程序。例如: int a, b; //外部变量void f1(){// Code}float x,y; //外部变量int fz(){// Code}int ma...

c语言快速排序qsort函数你这个是c程序还是c++ c++的话类型要求比较严格 比较函数接受的参数类型应该是const void* c的话你main里函数原型的声明也不对啊,这样改一下 #include<stdlib.h> #include<s...

C语言qsort函数对char型strmn数组的排序// 这样写就OK啦。 int cmp(const void *a, const void *b) { char *aa = (char *) a; char *bb = (char *) b; return strcmp(aa,bb); } // const void *a是表示一个指向co...

C语言中qsort函数怎么用qsort函数是编译器函数库自带的快速排序函数。qsort 的函数原型是:void qsort(void*base,size_t num,size_t width,int(__cdecl*compare)(const void*,const void*)); 它的参数...

C语言当中的qsort函数功 能: 使用快速排序例程进行排序 用 法: void qsort(void *base,int nelem,int width,int (*fcmp)(const void *,const void *)); 参数:1 待排序数组首地址 2 数组中待排序元...

推荐阅读
图文推荐