练习 3-4 在数的对二的补码表示中,我们编写的itoa函数不能处理最大的负数,即n等于-2字长-1的i情况。请解释其原因。修改该函数,使它在任何机器上运行时都能打印出正确的值。
机器 处理 函数 修改 运行 解释 编写 最大
2023-09-11 14:22:19 时间
C语言程序设计(第二版) 练习3-4 个人设计
练习 3-4 在数的对二的补码表示中,我们编写的itoa函数不能处理最大的负数,即n等于-2字长-1的i情况。请解释其原因。修改该函数,使它在任何机器上运行时都能打印出正确的值。
代码块
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void itoa(int n, char s[]);
void reverse(char s[]);
int main()
{
int num;
char str[100];
num=-2147483648;
itoa(num, str);
puts(str);
system("pause");
return 0;
}
void itoa(int n, char s[])
{
int i, sign;
if ((sign=n)<0)
n=-(n+1);
i=0;
do{
if (i==0)
s[i++]=n%10+'0'+1;
else
s[i++]=n%10+'0';
}while((n/=10)>0);
if (sign<0)
s[i++]='-';
s[i]='\0';
reverse(s);
}
void reverse(char s[])
{
int c, i, j;
for (i=0, j=strlen(s)-1; i<j; i++, j--){
c=s[i], s[i]=s[j], s[j]=c;
}
}
相关文章
- (《机器学习》完整版系列)第8章 集成学习——8.4 GBDT算法(逐次估值逼近)
- (《机器学习》完整版系列)第14章 概率图模型——14.8 吉布斯采样算法的详细推导(将“多变量”联合采样变为交替地“单变量”采样)
- (《机器学习》完整版系列)第10章 降维与度量学习——10.1 k近邻算法(你是住在穷人区还是富人区?)
- 美团面试——机器学习/数据挖掘算法工程师
- 机器学习笔记之深度信念网络(二)模型构建思想(RBM叠加结构)
- tomcat管理员在远程(不同)机器上访问管理页面
- 《NLTK基础教程——用NLTK和Python库构建机器学习应用》——2.4 标识化处理
- 《Scala机器学习》一一2.2 序贯试验和风险处理
- 机器学习算法归类与汇总
- 【机器学习】——SVM实现、保存模型、调用模型