将数组中的数字转换为整数。 (和更多)
Turning digits in an array to an integer. (and more)
我是 C 的新手,正在尝试构建一个仅使用的程序:
- 数组,
- 循环,
- 如果-其他,
- 基本功能(打印、扫描)
- 没有字符串之类的!
我的要求:
- 我应该在一行中从用户那里得到一个方程式。 '=' 结束等式。
- 必须正好有两个数字
- 必须只有一个运算符
示例输入:
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");
}
只需使用带有 +
和 *
的语句即可。
如果你不知道如何将字符转换成相应的数字,那么使用-'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
并且等式中没有 +
时会出现分段错误。),
因此重构您的逻辑和代码以正确执行。
我是 C 的新手,正在尝试构建一个仅使用的程序:
- 数组,
- 循环,
- 如果-其他,
- 基本功能(打印、扫描)
- 没有字符串之类的!
我的要求:
- 我应该在一行中从用户那里得到一个方程式。 '=' 结束等式。
- 必须正好有两个数字
- 必须只有一个运算符
示例输入:
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");
}
只需使用带有 +
和 *
的语句即可。
如果你不知道如何将字符转换成相应的数字,那么使用-'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
并且等式中没有 +
时会出现分段错误。),
因此重构您的逻辑和代码以正确执行。