我正在学习如何用c编写程序:
我想创建一个程序,将一个数字分成数字,从那里我想将它们存储到一个数组中(我已经在下面的代码中完成了)。从那里我需要使用数字打印出数字来帮助生成相同的数字。程序在运行时崩溃,我不知道为什么。
#include <stdio.h>
int power(int a, int b);
int main()
{
//Issue: printing out incorrect numbers
//Fix: Recall that c is treated as a character here when getchar is invoked
#define MAX_SIZE 100
const int TEN = 10;
const int ONE = 1;
int c;
int digitPos, digitHolder, numberPower = 0;
int my_strg[MAX_SIZE];
printf("\n");
while (((c = getchar()) != EOF) && (c != '\n'))
{
my_strg[digitPos] = c - '0';
digitPos = digitPos + ONE;
}
while (digitPos >= 0)
{
int toPower = digitPos - 1;
printf("%10d", power(TEN, toPower));
digitPos = digitPos - 1;
}
return 0;
}
int power(int a, int b)
{
if (b == 0)
{
return 1;
}
else
{
return a * power(a, b - 1);
}
}
目前输出是返回输入数字所需的功率,但是在打印之后,程序崩溃。有人可以指导我如何解决这个问题吗?
答案 0 :(得分:0)
将时间条件while (digitPos >= 0)
更改为while (digitPos > 0)
因为当digipos
== 0 - &gt; toPower
== - 1 - &gt; power(TEN, toPower)
CRASH