编制一个函数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[]);
}