您的位置:首页 > 其它

acm比赛中字符串和数字之间的转化的办法总结

2014-02-25 17:19 316 查看
今天做acm的省赛题目的时候突然遇到了一个问题,就是将一个字符串的的一串字符

转化为数字,以char p=“1234”为例,那么有几种办法呢,我总结了两张办法可以使

其成功转化。

1:直接计算的办法,就是1234,1*1000+2*100+3*10+4;

 

#include<math.h>
#include<cstdio>
#include<string.h>
int main()
{
char a[100];
scanf("%s",a);
int l=strlen(a);
int sum=0;
for(int i=0;i<l;i++)
{
sum=sum+pow(10,l-i-1)*(a[i]-'0');
//printf("%d %d\n",sum,pow(10,l-i-1));

}
printf("%d\n",sum);

}


 

2.是可以运用c语言提供的函数来解决。

 

#include<iostream>
#include<string.h>
#include<stdio.h>
#include <stdlib.h>
using namespace std;
char p[1000000];
int next[1000000];
int t,n;
int main()
{
while(1)
{

char *end;
scanf("%s",p);
double value;
value=strtod(p,&end);
int k=(int)value;
printf("%s  %d\n",p,k);

}
return 0;
}


其中的strtod是将一个char换成double的,然后再强制转化为int即可了。

假如int 不够大,还可以使用strtol ,这是换long 型的呀

 

#include <stdlib.h>
#include <stdio.h>
int main()
{

char *string = "87654321", *endptr;
long lnumber;
lnumber =strtol(string, &endptr, 10);
printf("string = %s long = %ld\n", string, lnumber);

return 0;

}


那么给一个数字这个就是很简单了,用sscanf

#include <stdlib.h>
#include <stdio.h>
int main()
{

char buf[512] ;
sscanf("123456", "%s", buf);
printf("%s",buf);

}


讲数字化成字符串,也可以采用sprintf

#include <stdlib.h>
#include <stdio.h>
int main()
{

char buf[512] ;
int k=123;
sprintf(buf,"%d",k);
printf("%s",buf);//123           //sprintf(a,"%d",&buf);
//printf("%d",a);
}

 

 

 

今天先介绍这么多,以后有了更好地办法再接着更新

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  字符串