/*
*name:jae chia
*purpse:convert the string to interger
*date:2014/6/21
*/
//功能测试(输入的字符串有正数,负数,和0)
//特殊输入测试(输入字符串为NULL指针,输入字符串为空字符串,输入的字符串中除第一位的'+','-'外,其余位还有其他字符
//
#include<iostream>
using namespace std;
#include<malloc.h>
#define MAX 10
enum Status {Valid=0,Invalid};
int now_status;//用于标识输入的字符串是有效还是无效;now_status=Valid 有效,now_status=Invalid 无效
int flag=1 ;//用于标识字符串所转换的整数的正负;正:flag=1,负:flag=-1;
int Str2Int(const char *string)
{
const char *str=string;
int num=0;
now_status =Invalid;
if(NULL!=str && '\0'!=*str)
{
if('+'==*str)
{
str++;
flag=1;
}
else if('-'==*str)
{
str++;
flag=-1;
}
if('\0'!=*str)
{
while(*str !='\0')
{
if(*str >='0' && *str<='9')
{
num=num*10+*str-'0';
str++;
}
else
{
num=0;
break;
}
}
if('\0'==*str)
{
now_status=Valid;
}
}
}
return num;
}
int main(void)
{
char *str=(char *)malloc(sizeof(char)*MAX);
cout<<"input the string: ";
cin>>str;
int num=Str2Int(str);
if(Invalid==now_status )
{
cout<<"The string you want to convert to a interger is invalid!"<<endl;
return 0;
}
else
{
cout<<"The string you want to convert to a interger is valid and the interger is: ";
if(-1==flag )
cout<<-num<<endl;
else
cout<<num<<endl;
}
return 0;
}
分享到:
相关推荐
剑指offer面试题精选 剑指offer部分面试题使用javascript实现,配合grunt,使用karma和jasmine完成自动测试,使用jshint做代码检测。 面试题 面试题03:二维数组中的查找 面试题06:重建二叉树 面试题08:旋转数组中...
题目描述: 在一个二维数组中(每个一维数组的长度...请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 解题思路参考:https://blog.csdn.net/flower_48237/article/details/104011974
面试题11 数值的整数次方 面试题12 打印1到最大的n位数 面试题13 O(1)时间删除链表结点 面试题14 调整数组顺序使寄数位于偶数前面 3.4 代码的鲁棒性 面试题15 链表中倒数第k个结点 面试题16 反转链表 面试题17 合并...
例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。 思路 详见链接 代码 class Solution: def hammingWeight(self,n:int)->int: res = 0 while n: res += n & 1 n >>= 1...
剑指Offer(Python多种思路实现):表示数值的字符串 面试20题: 题目:表示数值的字符串 题:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串”+100″,”5e2″,”-123″,”3.1416″和”-1E...
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。 输出结果可能非常大,所以需要返回一个字符串而不是整数。 拼接起来的数字可能会有前导 0,最后结果不需要去掉前导...
给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m] 。请问 k[0]k[1]…k[m] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成...
LeetCode之剑指offer系列刷题 剑指offer系列题目列表(C++实现) 题目名称和题号 题目链接 题目博客 刷题次数 类型 面试题01.06:字符串压缩 +2 查找+双指针 面试题03:数组中重复的数字 +2 查找 面试题04:二维数组...
输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。 原创文章 269获赞 703访问量 3万+ 关注 私信 展开阅读全文 作者:...
剑指Offer中所有的面试题,建议一边看书一边来上做 本算法题汇总只提炼重要的解析,如果希望明白其中的算法思路建议看LeetCode或书上的解析 适合复习剑指Offer的同学,简要指出其知识点 如果你需要Java代码,可访问...
给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m] 。请问 k[0]k[1]…*k[m] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成...
剑指Offer(Python多种思路实现):把数组排成最小的数 面试45题: 题:把数组排成最小的数 题目:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32...
剑指Offer(Python多种思路实现):1~n整数中1出现的次数 面试43题: 题目:1~n整数中1出现的次数 题:输入一个整数n,求1~n这n个整数的十进制表示中1出现的次数。例如,输入12,1~12这些整数中包含1的数字有1,10,11,...
队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 ) 思路 根据栈的特性,可知inputstack的底部...
使用Python3用pythonic的方式实现《剑指Offer 第二版》中的题目。拒绝直接“翻译”java等实现。代码有些并非原创,搬运了一些LeetCode中大神的优秀解法,比如:如何用一行代码实现顺时针打印矩阵。 基本所有题都包含...
剑指Offer(Python多种思路实现):数值的整数次方 面试16题: 题目:数值的整数次方 题:实现函数double Power(double base, int exponent),求base的exponent次方、不得使用库函数,同时不需要考虑大数问题。 解题...
每日刷题计划,记录做过的题目,内容包含剑指offer、程序员面试金典(CTCI)、数据结构 下面标题括号内的为对应包名 剑指offer(offer) java实现 03二维数组中的查找 04替换空格 05从尾到头打印链表 06重建二叉树 07用...
示例:输入: [1,2,3,4,5]输出: [120,60,40,30,24]提示:所有元素乘积之和不会溢出 32 位整数解题思路面试题66. 构建乘积数组(表
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。 参考以下这颗二叉搜索树: 5 / \ 2 6 / \ 1 3 示例 1: 输入:...