请教高手编写一个简单的C语言程序

哪位高手帮我编一个C语言程序,急!万分感谢!1.设计函数strtoint2.编写用例测试strtoint3.要包括所有情况4.用C语言编写把一段字符串变成整数可以划分为如... 哪位高手帮我编一个C语言程序,急!万分感谢!
1.设计函数strtoint
2.编写用例测试strtoint
3.要包括所有情况
4.用C语言编写
把一段字符串变成整数
可以划分为如下等价类:
有效输入的等价类有
(1)1-6个数字字符组成的数字串
(2)最高位数字是0的数字串
(3)最高位数字左邻是负号的数字串
无效输入的等价类有
(4)空字符串(全是空格)
(5)左部填充的字符既不是0也不是空格
(6)最高位数字右面由数字和空格混合组成
(7)最高位数字右面由数字和其他字符混合组成
(8)负号与最高位数字之间有空格
合法输出的等价类有
(9)在计算机能表示的最小负整数和0之间的负整数
(10)0
(11)在0和计算机能表示的最大正整数之间的正整数
非法输出的等价类有
(12)比计算机能表示的最小负整数还小的负整数
(13)比计算机能表示的最大正整数还大的正整数
(-32786__32786)

根据上面划分的等价类,可以设计出下述测试方案(每个方案由3部分内容组成)
(1)1-6个数字组成的数字串,输出是合法的正整数
输入:' 1'
预期的输出:1
(2)最高位数字是0的字符串,输出是合法正整数
输入:'000001'
预期的输出:1
(3)负号与最高位数字紧相邻,输出合法的负整数
输入:'-00001'
预期的输出:-1
(4)最高位数字是0,输出也是0
输入:'000000'
预期的输出:0
(5)太小的负整数
输入:'-47561'
预期的输出:“错误——无效输入”
(6)太大的正整数
输入:'132767'
预期的输出:“错误——无效输入”
(7)空字符串
输入:' '
预期的输出:“错误——没有数字”
(8)字符串左部字符既不是0也不是空格
输入:'#@$$%1'
预期的输出:“错误——填充错”
(9)最高位数字后面有空格
输入:' 1 2'
预期的输出:“错误——无效输入”
(10)最高位数后面有其他字符
输入:' 1@#2'
预期的输出:“错误——无效输入”
(11)负号和最高位数字之间有空格
输入:' - 12'
预期的输出:“错误——负号位置错”
(7)中的空字符串就是6个空格,提交后就没有了
(11)中负号前后都有空格
展开
 我来答
L_o_o_n_i_e
2008-05-28 · TA获得超过4.2万个赞
知道大有可为答主
回答量:8507
采纳率:38%
帮助的人:5229万
展开全部
给你写了一些情况的判断。
其它情况自己添加。

#include<stdio.h>

int strtoint(char *str, int *r){
int len,i;
int status=0;

len = 0;
while ( 1==1){
if (str[len] == 0) break;
len = len + 1;
}
if (len > 6 || len <= 0) {status = 1; return status;};
if (str[0] != '-' && (str[0] > '9' || str[0] < '0') ) {status = 2; return status;};
if (len == 6 && strncmp(str+1,"32768",5) >= 0 ) {status = 3; return status;};
if (len == 5 && strncmp(str,"32768",5) >= 0 ) {status = 3; return status;};

sscanf(str,"%d",r);
return status;
}

void main ()
{
char str[20];
int r;
int status;
scanf("%s",&str[0]);

status = strtoint(str, &r);

switch(status)
{
case 0: printf("%d",r); break;
case 3: printf("exceed -32768 or 32768\n");
default: printf("invalid\n");
};
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式