重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
#include stdio.h
站在用户的角度思考问题,与客户深入沟通,找到海伦网站设计与海伦网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站制作、网站建设、企业官网、英文网站、手机端网站、网站推广、申请域名、虚拟主机、企业邮箱。业务覆盖海伦地区。
#include string.h
long fun ( char *p)
{
int len,t;
long x=0;
len=strlen(p);
if(p[0]=='-')
{t=-1;len--;p++;}
else t=1;
while(*p)
x=10*x+(*p-48),p++;
return x*t;
}
main() /* 主函数 */
{ char s[6];void NONO ();
long n;
printf("Enter a string:\n") ;
gets(s);
n = fun(s);
printf("%ld\n",n);
NONO ( );
}
扩展资料:
printf()函数的用法
1、printf()函数的调用格式为:printf("lt;格式化字符串gt;",lt;参量表gt;);
//__stdcall
int __cdecl printf(const char*p,...);
可变参数
printf在打印浮点数,不论原来是双精度还是单精度,都变为双精度(8字节)
打印1字节(char)2字节(short)4字节(int)==gt;4字节,除了long long(8字节)
void main()
{
比如一个字符串
char* p = "-2888";
if(*p=='-')用来判断字符串的第一个字符是不是负号“-”。
如果楼主是新手,我这里需要解释:*p等价于p[0],用来取字符串的第一个字符
================
他的程序的原理是用了字符串的数字和ASCII码的对应关系。
你给他一个字符串,它先判断是正数还是负数,然后把后面的字符串中的数字转换为
数字,作为绝对值,最后再把这个数的符号加上
思路:先判定字符串第一位是否为符号,“+”或没有则符号为正(1),“-”则符号为负(-1)。然后每一位的数值是ASCII值减去48。计算公式为:123=12*10+3=(1*10+2)*10+3.
#include stdio.h
int atoi_(char *p)
{ int a = 0;
int b = 0;
int i = 0;
int j = 0;
int sign = 1;
if (*p =='+')
p = p+1;//判定首位是否为正号。指针指到符号后面。
if (*p == '-')//判定首位是否是负号。
{
p = p+1;
sign = -1;//符号标识符为-1.
}
while (*(p+i) = 48 *(p+i) = 57)
{
i++; //计算一共多少位数字。
}
for (j = 0;j i;j++)
{
b = *(p+j)-48;
a = a*10+b;
}
a = a*sign;//计算出来的数字乘以前面判定的符号。
return a;
}
int main(void)//主函数。
{ char str1[10] = "";
int a;
printf("请输入字符串str1 = ");
gets(str1);
a = atoi_(str1);//调用atoi_函数。
printf("the number is %d.\n",a);
return 0;
}
atoi函数实现及测试代码。
#includestdio.h
int atoi(const char* p)
{
bool neg_flag = false;// 默认为0,即正数
int res = 0;// 结果
if(p[0] == '+' || p[0] == '-')
neg_flag = (*p++ != '+');//负号为1,正号为0
while(*p='0' *p='9')
res = res*10 + (*p++ - '0');
return neg_flag ?0 -res : res;
}
void main()
{
char ch[100];
printf("请输入数字,可以有正负号和小数点,输入q结束:");
gets(ch);
while(ch[0]!='q')
{
printf("您输入的整数为%d\n",atoi(ch));
printf("请输入数字,可以有正负号和小数点,输入q结束:");
gets(ch);
}
}