用C语言写一个简单计算器,可以判断除数不能是0,可以判断输入是否是一个数,可以计算大位加减乘除,可以实现两个科学记数法的数之间的加减乘除
时间: 2023-08-31 14:23:44 浏览: 181
### 回答1:
你好,我是 C 知道。以下是回答你的问题:
可以使用 C 语言编写一个简单的计算器,实现基本的加减乘除运算。以下是一个示例代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define MAX_INPUT_LENGTH 100
int is_number(char *str) {
int i;
for (i = ; i < strlen(str); i++) {
if (!isdigit(str[i])) {
return ;
}
}
return 1;
}
int main() {
char input[MAX_INPUT_LENGTH];
double num1, num2, result;
char op;
printf("请输入一个数:");
fgets(input, MAX_INPUT_LENGTH, stdin);
if (!is_number(input)) {
printf("输入不是一个数!\n");
return 1;
}
num1 = atof(input);
printf("请输入一个运算符:");
scanf("%c", &op);
printf("请输入另一个数:");
scanf("%s", input);
if (!is_number(input)) {
printf("输入不是一个数!\n");
return 1;
}
num2 = atof(input);
switch (op) {
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
if (num2 == ) {
printf("除数不能为!\n");
return 1;
}
result = num1 / num2;
break;
default:
printf("无效的运算符!\n");
return 1;
}
printf("结果为:%lf\n", result);
return ;
}
如果要实现科学记数法的加减乘除,可以使用 C 语言的库函数来实现。以下是一个示例代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <math.h>
#define MAX_INPUT_LENGTH 100
int is_number(char *str) {
int i;
for (i = ; i < strlen(str); i++) {
if (!isdigit(str[i]) && str[i] != '.' && str[i] != 'e' && str[i] != 'E' && str[i] != '+' && str[i] != '-') {
return ;
}
}
return 1;
}
int main() {
char input[MAX_INPUT_LENGTH];
double num1, num2, result;
char op;
printf("请输入一个数:");
fgets(input, MAX_INPUT_LENGTH, stdin);
if (!is_number(input)) {
printf("输入不是一个数!\n");
return 1;
}
num1 = atof(input);
printf("请输入一个运算符:");
scanf("%c", &op);
printf("请输入另一个数:");
scanf("%s", input);
if (!is_number(input)) {
printf("输入不是一个数!\n");
return 1;
}
num2 = atof(input);
switch (op) {
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
if (num2 == ) {
printf("除数不能为!\n");
return 1;
}
result = num1 / num2;
break;
default:
printf("无效的运算符!\n");
return 1;
}
printf("结果为:%lf\n", result);
return ;
}
### 回答2:
要用C语言编写一个简单计算器,实现以下功能:
1. 判断除数是否为0:在进行除法运算时,首先判断除数是否为0,如果是0则输出错误提示信息,否则继续计算。
2. 判断输入是否为一个数:可以使用C语言中的输入验证函数,如sscanf()函数,通过检查输入的返回值来判断输入是否为一个有效的数。如果不是数值,则输出错误提示信息。
3. 实现加法、减法、乘法和除法运算:编写函数来实现这些运算,通过用户输入选择相应的运算,然后调用相应函数进行计算。例如,加法运算可以定义一个函数add(a, b),接收两个数作为参数并返回它们的和。减法、乘法和除法的函数也类似。
4. 实现科学记数法的数之间的加减乘除:同样,需要编写函数来实现科学记数法的加减乘除运算。可以将科学记数法转换为普通数值进行计算,然后再转换回科学记数法。
以下是一个简单的伪代码示例,展示了上述功能的实现:
```c
#include <stdio.h>
// 加法运算
float add(float a, float b) {
return a + b;
}
// 减法运算
float subtract(float a, float b) {
return a - b;
}
// 乘法运算
float multiply(float a, float b) {
return a * b;
}
// 除法运算
float divide(float a, float b) {
if (b == 0) {
printf("除数不能为零!\n");
return 0;
}
return a / b;
}
int main() {
float num1, num2;
char operator;
printf("请输入第一个数:");
scanf("%f", &num1);
printf("请输入运算符:");
scanf(" %c", &operator);
printf("请输入第二个数:");
scanf("%f", &num2);
switch (operator) {
case '+':
printf("结果:%f\n", add(num1, num2));
break;
case '-':
printf("结果:%f\n", subtract(num1, num2));
break;
case '*':
printf("结果:%f\n", multiply(num1, num2));
break;
case '/':
printf("结果:%f\n", divide(num1, num2));
break;
default:
printf("无效的运算符!\n");
break;
}
return 0;
}
```
请注意,以上示例代码仅为简单示意,具体实现需要根据实际情况进行修改和完善。
### 回答3:
下面是用C语言编写一个简单计算器的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
// 判断字符串是否为科学记数法表示的数
bool isScientificNotation(char *str) {
if (strlen(str) == 0) {
return false;
}
bool hasDot = false;
int length = strlen(str);
for (int i = 0; i < length; i++) {
if (i == 0 && (str[i] == '+' || str[i] == '-')) {
continue;
}
if (str[i] == '.') {
if (hasDot) {
return false;
}
hasDot = true;
} else if (str[i] < '0' || str[i] > '9') {
return false;
}
}
return true;
}
// 判断除数是否为0
bool isDivisorZero(double divisor) {
return divisor == 0 ? true : false;
}
int main() {
char input[50];
double num1, num2, result;
char operator;
printf("请输入第一个数字:");
fgets(input, sizeof(input), stdin);
sscanf(input, "%lf", &num1);
printf("请输入运算符(+、-、*、/):");
fgets(input, sizeof(input), stdin);
sscanf(input, "%c", &operator);
printf("请输入第二个数字:");
fgets(input, sizeof(input), stdin);
sscanf(input, "%lf", &num2);
// 判断除数是否为0
if (operator == '/' && isDivisorZero(num2)) {
printf("错误:除数不能为0。\n");
return 0;
}
// 判断输入数字是否为科学记数法
if (isScientificNotation(input)) {
sscanf(input, "%le", &num2);
}
switch (operator) {
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
result = num1 / num2;
break;
default:
printf("错误:无效的运算符。\n");
return 0;
}
printf("计算结果:%.2lf\n", result);
return 0;
}
```
该计算器可通过读取输入进行简单的加减乘除运算。使用函数`isScientificNotation`判断输入是否为科学记数法表示的数,函数`isDivisorZero`判断除数是否为0。在运算过程中,会根据运算符选择相应的操作进行计算,并打印结果。如果除数为0或输入的运算符不合法,会给出相应的错误提示。
阅读全文