我的排序,输入n个数,然后进行升降排序

#include <stdio.h>

int main()
{
    int a,b,c,n;
   
    printf("please input n:\n");
    scanf("%d",&n);
    if(n <= 0)
    {
        printf("input n error\n");
        return -1;
    }
    int src[n];
    int str[n];
    int count = 0;
    int count1 = 0;
    printf("please input number\n");
  
    for(a = 0;a < n;a++)
    {
        scanf("%d",&src[a]);
    }
   
    int *p;
    p = src;
    c = n;
    while(c--)
    {
      
        for(b = 0;b < n;b++)    //思路:*p是首元素, 算出数组中有几个元素比他大的,有几个和他相等的,然后放到另一个数组中,然后p++,直到遍历完数组
        {
            if(*p > src[b])
                count++;
            if(*p == src[b])
                count1++;
        }
         //   printf("count  = %d\n",count);
            while(count1--)
            {
            //  str[n - count -count1 - 1] = *p;   逆序输出
                str[count + count1] = *p;        //正序输出
            }
            count = 0;
            count1 = 0;
            p = p + 1;
       
    }
    for(a = 0;a < n;a++)
    {
        printf("str[%d] = %d\n",a,str[a]);
    }
   
    return 0;
}
利用MFC进行数字的升降排序可以通过以下步骤实现: 1. 创建一个MFC的桌面应用程序,并添加一个对话框。 2. 在对话框上添加一个编辑框和两个按钮,分别用于输入数字和进行排序操作。 3. 在按钮的响应函数中,获取编辑框中输入的数字,并将其存储到一个数组中。 4. 使用冒泡排序或者快速排序排序算法对数组进行升降排序。 5. 将排序后的数组重新显示到编辑框中,以便用户查看结果。 以下是一个示例代码,用于实现升序排序: ``` void CMyDialog::OnSortAscending() { CString str; int arr[100]; GetDlgItemText(IDC_EDIT_NUMBER, str); // 获取编辑框中输入的数字 int count = 0; char* nextToken; char* context = NULL; char* token = strtok_s(str.GetBuffer(), _T(" "), &context); // 使用空格分割输入的数字 while (token != NULL) { arr[count++] = _ttoi(token); // 将字符串转换为整数 token = strtok_s(NULL, _T(" "), &context); } // 使用冒泡排序对数组进行升降排序 for (int i = 0; i < count-1; i++) { for (int j = 0; j < count-i-1; j++) { if (arr[j] > arr[j+1]) { int temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } // 将排序后的数组重新显示到编辑框中 str.Empty(); for (int i = 0; i < count; i++) { str.AppendFormat(_T("%d "), arr[i]); } SetDlgItemText(IDC_EDIT_NUMBER, str); } ``` 通过以上步骤,我们可以利用MFC实现对数字进行升降排序功能。需要注意的是,上述示例代码中使用的是冒泡排序算法,你也可以使用其他排序算法,根据实际需求进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值