华北计算所其中一道机试题,逆转字符串,但是单词顺序不变

2023-12-07 15:08

本文主要是介绍华北计算所其中一道机试题,逆转字符串,但是单词顺序不变,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

/*
华北计算所其中一道机试题,逆转字符串,但是单词顺序不变,字符串中只含有字母和空格。

比如this is a book,逆序后为book a is this
Author:shizhixin
Email:szhixin@gmail.com
Blog:http://blog.csdn.net/ShiZhixin
Data:Oct 25,2009
*/

#include "stdafx.h"
#include <iostream>
using namespace std;
#include <string>
//初步版本,记得面试时候这么写的,但是开始有点问题,指针移动的时候
// void InverseStr(char* cpStrOutput,char* cpStrInput,int length)
// {
//     int nAllCount=0;//当前处理的总字母的个数
//     for (int i=0;i<length;i++)
//     {
//         int nLetterCount=0;//计算单个单词的字母个数
//         const char* temp=cpStrInput;
//         while(*cpStrInput!=' ' && *cpStrInput!='/0') //机试好像也忘记判断/0的情况了
//         {
//             nLetterCount++;
//             cpStrInput++;
//             i++;
//         }
//         if (*cpStrInput!='/0')//记得机试的错误主要在这里当时紧张这都没调试出来,没有这个的话,他一直处在cpStrInput空格位置了
//         {
//             cpStrInput++;
//         }
//         nAllCount+=nLetterCount;
//         for (int j=0;j<nLetterCount;j++)
//         {
//             cpStrOutput[length-nAllCount+j]=*temp;//temp很不专业!
//             temp++;
//         }
//         if (*temp!='/0')//不加判断的话,最后一个单词length-nAllCount-1成为-1了,所以main中delete时出现错误!   
//         {
//             cpStrOutput[length-nAllCount-1]=*temp;       
//         }
//         nAllCount++;
//         temp++;
//     }
//     cpStrOutput[length]='/0';
// }

// 输入参数为const类型,
void InverseStr(char* cpStrOutput,const char* cpStrInput,int length)
{
    const char* pMove=cpStrInput; //另设两个变量移动指针
    const char* pGetValue=cpStrInput;
    int nAllCount=0;//当前处理的总字母的个数,这里不用这个变量,直接用当前处理的i
    for (int i=0;i<length;i++)
    {
        int nLetterCount=0;//计算单个单词的字母个数
        while(*pMove!=' ' && *pMove!='/0')
        {
            nLetterCount++;
            pMove++;
            i++;
        }
        if (*pMove!='/0')
        {
            pMove++;
        }
        for (int j=0;j<nLetterCount;j++)
        {
            cpStrOutput[length-i+j]=*pGetValue;
            pGetValue++;
        }
        if (*pGetValue!='/0')
        {
            cpStrOutput[length-i-1]=*pGetValue;
        }
        pGetValue++;
    }
    cpStrOutput[length]='/0';
}

int main(int argc, char* argv[])
{
    char* strInput="My blog is blog.csdn.net/shizhixin";
    int nLen=strlen(strInput);
    char* strOutput=new char[nLen+1];
    InverseStr(strOutput,strInput,nLen);
    cout<<strOutput<<endl;
    if (strOutput!=NULL) //记得机试的时候也没释放内存,这么低级的错误,艾,考试就蒙了
    {
        delete[] strOutput;   
        strOutput=NULL;
    }       
    return 0;
}

这篇关于华北计算所其中一道机试题,逆转字符串,但是单词顺序不变的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/466327

相关文章

2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题

题库来源:安全生产模拟考试一点通公众号小程序 2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题是由安全生产模拟考试一点通提供,流动式起重机司机证模拟考试题库是根据流动式起重机司机最新版教材,流动式起重机司机大纲整理而成(含2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题参考答案和部分工种参考解析),掌握本资料和学校方法,考试容易。流动式起重机司机考试技

顺序表之创建,判满,插入,输出

文章目录 🍊自我介绍🍊创建一个空的顺序表,为结构体在堆区分配空间🍊插入数据🍊输出数据🍊判断顺序表是否满了,满了返回值1,否则返回0🍊main函数 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以:点赞+关注+评论+收藏(一键四连)哦~ 🍊自我介绍   Hello,大家好,我是小珑也要变强(也是小珑),我是易编程·终身成长社群的一名“创始团队·嘉宾”

CSP 2023 提高级第一轮 CSP-S 2023初试题 完善程序第二题解析 未完

一、题目阅读 (最大值之和)给定整数序列 a0,⋯,an−1,求该序列所有非空连续子序列的最大值之和。上述参数满足 1≤n≤105 和 1≤ai≤108。 一个序列的非空连续子序列可以用两个下标 ll 和 rr(其中0≤l≤r<n0≤l≤r<n)表示,对应的序列为 al,al+1,⋯,ar​。两个非空连续子序列不同,当且仅当下标不同。 例如,当原序列为 [1,2,1,2] 时,要计算子序列 [

每日一题|牛客竞赛|四舍五入|字符串+贪心+模拟

每日一题|四舍五入 四舍五入 心有猛虎,细嗅蔷薇。你好朋友,这里是锅巴的C\C++学习笔记,常言道,不积跬步无以至千里,希望有朝一日我们积累的滴水可以击穿顽石。 四舍五入 题目: 牛牛发明了一种新的四舍五入应用于整数,对个位四舍五入,规则如下 12345->12350 12399->12400 输入描述: 输入一个整数n(0<=n<=109 ) 输出描述: 输出一个整数

web群集--nginx配置文件location匹配符的优先级顺序详解及验证

文章目录 前言优先级顺序优先级顺序(详解)1. 精确匹配(Exact Match)2. 正则表达式匹配(Regex Match)3. 前缀匹配(Prefix Match) 匹配规则的综合应用验证优先级 前言 location的作用 在 NGINX 中,location 指令用于定义如何处理特定的请求 URI。由于网站往往需要不同的处理方式来适应各种请求,NGINX 提供了多种匹

每日一练7:简写单词(含链接)

1.链接 简写单词_牛客题霸_牛客网 2.题目 3.代码1(错误经验) #include <iostream>#include <string>using namespace std;int main() {string s;string ret;int count = 0;while(cin >> s)for(auto a : s){if(count == 0){if( a <=

C和指针:字符串

字符串、字符和字节 字符串基础 字符串就是一串零个或多个字符,并且以一个位模式为全0的NUL字节结尾。 字符串长度就是字符串中字符数。 size_t strlen( char const *string ); string为指针常量(const修饰string),指向的string是常量不能修改。size_t是无符号数,定义在stddef.h。 #include <stddef.h>

PHP字符串全排列

方法一: $str = 'abc';$a =str_split($str);perm($a, 0, count($a)-1);function perm(&$ar, $k, $m) {if($k == $m){ echo join('',$ar), PHP_EOL;}else {for($i=$k; $i<=$m; $i++) {swap($ar[$k], $ar[$i]);perm($ar

PHP7扩展开发之字符串处理

前言 这次,我们来看看字符串在PHP扩展里面如何处理。 示例代码如下: <?phpfunction str_concat($prefix, $string) {$len = strlen($prefix);$substr = substr($string, 0, $len);if ($substr != $prefix) {return $prefix." ".$string;} else

十一、C语言:字符串函数

目录 一、strlen 二、strcpy 三、strcat  四、strcmp 五、strstr 六、strtok 七、strerror 一、strlen 注意:strlen()函数的返回值是size_t,两个size_t相减仍为无符号数 int main(){char arr[10] = "abc";char brr[10] = "abc123";if (strl