剑指offer:将字符串转化为整形
2014-03-25 20:00
302 查看
我们知道c语言中存在一个函数atoi,就是把字符串转化为整形,现在我们要求不用此函数或者类似的函数写出“字符串转化为整形的函数“。
本题要考虑几种特殊的情况
1、功能测试:输入的字符串表示正数、负数、0
2、边界测试:输入最大的正整数,最小的负整数
3、特殊输入测试:输入字符串为NULL指针,输入空字符串,输入的字符串有非数字字符。
下面是源程序代码:
#include<stdio.h>
#include<string.h>
#include<math.h>
#define MAX 10
int main()
{
char s[MAX]={0};
printf("请输入原始字符串:\n");
gets(s);
int length=strlen(s);
int i,k=0,tag=0;
if(length>=1)
{
for(i=0;i<length;++i)
{
if(s[i]=='-')
{
tag=1;
continue;
}
if(s[i]>='0'&&s[i]<='9')k=k*10+(s[i]-'0');
else
{
printf("你输入的字符串中有非数字字符!\n");
exit(0);
}
}
}
else
{
printf("你输入的字符串为空\n");
exit(0);
}
if(tag==0)printf("转化后的整形为:%d\n",k);
else printf("转化后的整形为:-%d\n",k);
return 0;
}
运行结果截图:
本题要考虑几种特殊的情况
1、功能测试:输入的字符串表示正数、负数、0
2、边界测试:输入最大的正整数,最小的负整数
3、特殊输入测试:输入字符串为NULL指针,输入空字符串,输入的字符串有非数字字符。
下面是源程序代码:
#include<stdio.h>
#include<string.h>
#include<math.h>
#define MAX 10
int main()
{
char s[MAX]={0};
printf("请输入原始字符串:\n");
gets(s);
int length=strlen(s);
int i,k=0,tag=0;
if(length>=1)
{
for(i=0;i<length;++i)
{
if(s[i]=='-')
{
tag=1;
continue;
}
if(s[i]>='0'&&s[i]<='9')k=k*10+(s[i]-'0');
else
{
printf("你输入的字符串中有非数字字符!\n");
exit(0);
}
}
}
else
{
printf("你输入的字符串为空\n");
exit(0);
}
if(tag==0)printf("转化后的整形为:%d\n",k);
else printf("转化后的整形为:-%d\n",k);
return 0;
}
运行结果截图:
相关文章推荐
- 数据库链接字符串查询网站
- Flex字符串比较 还有Flex字符串操作
- ASP下经常用的字符串等函数参考资料
- 将字符串小写转大写并延时输出的批处理代码
- 将字符串转换成System.Drawing.Color类型的方法
- 字符串聚合函数(去除重复值)
- sqlserver中求字符串中汉字的个数的sql语句
- sql server字符串非空判断实现方法
- VBS的字符串及日期操作相关函数
- jquery 删除字符串最后一个字符的方法解析
- C#中字符串编码处理
- MySQL 字符串函数大全
- php学习 字符串课件
- php5数字型字符串加解密代码
- 用MySQL函数清除字符串首尾空白字符的方法
- ASP为字符串中的网址自动加上链接
- vs2010根据字符串内容添加断点的方法介绍
- javascript String 对象
- javascript 特殊字符串
- JS 字符串连接[性能比较]