我正在尝试使用if else语句编写一个基本的计算器程序,但是存在问题。加法和乘法功能有效,而减法和除法功能无效。
如何编写可以找到n个数字的减法和除法的C程序?
#include<stdio.h>
int main()
{
int n, m, i, d;
float sum;
printf("Enter the number what you want to calculate\n");
printf("1.) Addition\n2.) subtraction\n3.) multiplication\n4.) Division\n");
scanf("%d", &n);
if (n == 1) {
printf("\nyou select addition\n");
printf("enter how many number you want to add\n");
scanf("%d", &m);
sum = 0;
for (i = 0; i < m; ++i) {
printf("Enter number%d: ", i + 1);
scanf("%d", &d);
sum += d;
}
printf("your answer is %f", sum);
}
else if (n == 2) {
printf("\nyou select Subtraction\n");
printf("enter how many number you want to Subtract\n");
scanf("%d", &m);
sum = 0;
for (i = 0; i < m; ++i) {
printf("Enter number%d: ", i + 1);
scanf("%d", &d);
sum -= d;
}
printf("your answer is %f", sum);
}
else if (n == 3) {
printf("\nyou select Multiplication\n");
printf("enter how many number you want to Multiply\n");
scanf("%d", &m);
sum = 1;
for (i = 0; i < m; ++i) {
printf("Enter number%d: ", i + 1);
scanf("%d", &d);
sum = sum * d;
}
printf("your answer is %f", sum);
}
else if (n == 4) {
printf("\nyou select Division\n");
printf("enter how many number you want to divide\n");
scanf("%d", &m);
sum = 1;
for (i = 0; i < m; ++i) {
printf("Enter number%d: ", i + 1);
scanf("%d", &d);
sum /= d;
}
printf("your answer is %f", sum);
}
else
printf("you Enter wrong number");
return 0;
}
答案 0 :(得分:2)
您快到了。我认为您只是在为sum
和sum2
设置初始值。
保留sum
用于加法/减法(需要初始化为0),保留sum2
进行乘法/除法(需要初始化为1)。
float sum = 0;
float sum2 = 1.;
然后加成
sum += numbers[i]
减法变为
sum -= numbers[i]
乘法变为
sum2 *= numbers[i]
除法成为
sum2 /= numbers[i]
并确保您正确订购printf
,scanf
和数学运算的订单。
答案 1 :(得分:1)
您的程序中存在一些错误:
sum2
从未初始化
未初始化的sum2
打印在减法部分
由于sum
初始化为零,因此此sum = sum * numbers[i];
将始终为零
由于sum
初始化为零,因此此sum /= numbers[i];
将始终为零
减法块中else
之前缺少if
然后还有一些改进的余地:
在==
语句中使用if
请勿将输入保存在您从未使用过的数组中
使用一个已知的操作即可初始化的sum
类似的东西:
#include <stdio.h>
int main()
{
int n, m, i, d;
float sum;
printf("Enter the number what you want to calculate\n");
printf("1.) Addition\n2.) subtraction\n3.) multiplication\n4.) Division\n");
scanf("%d", &n);
if (n == 1) {
printf("\nyou select addition\n");
printf("enter how many number you want to add\n");
scanf("%d", &m);
sum = 0;
for (i = 0; i < m; ++i) {
printf("Enter number%d: ", i + 1);
scanf("%d", &d);
sum += d;
}
printf("your answer is %f", sum);
}
else if (n == 2) {
printf("\nyou select Subtraction\n");
printf("enter how many number you want to Subtract\n");
scanf("%d", &m);
sum = 0;
for (i = 0; i < m; ++i) {
printf("Enter number%d: ", i + 1);
scanf("%d", &d);
sum -= d;
}
printf("your answer is %f", sum);
}
else if (n == 3) {
printf("\nyou select Multiplication\n");
printf("enter how many number you want to Multiply\n");
scanf("%d", &m);
sum = 1;
for (i = 0; i < m; ++i) {
printf("Enter number%d: ", i + 1);
scanf("%d", &d);
sum = sum * d;
}
printf("your answer is %f", sum);
}
else if (n == 4) {
printf("\nyou select Division\n");
printf("enter how many number you want to divide\n");
scanf("%d", &m);
sum = 1;
for (i = 0; i < m; ++i) {
printf("Enter number%d: ", i + 1);
scanf("%d", &d);
sum /= d;
}
printf("your answer is %f", sum);
}
else
printf("you Enter wrong number");
return 0;
}
顺便说一句:每当您进行scanf
时,都应检查返回值是否正确。