用c语言编写一个代码要求实现整数计算类integer,包括短整数的加减乘除基本算术运算。要求可进行数据范围检查(-32 768~32 767,或自行设定),数据溢出时显示错误信息并中断程序运行。
时间: 2024-03-25 20:38:26 浏览: 45
好的,下面是一个使用C语言实现的整数计算类integer的示例代码,包括短整数的加减乘除基本算术运算,并且实现了数据范围检查和错误处理:
```c
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
typedef struct Integer {
int value;
} Integer;
Integer* new_integer(int value) {
if (value < -32768 || value > 32767) {
printf("Value out of range: -32768 to 32767\n");
exit(EXIT_FAILURE);
}
Integer* integer = (Integer*)malloc(sizeof(Integer));
integer->value = value;
return integer;
}
void delete_integer(Integer* integer) {
free(integer);
}
void print_integer(Integer* integer) {
printf("%d\n", integer->value);
}
Integer* add_integers(Integer* a, Integer* b) {
int result = a->value + b->value;
if (result < -32768 || result > 32767) {
printf("Result out of range: -32768 to 32767\n");
exit(EXIT_FAILURE);
}
return new_integer(result);
}
Integer* sub_integers(Integer* a, Integer* b) {
int result = a->value - b->value;
if (result < -32768 || result > 32767) {
printf("Result out of range: -32768 to 32767\n");
exit(EXIT_FAILURE);
}
return new_integer(result);
}
Integer* mul_integers(Integer* a, Integer* b) {
int result = a->value * b->value;
if (result < -32768 || result > 32767) {
printf("Result out of range: -32768 to 32767\n");
exit(EXIT_FAILURE);
}
return new_integer(result);
}
Integer* div_integers(Integer* a, Integer* b) {
if (b->value == 0) {
printf("Cannot divide by zero\n");
exit(EXIT_FAILURE);
}
int result = a->value / b->value;
if (result < -32768 || result > 32767) {
printf("Result out of range: -32768 to 32767\n");
exit(EXIT_FAILURE);
}
return new_integer(result);
}
int main() {
Integer* a = new_integer(10);
Integer* b = new_integer(20);
Integer* c = add_integers(a, b);
print_integer(c);
delete_integer(c);
c = sub_integers(a, b);
print_integer(c);
delete_integer(c);
c = mul_integers(a, b);
print_integer(c);
delete_integer(c);
c = div_integers(a, b);
print_integer(c);
delete_integer(c);
delete_integer(b);
delete_integer(a);
return 0;
}
```
在这个实现中,我们定义了一个Integer结构体,每个Integer对象都包含一个整数值,并且实现了加减乘除四种基本算术运算。在创建Integer对象时,我们进行了数据范围的检查,确保整数值在-32768到32767之间。在进行算术运算时,我们也进行了数据范围的检查,并在发生数据溢出时输出错误信息,中断程序运行。
阅读全文