python语言中print函数的有关知识,Pythonprint函数

  python语言中print函数的有关知识,Pythonprint函数

  样本:POJ 2105

  -

   strtol

  -

  即字符串过长

  long int strtol(const char *nptr,char **endptr,int base)

  Strtol()会根据参数base把nptr指向的字符串转换成long int,然后返回这个值。

  基本参数的范围是2~36,0;它确定要转换为整数的字符串的权重。

  可以转换的合法字符取决于基数。例如,当base为2时,合法字符为‘0’和‘1’;当基数为8时,合法字符为 0 , 1 ,…… 7 ;当基数为10时,合法字符为“0”、“1”、“9”;当基数为16时,合法字符为“0”、“1”、“9”、“a”、“f”;基数为24时,合法字符为 0 ,… 9 , a ,… n ,基数为36时,合法字符为 0 ,… 9 , a ,… z ;等一下。其中,不区分大小写,比如 a 和 a 都会转换成10。

  当字符合法时,“0”, 9 被转换成十进制0 ~ 9, a , z 一旦北向转换为十进制10 ~ 35。

  当strtol()函数检测到第一个非法字符时,它立即停止检测,所有后续字符都将被视为非法字符。合法字符串将被转换为long int作为函数的返回值。非法字符串,即从第一个非法字符开始的地址,被赋给*endptr。**endptr是双指针,即指针对指针。strtol()函数通过它改变*endptr的值,也就是把第一个非法字符的地址传递给endptr。

  大多数情况下,endptr设置为NULL,即不返回非法字符串。

  看看下面的例子:

  -

  char buffer[20]= 10379 cend $ 3 ;

  char * stop

  printf(%d\n ,strtol(buffer,stop,2));

  printf(%s\n ,stop);

  输出结果:

  2

  379加元3美元

  -

  char buffer[20]= 10379 cend $ 3 ;

  char * stop

  printf(%d\n ,strtol(buffer,stop,8));

  printf(%s\n ,stop);

  输出结果:

  543

  9美分3美元

  -

  char buffer[20]= 10379 cend $ 3 ;

  char * stop

  printf(%d\n ,strtol(buffer,stop,10));

  printf(%s\n ,stop);

  输出结果:

  10379

  3加元

  -

  char buffer[20]= 10379 cend $ 3 ;

  char * stop

  printf(%d\n ,strtol(buffer,stop,16));

  printf(%s\n ,stop);

  输出结果:

  17005006

  新台币3元

  此外,如果base为0,并且字符串不是以0x(或0X)开头,则它将被转换为十进制。如果base是0或16,并且字符串以0x(或0X)开始,则x(或x)被忽略,并且字符串被转换为十六进制。如果base不等于0和16,并且字符串以0x(或0X)开头,则x被视为非法字符。

  例如:

  -

  char buffer[20]=0x 31 da 6 c ;

  char * stop

  printf(%d\n ,strtol(buffer,stop,0));

  printf(%s\n ,stop);

  输出(停止为空):

  3267180

  -

  char buffer[20]=0x 31 da 6 c ;

  char * stop

  printf(%d\n ,strtol(buffer,stop,13));

  printf(%s\n ,stop);

  输出结果:

  0

  0x31da6c

  -

  最后需要注意的是,nptr指向的字符串开头和结尾的空格都被忽略,字符串中间的空格被视为非法字符。

  例如:

  -

  char buffer _ 1[20]= 10379 c ;

  char buffer _ 2[20]= 10379 c ;

  char buffer _ 3[20]= 10 379 c ;

  printf(%d\n ,strtol(buffer_1,NULL,0));

  printf(%d\n ,strtol(buffer_2,NULL,0));

  printf(%d\n ,strtol(buffer_3,NULL,0));

  输出是:

  10379

  10379

  10

  -

  POJ 2105 IP地址

  代码描述

  假设您正在从任何设备读取代表互联网协议(Internet Protocol)地址的字节流。您的任务是将32个字符长的"1"和"0"(位)序列转换为冷静的帽子十进制格式A冷静的帽子互联网协议(Internet Protocol)地址的十进制格式是通过一次分组8位并将二进制表示转换为十进制表示来形成的。任何8位都是互联网协议(Internet Protocol)地址的有效部分。要将二进制数转换为十进制数,请记住两者都是位置数字系统,其中二进制系统的前8位是:

  27 26 25 24 23 22 21 20 128 64 32 16 8 4 2 1输入

  输入的第一行有一个数字N (1=N=9),表示要转换的流的数量。接下来会有n行。输出

  输出必须有普通行带点的十进制互联网协议(Internet Protocol)地址A冷静的帽子十进制互联网协议(Internet Protocol)地址是通过将8位分组,然后将二进制表示转换为十进制表示而形成的。样本值输入

  4000000000000000000000000000000011000000000111111110010111000000010011100000010000000000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

  0.0.0.03.128.255.255203.132.229.12880.16.0.1 代码:

  #includestring.h

  #includeiostream

  #includecmath

  # includecstring

  #包含算法

  #includeiomanip

  # includectime

  #includecstdio

  #包含堆栈

  #includemap

  #includequeue

  # includevector

  # includecctype

  使用命名空间标准

  int main()

  {

  电汇境内;

  scanf(%d ,TT);

  for(int I=0;国际电报电话公司我)

  {

  for(int j=0;j4;j)

  {

  char ss[9];

  scanf(%8s ,ss);

  int ans=strtol(ss,0,2);

  如果(j3)

  {

  printf(%d ,ans);

  }

  其他

  {

  printf(%d\n ,ans);

  }

  }

  }

  返回0;

  }

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: