看看题目叭~

目录

一、滤字符

二、请编写函数CHG(char *S)

三、myctrcpy


一、滤字符

以指针的方式,将某个字符串中出现的特定字符删去,然后输出新的字符串。

输入格式

首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。 每组测试数据输入一个字符串s和一个非空格字符t。其中s的长度不超过100,且只包含英文字母。

输出格式

对于每组测试,将删掉t后新得到的字串输出。如果串被删空,则输出“NULL”(引号不必输出)。

输入样例

2
eeidliecielpvu i
ecdssnepffnofdoenci e

输出样例

eedlecelpvu
cdssnpffnofdonci

想法一

遇到相同的字符时,每找到一次就串就从当前字符左移一循环,覆盖原值。

如果遍历结束后,串的第一个字符是\0,说明串被删空,则输出“NULL”

#include<stdio.h>
#define N 1000
void dele(char *c,char s);
int main()
{int t,i,j;scanf("%d",&t);//t为测试组数char c[N][N];char s;for(int w=0;w<t;w++)//该循环为t组测试数据{scanf("%s",&c[w]);getchar();scanf("%c",&s);dele(c[w],s);}for(int w=0;w<t;w++){if(c[w][0]=='\0')//被删成了空串printf("NULL");elseprintf("%s",c[w]);if(w!=t-1)printf("\n");//格式要求}
}
void dele(char *c,char s)
{char t;int i=0;while(*c!='\0'){if(*c==s){ i=0;while(*(c+i)!='\0'){*(c+i)=*(c+1+i);i++;}  c--;//因为从当前字符开始串左移了一位}c++;}}

关于循环里的c--,有必要说一下,这是我想到的笨办法。因为我们左移了一位,所以左移后c指向的其实是原本的下一位,但是当前循环还没有判断到原本的下一个字符,所以c--;

能能能听懂吧(弱小)


想法二

如果一个字符不同就存一个,并且记录有效字符长度,相同就跳过该步骤。

最后 第 有效长度 字符设为\0,作为结束。

其余和上一个想法相同。

函数替换为:

void dele(char *c,char s)
{char t;int i=0,j=0;while(c[i]!='\0'){if(c[i]!=s){c[j]=c[i];j++;}i++;}c[j]='\0';
}

二、请编写函数CHG(char *S)

请编写函数CHG(char S)实现程序功能: 把S字符串中的所有字符左移一个位置,串中的第一个字符移到最后,之后把已处理的字符串逆转后仍存入原字符数组中

函数接口定义

在这里描述函数接口。
void CHG(char *s);

裁判测试程序样例

在这里给出函数被调用进行测试的例子。例如:
#include <stdio.h>
#include <string.h>void CHG(char *s);int main()
{char   s[100], t[100];scanf("%s", s);CHG(s);printf("%s", s);return 0;}/* 请在这里填写答案 */

输入样例

abcde

输出样例

aedcb

想法

记录第一个字符,其余字符依次前移一位,最后把记录的第一个字符放到末尾;

已处理的字符串逆转后仍存入原字符数组中,采取对称的交换,即第一个和最后一个交换,第二个和倒数第二个交换,引用为j++,k--;

void CHG(char *s)
{char c=*s;int l=strlen(s);int i=0,j,k;while(i<l){*(s+i)=*(s+i+1);i++;}*(s+i-1)=c;*(s+i)='\0';//这句也可以没有,因为字符前移的时候,\0没有前移for(j=0,k=l-1;j<l/2;j++,k--){c=*(s+j);*(s+j)=*(s+k);*(s+k)=c;}}

三、myctrcpy

题目要求

写一个函数 mystrcmp实现字符串比较,相等输出 0,不等输出其差值,在主函数输出比较结果。

想法

1.遍历两个字符串的字符,相同则下一位,不同则返回差值。

2.如果一个字符串读完,就返回另一个字符串对应的当前的字符的ASCII码。

3.如果读完两个字符串完全相同,就返回0。

//值得说明的是,因为函数类型定义为int,所以把字符转化成ASCII码这一步可以交给函数的return,或者严谨一点可以(int)强制转换。更严谨就是unsigned int了。

#include<stdio.h>
#define N 20
int mystrcmp(char *s1,char *s2);
int main()
{char str1[N],str2[N];gets(str1);gets(str2);printf("compare result = %d\n",mystrcmp(str1,str2));   return 0;
}int mystrcmp(char *s1,char *s2)
{while(*s1!='\0'&&*s2!='\0') {if (*s1==*s2){s1++;s2++;}else return (*s1-*s2);}while(*s1 != '\0') return *s1;while(*s2 != '\0') return -*s2;return 0;
}

这周的PTA就这么多想记录的题。

分享就结束啦,感谢阅读!!!!阿里嘎多!!!

2021.12.7

SThree楠钰子.

PTA滤字符、函数CHG、mystrcpy--指针练习相关推荐

  1. C语言 请编写函数CHG(char *S) 把字符数组左移后逆转

    6-2 请编写函数CHG(char *S) (10 分) 请编写函数CHG(char S)实现程序功能: 把S字符串中的所有字符左移一个位置,串中的第一个字符移到最后,之后把已处理的字符串逆转后仍存入 ...

  2. 带参函数_更好的理解Python第五弹函数预处理与指针

    编译预处理 预处理概念:在编译之前进行处理 在C语言中,预处理行为宏定义,文件包含,条件编译 指令 用处 # 无 #define 定义一个宏 #undef  取消定义一个已经定义的宏 #include ...

  3. 字符函数和内存函数模拟实现

    字符函数和内存函数模拟实现 字符函数和内存函数模拟实现 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<str ...

  4. 常见的字符函数与字符串函数介绍(1)

    常见的字符函数与字符串函数介绍 前言 C语言中对字符与字符串的处理很是频繁,但是C语言中并没有字符串类型的变量,字符串通常存放在常量字符串或者字符数组中.字符串常量适用于那些对它不做任何修改的字符串函 ...

  5. 字符函数和字符串函数详解(二)strncpy strncat strncmp strstr strtok(及其模拟实现)

     系列文章目录 字符函数和字符串函数详解(一)strlen strcpy strcat strcmp 字符函数和字符串函数详解(二)strncpy strncat strncmp strstr str ...

  6. 字符函数和字符串函数(上)

    字符函数和字符串函数 前言 一. strlen 1. '\0' 2. 返回值 3. strlen的模拟实现 二. strcpy 1. 源字符串必须以'\0'结束 2. 会将源字符中的'\0'拷贝到目标 ...

  7. java 区分中英文,Java 区分文本中的中英文字符函数

    Java 区分文本中的中英文字符函数 复制代码 代码如下: public class EnCnTest { public static void main(String args[]) { byte ...

  8. [C++/PTA] 2017final友元函数之全班同学的平均绩点

    [C++/PTA] 2017final友元函数之全班同学的平均绩点 题目要求 解题思路 代码 总结 题目要求 一个学生类,有三个私有成员:名字name.课程学分指针score.课程成绩指针grade. ...

  9. c语言中常用的字符函数以及字符串函数

    文章目录 前言 一.常用字符串函数 1.strlen() 2.strcpy() 3.strcat() 4.strcmp() 5.strstr() 6.memcpy() 6.memmove() 二.qs ...

最新文章

  1. SQL Server中CROSS APPLY和OUTER APPLY的应用详解
  2. python判断哪个数最小_怎么用python比较三个数大小
  3. 免安装版的mysql步骤_mysql免安装版的安装方法及步骤
  4. 彩虹系统怎么弄服务器,用云服务器彩虹挂机
  5. 使用C#调用Java带MIME附件WebService方法的初步设想
  6. 微型计算机三级项目,微机原理三级项目.doc
  7. android 原型模式,原型模式-下拉刷新的全局设置
  8. 基于c语言的成绩管理系统,基于C语言实现学生成绩管理系统.docx
  9. qtableiwdget优化之再优化(大批量数据加载不卡顿)
  10. 2019足协超级杯花落苏州 开幕战上演“京沪对决”
  11. 【Tableau】维度,度量,胶囊,蓝色,绿色
  12. java实现第四届蓝桥杯猜年龄
  13. cf一直连接服务器,玩穿越火线显示连接服务器超时怎么回事?原因分析及解决方法...
  14. 已解决:网易邮箱smtphz.qiye.163.com在阿里云环境发不出邮件的问题
  15. MarkdownPad2 插入数学公式Mathjax
  16. Blender2.8入门教程(1): 物体操作、物体编辑、修改器Modifier
  17. Linux下安装java11(亲测)
  18. draftsight的热补丁
  19. 报错Error from chokidar (C:\): Error: EBUSY: resource busy or locked, lstat ‘C:\hiberfil.sys‘
  20. Linux系统和乌班图Ubuntu是什么关系?

热门文章

  1. 数字内容安全实验二:数字图像复制粘贴检测
  2. AR市场不明朗,VR市场方兴未艾
  3. 【Python技能树共建】Beautiful Soup
  4. Aras Innovator Method集成Visual Studio
  5. SOUKE组合营销软件v9.1官方版
  6. AnchoredSnapper函数使用说明
  7. D65/TL84/A三种光源以及色温的含义
  8. 疯狂Java讲义(五)----第一部分
  9. 面向对象三大特性一一多态(polymorphism)
  10. 爬虫获取网易云音乐单曲或歌单实现音乐闹钟