问题描述
- VS2013编译器关于c与语言的用指针排序
-
// 擂台法.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"
#include
void leitai(int a, int b);
#define N 5
int _tmain(int argc, _TCHAR argv[])
{
int a[N] = { 5, 6, 1, 3, 9 };
leitai(a, N);
for (int i = 0; i < N; i++)
printf("%dn", a[i]);
system("pause");
return 0;
}
void leitai(int *a, int b)
{
for (int i = 0; i < N - 1; i++)
{
int t = *(a + i), j, k;
for (j = i; j < N; j++)
if (t < *(a + i + j))
k = j;
if (k != i)
{
int s = *(a + i);
*(a + i) = *(a + i + j);
*(a + i + j) = s;
}
}
}
解决方案
1.函数声明处应该为:void leitai(int *a, int b);
2.排序函数应如下:
void leitai(int *a, int b)
{
for (int i = 0; i < N - 1; i++)
{
int t = *(a + i), j, k = i;
for (j = 1; j < N - i - 1; j++)
{
if (t < *(a + i + j))
{
k = i + j;
t = *(a + i + j);
}
}
if (k != i)
{
int s = *(a + i);
*(a + i) = *(a + i + j);
*(a + i + j) = s;
}
}
}
解决方案二:
不知道那个地方错了,求助