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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。