排序题

博客讨论了一个C语言实现的JsSort函数,该函数用于对字符串中下标为奇数的字符进行ASCII值从大到小的排序。在给出的代码中,存在数组参数格式错误、排序算法不正确等问题,博主同学提供的修改版代码引入了冒泡排序法并修正了参数问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  

编制一个函数JsSort,其函数功能是:对字符串变量的下标为奇数的字符按其ASCII值从大到小进行排序,排序后结果任放入字符串中。比如:
位置:                    0      1    2    3    4    5    6    7    
源字符串:             a      b    c    d    e    f    g     h
排序后的字符串:   a     h     c    f     e    d   g    b

 

第一次做完后的程序错误很多。我发个我同学修改后的草稿。但是他对我排序的方法没理解对。还有对我有返回值的函数调用没理解。这2个方面我个人认为他理解错了。希望大牛指点。

编制一个函数JsSort,其函数功能是:对字符串变量的下标为奇数的字符按其ASCII值从大到小进行排序,排序后结果任放入字符串中。比如:
位置:             0      1    2    3    4    5    6    7   
源字符串:         a      b    c    d    e    f    g     h
排序后的字符串:   a     h     c    f     e    d   g    b

#include <stdio.h>

int JsSort(int n);

void main()
{
 int i;
 char a[8]={'a','b','c','d','e','f','g','h'};

 printf("input a array:\n");
 scanf("%d",&a[8]);数组的输入可以用for循环,“&”是取地址符,“a[8]”非定义时表示数组a中的第8个元素。For循环应使用a[i].
[A1]  printf("\n");

 for(i=0;i<8;i++)
 if(i%2!=0)
 {
  JsSort(i);
 }[A2] 你是对数组中的元素排序,JsSort(i)是个什么东西?

 for(i=0;i<8;i++)
  printf("%3d[A3] 字符输出应采用“%c”,“%d”是输出整数的格式",a[i]);
}

int JsSort(int n)数组作为函数参数,可以采用(char a[],int n),n表示数组元素个数
{
 int k,temp;
 char a[8];
 for(k=0;k<4;k++)既然排序的对象是下标为奇数,那个k应该从K=1开始,既然是奇数,那么下一个FOR循环中应该是从n=k+2开始
  for(n=0;n<8-k;n=n+2)
   if(a[n]<a[n+2])
   {
    temp=a[n];
    a[n]=a[n+2];
    a[n+2]=temp;
   }
[A4]  return(a[n]);
}

你的程序问题很多。

1.数组作为函数参数的格式不对

2.排序算法有问题

你可以参照下我给你的程序,看看哪里不同。再一个,既然例子很多,你为什么不参考下别人的程序,看看自己是的程序与别人的程序区别在什么地方呢?!


 

 

 

 

 

 

#include <stdio.h>

 

int JsSort(char a[],int n);

 

void main()

{

         int i;

         char a[]={'a','b','c','d','e','f','g','h'};                             /*定义并初始化数组*/

 

         for(i=0;i<8;i++)                                                        /*数组的输入*/

                   printf("input a array:\n");

             scanf("%d",&a[i]);

             printf("\n");

 

         for(i=0;i<8;i++)                                                       /*在数组元素为8个范围内实现对数组的调用*/

         if(i%2!=0)

         {

                   JsSort(a[],i);                                                         /*调用JsSort函数*/

         }

 

         for(i=0;i<8;i++)                                                       /*输出数组*/

                   printf("%3c",a[i]);

}

 

int JsSort(char a[],int n)                                                          /*JsSort函数实现对数组元素的排序功能*/

{

         int k,temp;

         for(k=0;k<4;k++)                                                         /*冒泡排序法,先说明排序的次数*/

                   for(n=0;n<8-k;n=n+2)                                                 /*冒泡排序法,说明排序的范围*/

                            if(a[n]<a[n+2])

                            {

                                     temp=a[n];

                                     a[n]=a[n+2];

                                     a[n+2]=temp;

                            }

         return(a[]);

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值