/*
输入一个表示整数的字符串,把该字符串转换成整数并输出。
例如输入字符串"345",则输出整数345。
*/
#include <iostream>
#include <iomanip>
#include <limits>
using namespace std;
/*
依据第一位字符判断是否有符号数,而后分别处理!
//*/
//*
int main(int argc, char** argv)
{
if(argc < 2)
return -1;
int sz = 0;
char* p = argv[1];
while(*p != '\0')
{
sz +=1;
++p;
}
char numstr[16];
long long val=0;
//bool flag = true;
cout << "string size : " << sz << endl;
memcpy(numstr,argv[1],sz);
if(numstr[0] == '+'){ // 有符号正整数
//flag = true;
int i;
for(i = 1; i<sz; ++i){
if(numstr[i] >= '0' && numstr[i] <= '9'){
val = val*10 + (numstr[i] - '0');
}else{
break;
}
}
if(i<sz) {
cerr << "wrong input string, can not be translate to a number!\n";
return -1;
}
}else if(numstr[0] == '-'){ // 有符号负整数
//flag = false;
int i;
for(i = 1; i<sz; ++i){
if(numstr[i] >= '0' && numstr[i] <= '9'){
val = val*10 + (numstr[i] - '0');
}else{
break;
}
}
if(i<sz) {
cerr << "wrong input string, can not be translate to a number!\n";
return -1;
}
val = val* (-1);
}else if(numstr[0] >= '0'&& numstr[0] <= '9'){ // 无符号正整数
int i;
for(i = 0; i<sz; ++i){
if(numstr[i] >= '0' && numstr[i] <= '9'){
val = val*10 + (numstr[i] - '0');
}
}
if(i<sz) {
cerr << "wrong input string, can not be translate to a number!\n";
return -1;
}
}else{
cerr << "wrong input string, can not be translate to a number!\n";
return -1;
}
cout << "translated number :" << val <<endl;
return 0;
}
//*/
/*
简化版代码
//*/
/*
int main(int argc, char** argv)
{
if(argc < 2)
return -1;
int sz = 0;
char* p = argv[1];
while(*p != '\0')
{
sz +=1;
++p;
}
char numstr[16];
long long val=0;
bool flag = true; // 符号数标记,是否有符号
int sp = 0; // 数字起始位,有符号时为1, 无符号时为0
bool sign = true; // '+'--> true '-' -->false ,确定正负号
cout << "string size : " << sz << endl;
memcpy(numstr,argv[1],sz);
if((numstr[0] == '+') || (numstr[0] == '-')){
flag = true;
sp = 1;
if(numstr[0] == '-'){
sign = false;
}
}else if(numstr[0] >= '0' && numstr[0] <= '9'){
flag = false;
sp = 0;
sign = true;
}else{
cerr << "wrong input string, can not be translate to a number!\n";
return -1;
}
int i;
for(i = sp; i<sz; ++i){
if(numstr[i] >= '0' && numstr[i] <= '9'){
val = val*10 + (numstr[i] - '0');
}else{
break; // 非法字符则退出!
}
}
if(i<sz) {
cerr << "wrong input string, can not be translate to a number!\n";
return -1;
}
if(!sign){ // 负数
val *= -1;
}
// 输出显示
if(sign && flag){
cout << "translated number : " << '+' << val << endl;
}else{
cout << "translated number : " << val << endl;
}
return 0;
}
//*/
输入一个表示整数的字符串,把该字符串转换成整数并输出
最新推荐文章于 2023-01-27 20:00:27 发布