首页 > 编程语言 >复试C++15真题_程序设计2_递归_输入字符串倒序转整形

复试C++15真题_程序设计2_递归_输入字符串倒序转整形

时间:2024-03-20 20:58:38浏览次数:31  
标签:15 迭代 递归 真题 int str 倒序 输入

编写一个递归函数,功能为:输入一个字符串,输出一个整数值。例如输入  "1a2xcz3 4 ,5a!6"  ,  输出654321。

一开始想不明白怎么写递归,于是我写了迭代的函数。意识到,递归的过程就是实现了迭代的循环,而循环内的操作本质没有太大差别。于是就写出来了:

#include <iostream>
using namespace std;

//迭代版本
int toInt2(char str[]){
    int res = 0,jieshu = 1;
    for(int i = 0;str[i] != '\0';i++){
        if(str[i]>='0'&&str[i]<='9'){
            res = res + (str[i]-'0') * jieshu;
            jieshu *= 10;
        }
    }
    return res;
}

int toInt(char str[],int res,int jieshu){
    if(*str == '\0')    return res;  //迭代版本每一次执行循环前都要先判断是否到达字符串尾部
    else if(*str>='0'&&*str<='9'){
        res = res + (*str-'0') * jieshu;
        return toInt(++str,res,jieshu*10);  //通过对str的移动代替迭代版本的i
    }
    else{
        return toInt(++str,res,jieshu);  //既不是字符串尾也不是数字就要保留原来的数据,str向前移动
    }
    return res;
}
//递归版本
int toInt(char str[]){
    return toInt(str,0,1);
}

int main(){
    char str[] = "1a2xcz3 4 ,5a!6";  //654321
    cout << toInt2(str) << endl;
    cout << toInt(str) << endl;
}

至于怎么输入字符到字符数组,似乎比想象中的简单?这东西哪怕我输入20个字符也不报错,也照样输出全部字符,也不报错?

int main(){
    char str[10];
    cin >> str;
    cout << str << endl;
}

 

标签:15,迭代,递归,真题,int,str,倒序,输入
From: https://www.cnblogs.com/uacs2024/p/18086047

相关文章

  • 20240315-1-逻辑题目
    逻辑题目逻辑题目现在也是面试中常考的题目,也不清楚面试出这种题目的意义,可能就是考察面试人员是否逻辑清晰.这种题目没有什么好的方法,除非你见过原题,否则,只能根据所给出的条件慢慢分析,尽量不要用常规思路,希望大家要跳跃思维.如果实在不行就给出一种解法,可能......
  • 性能测试实战系列(15):准备压测脚本、数据
     本系列汇总,请查看这里:https://www.cnblogs.com/uncleyong/p/15475614.html脚本查询礼品 兑换礼品 查询订单 其它设置http请求默认值  响应断言 后端监听器 数据库存量数据礼品:10000,在05章节已经通过存储过程造存量数据库存:10000,在05章节已经通过......
  • 复试C++14真题 看程序写结果5 虚函数、继承 易错?
    复试C++14真题 看程序写结果5  虚函数、继承#include<iostream>usingnamespacestd;classA{public:virtualvoidprint(){cout<<"A::print"<<endl;}//voidprint(){cout<<"A::print"<<endl;}};classB:public......
  • 计算机选择题真题(大全)
    计算机系统(132)计算机完成一条指令所花费的时间称为一个(指令周期)顺序程序不具有(并发性)总线带宽是指总线的(数据传输率)一进程已获得除CPU以外的所有所需运行资源,经调度分配CPU给它后,该进程将进入(运行状态)CPU芯片内部连接各元件的总线是(内部总线)如果一个进程在运行时因某种原因......
  • LCR 159. 库存管理 IIIc
    /***Note:Thereturnedarraymustbemalloced,assumecallercallsfree().*/intdivide(int*stock,inthead,inttail){intt=stock[head];while(head<tail){while(head<tail&&stock[tail]>t)tail--;if(head<......
  • 代码随想录算法训练营第十一天| 20. 有效的括号、1047. 删除字符串中的所有相邻重复项
    题目:20.有效的括号文章链接:代码随想录视频链接:LeetCode:20.有效的括号题目链接:力扣题目链接图释:classSolution{public://有效的括号boolisValid(strings){ //遇到左括号时就放入右括号,遇到右括号时,与栈内的顶元素进行比较 //情况一:与栈顶元素相等,则是t......
  • 华为OD机试真题-推荐多样性-2024年OD统一考试(C卷)
    题目描述:推荐多样性需要从多个列表中选择元素,一次性要返回N屏数据(窗口数量),每屏展示K个元素(窗口大小),选择策略:1. 各个列表元素需要做穿插处理,即先从第一个列表中为每屏选择一个元素,再从第二个列表中为每屏选择一个元素,依次类推2. 每个列表的元素尽量均分为N份,如果不够N个,也......
  • 洛谷题单指南-集合-P1536 村村通
    原题链接:https://www.luogu.com.cn/problem/P1536题意解读:城镇之间现有的道路关系可以将城镇划分的若干集合,每个集合内的城镇是互通的,要计算最少增加多少条道路,使得每个集合都相通。解题思路:利用并查集,统计一共出现多少个集合,即p[i]=i的数量,最少的道路数即集合数-1,即可把所......
  • 洛谷题单指南-集合-P1551 亲戚
    原题链接:https://www.luogu.com.cn/problem/P1551题意解读:要判断两人是否是亲戚,只需要看两人是否属于一个集合,基于所有已知的亲戚关系,可以建立多个有亲戚关系的集合,这个过程可以借助并查集。解题思路:并查集:1、定义并查集是一种树形数据结构,本质上是多棵树,每棵树表示一个集合,......
  • 415. 字符串相加c
    voidreverse(char*num1,intn){inthead=0,tail=n-1;while(head<=tail){charc=num1[head];num1[head]=num1[tail];num1[tail]=c;head++;tail--;}}intmax(inti,intj){if(i>j)returni;......