请补充函数fun(),该函数的功能是按条件删除一个字符串指定字符一半的数目,具体要求如下:如果该字符串所包含的指定字符的个数是奇数,则不予删除,如果其数目是偶数,则删除原串后半部分的指定字符。其中,a指向原字符串,删除后的字符串存放在b所指的数组中,c中存

admin2009-02-15  61

问题 请补充函数fun(),该函数的功能是按条件删除一个字符串指定字符一半的数目,具体要求如下:如果该字符串所包含的指定字符的个数是奇数,则不予删除,如果其数目是偶数,则删除原串后半部分的指定字符。其中,a指向原字符串,删除后的字符串存放在b所指的数组中,c中存放指定的字符。
   例如:当a输入“abababa”,c=‘a’时,b的输出为“ababb”;
   如果a的输入为“ababa”,则b的输出为“ababa”。
   注意:部分源程序给出如下。
   请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。
   试题程序:
   #include<stdio.h>
   #include<conio.h>
   #define LEN 80
   void fun(char a[],char b[],char C)
   {
      int i=0,j=0;
      int n=0;
      int m=0;
      while(a!=‘\0’)
      {
        if(a==c)
           n++;
        i++;
      }
        【  】;
       if(n%2)
      {
         while(a[j]!=’\0’)
         {
            b[j]=a[j];
            j++;
         }
         b[j]=’\0’;
      }
      else
     
         while(a!=’\0’)
         {
           b[j++]=a
           if(a==c)
             m+十;
           if((m>n/2)&&(a==c))
           【  】;
         i++;
       }
               【  】;
      }
    }
    main()
    {
      char a[LEN],b[LEN];
      char c;   
      clrscr();
      printf("Enter the string:\n");
      gets(a);
      printf("Enter the character of the string deleted:");
      scanf("%c",&c);
      fun(a,b,c);
     printf("The new string iS:%s\n",b);
   }

选项

答案i=0 j-- b[j]=’\0’

解析 第一空:执行完while循环后,变量i的值为数组a[]中元素的个数,而后面的while循环中通过变量i访问数组a[]的各元素,所以,在这里需要对变量i清零。第二空:当找到原字符串中后半部分的指定字符时,这个字符不应该存入数组b中,所以要将数组b的下标减l,让下一个非指定宁符去覆盖它。第三空:按条件删除后的字符串存于数组b后,还要在数组b的最后加上字符串结束标记符’\0’。
转载请注明原文地址:https://kaotiyun.com/show/ITID777K
0

最新回复(0)