阿里面试算法题--版本号更新

来源:互联网 发布:java see link 编辑:程序博客网 时间:2024/05/22 12:03

按照如下规则更新版本号:

5.12.16 -> 5.13.0

5.12.0   -> 5.12.0

最后一位为0则中间的数字+1,否则保持不变

#include "stdafx.h"#include <iostream>#include <string>#include <sstream>using namespace std;char* Edition(char* str) {if(str==NULL)return NULL;int n1=-1,n2=-1,n3=-1;sscanf(str,"%d.%d.%d",&n1,&n2,&n3);//cout<<str<<endl;cout<<n1<<n2<<n3<<endl;if(n1==-1||n2==-1||n3==-1)return NULL;if(n3==0)return str;elsen2++;//char update[10];char *update = new char[50];//在堆上创建,这样函数退出后,内存才不会被释放sprintf(update,"%d.%d.%d",n1,n2,n3);//cout<<update<<endl;//cout<<n1<<n2<<n3<<endl;return update;}int main(){char str[50]="5.13.1";char *up;cout<<sizeof(string)<<" "<<sizeof(str)<<" "<<str.size()<<endl;up = Edition(str);cout<<up<<endl;system("pause");  return 0;}

C和C++下对字符串进行格式转换的方法:

//int转string        int n = 0;        std::stringstream ss;        std::string str;        ss<<n;        ss>>str;//string转int        std::string str = "123";        int n = atoi(str.c_str());<pre name="code" class="cpp">//sscanf按格式读出相应的数据类型        char str[] = "15.455";    int i;    float fp;    sscanf( str, "%d", &i ); // 将字符串转换成整数 i = 15    sscanf( str, "%f", &fp ); // 将字符串转换成浮点数 fp = 15.455000    //打印    printf( "Integer: = %d ", i+1 );    printf( "Real: = %f ", fp+1 );    return 0;
//sprintf按格式读入字符串 int H, M, S; string time_str; H=seconds/3600; M=(seconds%3600)/60; S=(seconds%3600)%60; char ctime[10]; sprintf(ctime, "%d:%d:%d", H, M, S); // 将整数转换成字符串 time_str=ctime; // 结果



0 0
原创粉丝点击