在做题时能用得到的库函数(持续更新ing)

  • 将一串文字中的大写字母转化为小写字母,用tolower()函数。传送门
#include<iostream>
#include<cctype>//注意,c++ 5.11中,只导入iostream文件也能用
using namespace std;
int main()
{
    char arr[]="ABCDEFG";
    cout<<arr<<"\n";
    for(int i=0;arr[i];i++) arr[i]=tolower(arr[i]);
    cout<<arr;
    return 0;
}

 

  • 判断是否为大写字母:issuper()函数。

 

  • 判断某个字符串是否为另一个字符串的字串 : char * strstr(char * arr1,char *arr2); 返回值是 arr1 在 arr2 中 第一次出现的下标。

应用:题目链接题解链接

#include <cstring>
#include <cctype>
#include <cstdio>

void strlower (char *a) {//手写函数,将大写字母转换成小写字母
    for(int i = 0; a[i]; i ++ ) {
        if(isupper(a[i])) a[i] = tolower(a[i]);//isupper是判断是否是大写字母的系统函数,tolower是将其转换成小写字母的函数
    }
}

int main () {

    char destination[1000001], *q, source[11], *p;//destintion是要找的文章,source是要找的单词,p和q都是指针类,分别代表当前搜索到什么地方了和最后一次找到单词的指针
    bool flag = false;//判断是否找到了
    int ans = 0, ans1 = -1;//个数和首次出现的位置,ans1的初值是-1是因为在没找到的时候就直接输出就行了,省事

    gets(source);
    gets(destination);//输入

    strlower(destination);//全部转换成小写字母
    strlower(source);

    int len = strlen(source);//长度,在后面防止越界和加快速度

    p = destination;//先将指针设为全部

    for(; q = strstr(p, source); ) {//循环,strstr是在一个字符串里面给定一个字符串,寻找有没有这个字符串,若有,返回首次出现的指针否则返回NULL(空指针)
        if( q != NULL//找到了
        && ( q == destination || *(q - 1) == ' ') //第一个条件是防止越界,第二个是判断前一个是不是空格
        && ( *(q + len) == '\0' || *(q + len) == ' ' ) ) {//如果后面也是空格
            ans ++ ;//答案加一
            if(flag == false) {//如果是首次找到
                flag = true;
                ans1 = q - destination;//第一个位置
            }
        }
        p = q + len;//刷新指针
    }

    if(flag == true)//找到了
        printf("%d %d" , ans, ans1);//输出
    else
        printf("%d", ans1);//输出-1

    return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值