请编写函数fun,对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按ASCⅡ码降序排列。例如,原来的字符串为“CEAedca”,排序后输出为“CedcEAa”。 注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填

admin2018-02-02  34

问题 请编写函数fun,对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按ASCⅡ码降序排列。例如,原来的字符串为“CEAedca”,排序后输出为“CedcEAa”。
    注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
    试题程序:
#include
#include
#include
void fun(char*s,int num)
{
}
main()
{
  void NONO();
  char S[10];
  printf(“输入7个字符的字符串:”);
  gets(s);
  fun(s,7);
  prinff(“\n%s”,s);
  NONO();
}
void 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);
  fprinff(wf,“%s\n”,S);
  i++:
  }
  felose(rf);
  felose(wf);
}

选项

答案void fun(char*s,int num) { char ch; int 1,j; for(i=1;i<6;i++) for(j=i+1;j<6;j++) { if(*(s+i)<*(s+j)) { ch=*(s+j); *(s+j)=*(s+i); *(s+i)=ch; } } }

解析 本题考查:for循环语句;字符的交换;指针型变量;指针移动。
指针移动:指针经常用于指向数组和字符串,通过指针的移动实现对数组或字符串的遍历。数组和字符串都是用一段连续的地址来存放元素的。所以,指针的移动也就是对地址的加减。
本题要求对长度为7的字符串,除首、尾字符外,将其余5个字符按ASCⅡ码降序排列,因而要用双重循环进行排序。注意第1个循环的变量的初值i=1,第2个循环的变量的初值为j=i+1;这是因为题目要求除首、尾字符外,将其余5个字符按ASCⅡ码降序排列。
转载请注明原文地址:https://kaotiyun.com/show/FPxp777K
0

最新回复(0)