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

今天做acm的省赛题目的时候突然遇到了一个问题,就是将一个字符串的的一串字符

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

其成功转化。

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

 

#include
#include
#include
int main()
{
    char a[100];
    scanf("%s",a);
    int l=strlen(a);
    int sum=0;
    for(int i=0;i


 

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

 

#include
#include
#include
#include 
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 
#include 
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 
#include 
int main()
{

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

}


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

#include 
#include 
int main()
{

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

 

 

 

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

 

 


 

你可能感兴趣的:(C语言函数)