请补充函数fun(),该函数的功能是:把一个字符串中的字符(字母)按从小到大排序,并把这个全部由字母组成的字符串保存在原串中,函数返回这个字符串的长度。例如;输入“cixbr2.3”,如果为bcirx,字符串长度为5。 注意:部分源程序给出如下.

admin2010-05-05  14

问题 请补充函数fun(),该函数的功能是:把一个字符串中的字符(字母)按从小到大排序,并把这个全部由字母组成的字符串保存在原串中,函数返回这个字符串的长度。例如;输入“cixbr2.3”,如果为bcirx,字符串长度为5。
   注意:部分源程序给出如下.
   请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。
    #include <stdio.h>
   #define N 20
   int fun (char *str)
   {
      int i=0,j=0,k=-0,m=0;
      char t;
      char *p=str;
      while(*p)
      {
         if((*p>=’A’&&*p<=’Z’)||(*p>=’a’
         &&*p<=’z’))
        【  】
         p++;
      }
      *(str+i)=’\0’;
         【  】;
      while(*(p+j))
      {
         k=j;
           【  】;
         while (*(p+k))
         {
             if(*(p+k)<*(str+m)
             {
                 t=*(str+m);
                 *(str+m)=*(p+k);
                 *(p+k)=t;
             }
             k++;
         }
         j++;
   }
   return i; }
main()
{
  char str[81];
  iht n;
  clrscr();
  printf("Input the original string ");
  gets(str);
  printf("*** The Original string ***In");
  puts(str);
  printf("*** The nwe string ***\n");
  n=fun(str);
  puts(str);
  printf("***The length of new string is:
         %d***\n",n);
}

选项

答案*(str+i++)=*p p=str m=j

解析 第一空:将字符串中的字母字符存入原字符串str中,通过变量i的自加逐一向后移动字符串指针。第二空:从后面的程序中可以看出,通过指针p对字符串进行排序,所以应使指针p指向字符串str的首部,即将字符串str的首地址赋给p。第三空:本题采用选择法对字符串进行排序,选择法的思路是,假设从小到大排序,依次用当前取得的元素和它后面的所有元素进行比较,在第一个元素和它后面的元素顺次比较时,可以借助中间变量来对两数进行交换,要保证这第一个元素始终存放数组中的最小数,以后依次挑出次小数,这样最终的数组就是按从小到大的顺序排列。此处要将变量j的值赋给m。
转载请注明原文地址:https://jikaoti.com/ti/yKkiFFFM
0

相关试题推荐
最新回复(0)