C语言:程序填空:输入一个字符,从字符串里找到第一个该字符的位置,将其以后的字符输出,之后将字串中的该字符都删除

题目来源:大工慕课 链接
作者:Caleb Sung

题目要求

要求:输入一个字符,从字符串里找到第一个该字符的位置,将其以后的字符输出,之后将字串中的该字符都删除,将删除后的字符串输出,同一字母的大、小写按不同字符处理。find函数的返回值是字串中该字符第一次出现的位置,如果没有该字符,返回空指针,del函数的返回值是字串首地址。

例如:若程序执行时初始字符串为:C and c++ languge is useful! 从键盘输入字符:n,则输出:“第一个n后的字串为:d c++ languge is useful!” ,接着输出“删除n后的字串:C ad c++ laguge is useful!”,也可以输入u,w 进行验证。

题目代码

#include "stdio.h"
char* find(char *s,char c)
{
/*********Begin**********/ 

/**********  End  **********/   
}
char* del(char *s,char c)
{
  /*********Begin**********/ 

  /**********  End  **********/   
}

int main()
{
  char str[]="C and c++ language is useful!";
  char ch,*p;
  printf("原始字符串:%s\n", str);
  printf("输入一个字符:");
  scanf("%c",&ch);
  //******Fill*******
  /*____________________    //调用函数,使p指向字符出现的第一个位置。*/
  p=find(str,ch);
  if(p)
  {
      printf("第一个%c后的字串为:%s\n",ch,p+1);
      printf("删除%c后的字串:%s\n",ch,del(str,ch));
  }
  else
  {
      printf("字符在字串中不存在。\n");
  }
  return 0;
}

参考解答

题中划线填空的部分已经补全在题目代码的相应地方。
这道题因为没有引入string.h而不能使用strlen()来直接得到字符串的长度。

1. find()函数

char* find(char *s,char c)
{
/*********Begin**********/ 
    char *x;
    for(x=s; *x!=0; x++){
        if(*x == c){
            return x;
        }
    }
    return NULL;
/**********  End  **********/   
}

2. del()函数

char* del(char *s,char c)
{
  /*********Begin**********/ 
    char *x, *tmp;
    int len;
    x = s;
    while(*x){
        if(*x == c){
            for(tmp=x+1; *tmp!='\0'; tmp++){
                *(tmp-1) = *tmp;
                *tmp = '\0';
            }
            x = s;
        }
        else{
            x++;
        }
    }
    x = s;
    return x;
  /**********  End  **********/   
}

运行效果

输入测试字符a

原始字符串:C and c++ language is useful!
输入一个字符:a
第一个a后的字串为:nd c++ language is useful!
删除a后的字串:C nd c++ lnguge is useful!

符合题目要求。

你可能感兴趣的:(大学C语言程序设计,C语言入门基础)