如何编写可以找到n个数字的除法和减法的C程序?

时间:2018-08-23 11:50:19

标签: c

我正在尝试使用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;
}

2 个答案:

答案 0 :(得分:2)

您快到了。我认为您只是在为sumsum2设置初始值。

保留sum用于加法/减法(需要初始化为0),保留sum2进行乘法/除法(需要初始化为1)。

float sum = 0;
float sum2 = 1.;

然后加成

sum += numbers[i]

减法变为

sum -= numbers[i]

乘法变为

sum2 *= numbers[i]

除法成为

sum2 /= numbers[i]

并确保您正确订购printfscanf和数学运算的订单。

答案 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时,都应检查返回值是否正确。