请编写函数fun,对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按ASCII码降序排列。 例如,原来的字符串为:CEAedca,排序后输出为:CedeEAa。 注意:部分源程序在文件PROG1.C中。 请勿改动主函数mam和其他函数中的任何内容,

admin2019-09-02  26

问题 请编写函数fun,对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按ASCII码降序排列。
例如,原来的字符串为:CEAedca,排序后输出为:CedeEAa。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数mam和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include<stdio.h>
#include<ctype.h>
#include<string.h>
void fun(char*s,int num)
{

}
NONO()
{
/*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/
  char s[10];
  FILE*rf,*wf;
  int i=0;
  rf=fopen("in.dat","r");
  wf=fopen("out.dat","w");
  while(i<10){
    fgets(s,10,rf);
    S[7]=0;
    fun(s,7);
    fprintf(wf,"%s\n",s);
    i++ ;
    }
    fclose(rf);
    fclose(wf);
  }
  main()
  {
  char s[10];
  printf("输入7个字符的字符串:");
  gets(s);
  fun(s,7);
  printf("\n%s",s);
  NONO();
}

选项

答案char t; int i,j; for(i=1;i<num-2;i++) //对n个元素进行循环选择 for(j=i+1,j<num-1,j++) if(s[i]<s[j]) //将str[i]设为最大值,和剩下的j~num-1进行比较 {t=s[i]; s[i]=s[j] ; s[j]=t; }

解析 选择排序法中的降序排序,首先从数组中挑选一个最大的元素的asciil码,把它和第一个元素交换,接着从剩下的num-1个元素中再挑出一个最大的元素的ascin码,把它和第二个元素交换,不断重复以上过程,直到比较完最后两个元素。
转载请注明原文地址:https://kaotiyun.com/show/nKRp777K
0

最新回复(0)