C++用栈实现幂函数并要求从文件中输入输出
时间: 2024-05-12 14:19:01 浏览: 52
以下是C语言实现幂函数的代码,使用栈来实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define STACK_SIZE 100
typedef struct {
double data[STACK_SIZE];
int top;
} Stack;
void init_stack(Stack *s) {
s->top = -1;
}
int is_empty(Stack *s) {
return s->top == -1;
}
int is_full(Stack *s) {
return s->top == STACK_SIZE - 1;
}
void push(Stack *s, double x) {
if (is_full(s)) {
printf("Stack overflow!\n");
exit(EXIT_FAILURE);
}
s->data[++(s->top)] = x;
}
double pop(Stack *s) {
if (is_empty(s)) {
printf("Stack underflow!\n");
exit(EXIT_FAILURE);
}
return s->data[(s->top)--];
}
double pow_stack(double base, int exponent) {
Stack s;
init_stack(&s);
push(&s, 1.0);
while (exponent > 0) {
if (exponent % 2 == 1) {
push(&s, base * pop(&s));
}
base *= base;
exponent /= 2;
}
return pop(&s);
}
int main() {
FILE *fin = fopen("input.txt", "r");
FILE *fout = fopen("output.txt", "w");
int base, exponent;
fscanf(fin, "%d%d", &base, &exponent);
double result = pow_stack(base, exponent);
fprintf(fout, "%.2f\n", result);
fclose(fin);
fclose(fout);
return 0;
}
```
使用文件输入输出,需要在程序中打开一个输入文件和一个输出文件,从输入文件中读取数据并计算,最后将结果写入输出文件中。以上代码中,使用了`fopen`来打开文件,`fscanf`来从文件中读取数据,`fprintf`来将结果写入文件中,最后使用`fclose`来关闭文件。
注意,在使用栈计算幂函数时,可以将指数转换成二进制形式,从而将幂函数转换成一系列的平方计算。这样可以大大减少计算次数,提高效率。
阅读全文