将数组中的数字转换为整数。 (和更多)

时间:2016-12-08 21:30:03

标签: c arrays digits

我是C的新手并尝试构建仅使用的程序:

  • 数组,
  • 循环,
  • if-else,
  • 基本功能(打印,扫描)
  • 没有字符串等!

我的要求:

  • 我应该在一行中从用户那里得到一个等式。 '='结束了等式。
  • 必须有两个数字
  • 必须只有一个操作员

示例输入:

589*919=

我需要将等式插入数组中。每个数字或运算符都位于数组中的另一个位置。

数组示例:

chars array: | 5 | 8 | 9 | * | 9 | 1 | 9 |

然后我需要将数组中的数字转换为两个整数,并计算等式的答案。

如何将数组中的数字转换为两个整数?

到目前为止我的代码:

#include <stdio.h>
#include <stdlib.h>
#pragma warning (disable: 4996)
#define SIZE 122

void main()
{
    int count = 0;
    int i;
    char input;
    char equation[SIZE];
    char key = 0;
    int oprIndex;

    printf("Insert equation:\n");
    scanf("%c", &input);

    for (i = 0; i<SIZE && input != '='; i++) //fill the array with the equation
    {
        equation[i] = input;
        scanf("%c", &input);
        count++;
    }

    //searching for which operater user inserted
    key = '+';
    for (i = 0; i < count && equation[i] != key; i++);
    if (equation[i] == key)
    {
        printf("key: %c\n", key);
        oprIndex = i;
        printf("index: %d\n", oprIndex);
    }

    key = '-';
    for (i = 0; i < count && equation[i] != key; i++);
    if (equation[i] == key)
    {
        printf("key: %c\n", key);
        oprIndex = i;
        printf("index: %d\n", oprIndex);
    }

    key = '*';
    for (i = 0; i < count && equation[i] != key; i++);
    if (equation[i] == key)
    {
        printf("key: %c\n", key);
        oprIndex = i;
        printf("index: %d\n", oprIndex);
    }

    key = '/';
    for (i = 0; i < count && equation[i] != key; i++);
    if (equation[i] == key)
    {
        printf("key: %c\n", key);
        oprIndex = i;
        printf("index: %d\n", oprIndex);
    }
    //end of searching

    for (i = 0; i < count; i++) //print the equation
    {
        printf("%c", equation[i]);
    }
    printf("=");
    printf("\n");

    system("pause");
}

1 个答案:

答案 0 :(得分:0)

只需使用+*的语句。

如果您不知道将字符转换为相应的数字,请使用-'0'

例如,'5'-'0'将为您提供5整数值。

编辑:

我为你添加一些例子。

int main(void) // use return value of int, not void
{
    ... // After you get oprIndex.

    // Declare
    // int opA, opB;
    // first.

    opA = 0;
    for (i = 0; i < oprIndex; i++)
    {
        opA *= 10;
        opA += equation[i] - '0';
    }

    opB = 0;
    for (i = oprIndex + 1; i < count; i++)
    {
        opB *= 10;
        opB += equation[i] - '0';
    }

    ... // Do calcuation.

    return 0; // Use return 0; at the last line of the main function.
              // For C++, this is added implicitly,
              // but in C, implicit adding is not in standard.
}

但是,在您的代码中,有几个语义错误 (例如,

key = '+';
for (i = 0; i < count && equation[i] != key; i++);
if (equation[i] == key)
当您的count等于SIZE且等式中没有+时,

会出现细分错误。),
所以重构你的逻辑和代码以便正确执行。