美文网首页
网易c++------课时49---字符串应用举例

网易c++------课时49---字符串应用举例

作者: heiqimingren | 来源:发表于2020-11-02 20:19 被阅读0次

调试:https://zhidao.baidu.com/question/647832282939643725.html

====================


image.png

练习一:


image.png

这个联系,耗时18分钟。。

//整数转换成字符串
void Int2Str(int x, char *s)
{
    int length = 0;  //s的位数
    int r;  //余数,中间变量
    int i = 0;  //记录在数组s中的标号
    int low = 0;
    //处理x为负数的情况
    if (x < 0)
    {
        s[0] = '-';
        x = -x;
        low = 1;
        length = 1;
        i = 1;
    }

    while (x > 0)
    {
        r = x % 10;    //余数,中间变量
        s[i] = r + '0' - 0;
        x = x / 10;
        length++;
        i++;
    }
    s[i] = '\0';  //最后加上结束符

    //以下对数组s进行逆序
    int high = length - 1;
    while (low < high)
    {
        char temp = s[low];
        s[low] = s[high];
        s[high] = temp;
        low++;
        high--;
    }
    
}
void main()
{
    int x = -123;    //待处理的整数
    char s[30];       //转换为字符串输出
    Int2Str(x, s);
    puts(s);

}

=================================================


image.png
void main()
{
    char *str[] = { "Follow me", "BASIC", "Great wall", "Fortran", "Computer" };
    char *p;
    int i, j, k;
    //str为字符指针数组,p为字符指针
    for (i = 0; i < 4;i++)    //5个字符串选择排序
    {
        k = i;
        for (j = i + 1; j < 5;j++)
        {
            if (strcmp(str[k],str[j] )>0 )  //str[k]是前一个字符串,str[j]是后一个字符串
            {
                k = j;  //如果k=0,j=1,执行此语句,让k=1,不再等于i
            }
        }
        if (k!=i)  //当k与i不相等的时候
        {   //例如i=0,此时k=1
            p = str[k];
            str[k] = str[i];
            str[i] = p;
        }
    }
    for (i = 0; i < 5;i++)
    {
        printf("%s \n", str[i]);
    }


}

==================================================


image.png
image.png
image.png
image.png

======================


image.png
#include<stdio.h>
#include<string.h>
#include<stdlib.h>    //清屏命令在这里。
#include <windows.h> //延时10毫秒-sleep,gotoxy函数
#include <iostream>
#include <conio.h>       //getch()----不用按回车,就可以输入字符。    
#include <graphics.h>      //EasyX库,所使用的!
#include <math.h>         //三角函数
#include <algorithm>      //sort函数排序方法,https://blog.csdn.net/BIGKALA/article/details/81624691,这是方法适用的地址

using namespace std;
//判断字符是否为英文字母
int isEnglishCharacter(char c)
{
    if ((c >= 'a'&&c <= 'z') || (c >= 'A'&&c <= 'Z'))
    {
        //这个是英文字母
        return 1;
    }
    else
    {
        return 0;
    }
}
//判断字符是不是分隔符
int isSeperator(char c)
{
    if (c == ',' || c == '.' || c == '!' || c == '?'||c==' ')
    {
        return 1;
    }
    else
    {
        return 0;
    }
}
void main()
{
    char s[] = "you are a student,are you? ";
    int i = 0;  //s的下标

    char word[20];  //一个英文单词
    int j = 0;   //word的下标

    int wordNum = 0; //句子中的单词个数

    int length = strlen(s);
    while (i < length)
    {
        //当遇到分隔符之后,就跳过这些分隔符
        while (isSeperator(s[i]))
        {
            i++;
        }
        //跳过一个英文单词
        while (isEnglishCharacter(s[i]))
        {
            word[j] = s[i];
            i++;
            j++;
        }
        word[j] = '\0';
        wordNum++;
        puts(word);
        j = 0;      //很关键,每次循环,将j=0,可以使word成为一个单词,没有连在一起的单次
    }
        cout << "单次个数是:" << wordNum << endl;
}

=========================
统计一份文档中,关键词的词频率
例如,我想统计are这个单词的出现数量

//判断字符是否为英文字母
int isEnglishCharacter(char c)
{
    if ((c >= 'a'&&c <= 'z') || (c >= 'A'&&c <= 'Z'))
    {
        //这个是英文字母
        return 1;
    }
    else
    {
        return 0;
    }
}
//判断字符是不是分隔符
int isSeperator(char c)
{
    if (c == ',' || c == '.' || c == '!' || c == '?'||c==' ')
    {
        return 1;
    }
    else
    {
        return 0;
    }
}
void main()
{
    char s[] = "you are a student,are you? ";
    int i = 0;  //s的下标

    char word[20];  //一个英文单词
    int j = 0;   //word的下标

    int wordNum = 0; //句子中的单词个数
    int Number1 = 0;  //要统计的单词个数
    char s2[] = "are"; //目标单词

    int length = strlen(s);
    while (i < length)
    {
        //当遇到分隔符之后,就跳过这些分隔符
        while (isSeperator(s[i]))
        {
            i++; //让i自增,直接跳过这些。
        }

        //遍历的时候,若是英文单词,则跳过一个英文单词,然后进行一些记录
        while (isEnglishCharacter(s[i]))
        {
            word[j] = s[i];
            i++;
            j++;
        }
        word[j] = '\0';  //在每个词后面,加上结束符
        if (strcmp(word,s2)==0)
        {
            Number1++;
        }

        wordNum++;      //单词总数量自己增加。
        puts(word);
        j = 0;      //很关键,每次循环,将j=0,可以使word成为一个单词,没有连在一起的单次
    }
    cout << "单次个数是:" << wordNum << endl;
    cout << "目标单词" << s2 << "的个数是:" << Number1 << endl;
}

image.png

相关文章

网友评论

      本文标题:网易c++------课时49---字符串应用举例

      本文链接:https://www.haomeiwen.com/subject/lzjbpktx.html