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

来源:百度知道 编辑:UC知道 时间:2024/09/27 19:14:58
哪位高手帮我编一个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'
预期的输出:“错误——无效输入” <

给你写了一些情况的判断。
其它情况自己添加。

#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");
defau