如何使用C中的数组和函数执行简单算术运算

时间:2016-04-11 16:41:36

标签: c

我刚刚在C语言中使用数组,函数等编写了一个程序,但它在乘法,子和除法中没有显示准​​确的结果。也许执行操作的公式是错误的。请帮助完成此程序,这是代码:

#include<stdio.h>
#include<conio.h>

void SimpleArithematic();

int main()
{
    clrscr();
    SimpleArithematic();
    getch();
    return 0;
}

void SimpleArithematic()
{
    char ch;
    int n;
    long num=0,i,sum[100];
    printf("Which Operation you want to perform: +,-,*,/?\n");
    scanf("%c",&ch);
    printf("Input Total Inputs: \n");
    scanf("%d",&n);
    printf("Input Numbers \n");
    for(i=0;i<n;i++)
    {
        printf("Enter Number %d: \n",i+1);
        scanf("%ld",&sum[i]);
    }
    switch(ch)
    {
        case '+':
            for(i=0;i<n;i++)
                num=num+sum[i];
            printf("Addition: %ld",num);
            break;
        case '-':
            for(i=0;i<n;i++)
            {
                num=num-sum[i];
            }
            printf("Subtraction: %ld",num);
            break;
        case'*':
            for(i=0;i<n;i++)
                sum[i]=sum[i]*num;
            printf("Multiplication: %ld",num);
            break;
        case'/':
            for(i=0;i<n;i++)
                num=num/sum[i];
            printf("Division: %ld",num);
            break;
        default:
            printf("Invalid Input!!");
    }
}

Output

2 个答案:

答案 0 :(得分:1)

您要划分两个long变量:

num=num/sum[i];

如果num小于sum[i],则结果num将为零,因为小数位在整数分割中被截断。

无论如何,num被初始化为0,所以无论你将它除以什么都会再次给你0

另外,对于你的乘法,你可能有一个拼写错误:

sum[i]=sum[i]*num;

然而,由于num被初始化为0,因此无论您将其乘以,都会给您0

答案 1 :(得分:1)

循环都以num = 0开头,然后对所有输入数字进行操作。这恰好与添加有效,因为0 + x = x(身份函数),但它不适用于其余部分。 0 - x = -x0 / x = 00 * x = 0

相反,请设置num = sum[0]并从i = 1开始循环。

这是对其他答案中指出的问题的补充。

作为旁注,我建议不要命名除n之类的循环变量之外的任何东西。很难理解他们的意思,他们很难找到。称之为num_sum以表明其在sum中的数量。 (sum也是一个坏名字,因为它不是总和。它应该被称为inputs,因为它是输入。)

此外,初始化循环变量(即i)。这通过避免代码顶部的大量变量初始化器使代码更容易准备。当所有变量必须在函数开始时声明时,这种风格是Ye Olden Days的延续。并且它避免了在下次使用时保留的局部变量值难以调试的情况。例如......

int i;

for( i = 0; i < blah; i++ ) {
    ...
}

...later on...

for( i; i < blah; i++ ) {
    ...
}

由于i保留了之前循环中的值,因此不会对您的错误发出警告。