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

admin2018-09-27  38

问题 请编写函数fun,对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按ASCH码降序排列。
    例如,原来的字符串为:CEAedca,排序后输出为:CedeEAa。
    注意:部分源程序在文件PROG1.C中。
    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
1  #include<stdio.h>
2  #include<ctype.h>
3  #include<string.h>
4  void fun(char *s,int num)
5  {
6
7  }
8  NONO()
9  {
10  /*请在此函数内打开文件,输入测试数据,调用fun函数,.输出数据,关闭文件。*/
11  char s[10];
12  FILE *rf,*wf;
13  int i=0;
14  rf=fopen(’’in.dat’’,’’r’’);
15  wf=fopen(’’out.dat’’,’’w’’);
16  while(i<1 )  {
17  fgets(s,10,rf);
18    s[7]=0;
19    fun(s,7);
20   fprintf(wf,’’%s\n’’,s);
21   i++  ;
22   }
23   fclose(rf);
24  fclose(wf);
25  }
26  main()
27  {
28  char s[10];
29  printf(’’输入7个字符的字符串:’’);
30  gets(s);
31  fun(s,7);
32  printf(’’\n%s’’,s);
33  NONO();
34  }

选项

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

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

最新回复(0)