c语言 排序题(指针) 指针我学的不是很好,请问我的代码哪里有问题?

问题描述

c语言 排序题(指针) 指针我学的不是很好,请问我的代码哪里有问题?

描述

将输入的四个整数按由大到小的顺序输出。
已定义如下swap函数,可实现形参pa和pb所指内存单元的内容交换。请务必使用本函数实现两个变量内容的互换。
void swap( int *pa, int *pb)
{
int t;
t=*pa; *pa=*pb; *pb=t;
}

输入

输入包含多组数据,每组输入4个整数,用空格隔开。

输出

根据每组输入,输出排序后的4个整数,由空格隔开。输出占一行。

样例输入

4 3 5 2

样例输出

5 4 3 2

我的代码:
#include
void swap(int *pa,int *pb)
{
int t;
t=*pa;
*pa=*pb;
*pb=t;
}
int main()
{
int ar[4],index,min,i,j,a,b;
while(scanf("%d%d%d%d",&ar[0],&ar[1],&ar[2],&ar[3])!=EOF)
{
for(i=0;i
{
index=i;
min=ar[i];
for(j=i;j
{
if(ar[index]>ar[j])
{
a=ar[index];
b=ar[j];
swap(a,b);//函数的调用
}
}
}
printf("%d %d %d %dn",a[0],a[1],a[2],a[3]);
}
return 0;
}

解决方案

应该写成swap(&ar[index],&ar[j])
指针是交换地址里的值,如果你给出的是ab两个变量那么当然会交换ab.的值,但对于本应该交换的ar数组没有任何关系。

话说代码里两个for都不完整,没看出来思路,但这个是肯定错了。

解决方案二:

给你改了个简单的,你那个有好几处错误,要睡觉了,不懂再联系我吧!

#include<stdio.h>
void swap(int *pa,int *pb)
{
    int t;
    t = *pa;
    *pa = *pb;
    *pb = t;
}
int main()
{
    int ar[4],i,j;
    scanf("%d%d%d%d", &ar[0], &ar[1], &ar[2], &ar[3]);
    for(i=0;i<4;i++)
    {
        for (j = i+1;j<4;j++)
        {
            if (ar[i]<ar[j])
            {
                swap(&ar[i],&ar[j]);//函数的调用
            }
        }
    }
    printf("%d %d %d %dn", ar[0], ar[1], ar[2], ar[3]);
    return 0;
}

解决方案三:

这是冒泡排序法吧。。。。。。

解决方案四:

给你写个快速排序:(致谢算法,具体调用略)

#if 1
#include
using namespace std;

void Qsort(int a[], int low, int high)
{
if (low >= high)
{
return;
}
int first = low;
int last = high;
int key = a[first];/*用字表的第一个记录作为枢轴*/

while (first < last)
{
    while (first < last && a[last] >= key)
    {
        --last;
    }

    a[first] = a[last];/*将比第一个小的移到低端*/

    while (first < last && a[first] <= key)
    {
        ++first;
    }

    a[last] = a[first];
    /*将比第一个大的移到高端*/
}
a[first] = key;/*枢轴记录到位*/
Qsort(a, low, first - 1);
Qsort(a, first + 1, high);

}
#endif

时间: 2024-10-30 01:10:09

c语言 排序题(指针) 指针我学的不是很好,请问我的代码哪里有问题?的相关文章

函数指针 c语言 指针-C语言指向函数的指针的调用

问题描述 C语言指向函数的指针的调用 int *d_bubblesort(int a[]int n)//数组长度为n的冒泡降序排序{int ij;int temp;for(i=0;i {for(j=n-1;j>i;j--){if(a[j]>a[j-1]){temp=a[j-1];a[j-1]=a[j];a[j]=temp;} }}return(a);} void main(){int i;int *p;int a[10]={65412398710};int (*fun)(intint);fun

c语言 计算机二级 字符指针

问题描述 c语言 计算机二级 字符指针 我认为该选c,但标准答案给的a 求解啊 解决方案 #include <stdio.h> int main() { char a[] = "china", *p; p = a; printf("%c %c ", *p, a[0]); //c c 两值相等 C也是对的 printf("%p %p ", p, a);//0x7fffcdfc9220 0x7fffcdfc9220 我觉得A不是对的,虽然

c语言,形参是指针的引用,和形参是指针,两者结果不同,求指点

问题描述 c语言,形参是指针的引用,和形参是指针,两者结果不同,求指点 自定义的头文件 typedef struct BiTNode { int data; struct BiTNode *lchild, *rchild; }BiTNode, *BiTree; 如下是使用形参是指针的引用的函数,结果是正确的 #include "BiTree.h" #include "stdlib.h" #include "stdio.h" bool Delete

c语言-C语言结构体的指针问题。

问题描述 C语言结构体的指针问题. struct GenInfo { uint64_t (*next)(struct GenInfo * const); enum GeneratorType type; union { struct GenInfo_Constant constant; struct GenInfo_Counter counter; struct GenInfo_Discrete discrete; struct GenInfo_Exponential exponential;

struct-C语言结构体变量指针问题,求助

问题描述 C语言结构体变量指针问题,求助 #include #include #include #define N 10 typedef struct { char name[10]; double price; struct { int year;int month;int day ;}date; }STREC; int fun(STREC a,double p) { int i,j=0; double q; for(i=0; i < N ; i++,a++) { q=a->price; i

malloc-C语言中的字符指针操作问题,如何释放字符指针空间?

问题描述 C语言中的字符指针操作问题,如何释放字符指针空间? 源码如下: #include #include #include void main() { char s1; char *s2 = "bbb"; char *s3 = "ccc"; s1 = (char)malloc(sizeof(s2)); strcpy(s1, s2); strcat(s1, s3); //free(s2); //free(s3); printf("%s ", s

函数调用-C语言编程题,插入求和函数,排序函数。么有错误,但结果不对!

问题描述 C语言编程题,插入求和函数,排序函数.么有错误,但结果不对! 定义一个包括学号.姓名及三门课的成绩和总分的结构体,利用该结构体说明一个包含五个人的结构体数组.从键盘输入五个人的基本信息.计算总分,并根据总分排序输出一个成绩单! 解决方案 show us the code加个断点调试吧看看每次排序后的顺序是否如预期结果 解决方案二: 这个代码也没贴出来,怎么知道问题出在哪里 解决方案三: 复 6楼 newdos#include void shuru(void);void qiuhepai

c语言结构体中指针数组怎样赋值

问题描述 c语言结构体中指针数组怎样赋值 定义一个结构体struct AS{ char *p[1]:}:怎样用gets函数给指针数组赋值呢? 解决方案 看Unix/Linux上的man: Standard C Library Functions gets(3C)NAME gets fgets - get a string from a stream SYNOPSIS #include char *gets(char *s); char *fgets(char *s int n FILE *str

c语言-如何在C语言中以数组指针作为形参输出数组

问题描述 如何在C语言中以数组指针作为形参输出数组 #include ""stdafx.h""void cmdsend(unsigned int * info);int main(){ unsigned int senddata[5]; senddata[0] = 8; senddata[1] = 2; senddata[2] = 0; senddata[3] = 4; senddata[4] = 5; cmdsend( senddata ); while(1){;