用c语言写一个计算正整数n次幂的函数
时间: 2023-06-02 18:04:11 浏览: 61
好的,我可以帮您解决这个问题。以下是用 C 语言编写一个计算正整数 n 次幂的函数的示例代码:
```c
#include<stdio.h>
int power(int base, int exponent){
int result = 1;
for(int i = 0; i < exponent; i++){
result *= base;
}
return result;
}
int main(){
int base, exponent;
printf("请输入底数:");
scanf("%d", &base);
printf("请输入指数:");
scanf("%d", &exponent);
int result = power(base, exponent);
printf("%d 的 %d 次幂为 %d。\n", base, exponent, result);
return 0;
}
```
这个函数使用了循环来计算 n 次幂,循环的次数是指数的值。代码中的 main 函数通过用户输入底数和指数来计算幂,然后输出结果。
希望这个代码示例能帮到您!如果您还有其他问题,请随时提出。
相关问题
c语言输入一个正整数n,计算n位水仙花数。
水仙花数是指一个n位正整数,其各位数字的n次方之和等于该数本身。例如,153是一个三位水仙花数,因为1^3+5^3+3^3=153。
以下是C语言代码实现:
```c
#include <stdio.h>
#include <math.h>
int main() {
int n, i, j, num, sum;
printf("请输入位数n:");
scanf("%d", &n);
printf("%d位水仙花数有:\n", n);
for (i = pow(10, n - 1); i < pow(10, n); i++) { //循环枚举n位数
num = i;
sum = 0;
for (j = 0; j < n; j++) { //计算每一位数字的n次方之和
sum += pow(num % 10, n);
num /= 10;
}
if (sum == i) { //如果满足水仙花数定义,输出该数
printf("%d ", i);
}
}
return 0;
}
```
在此代码中,首先通过scanf函数输入位数n,然后利用for循环枚举n位数。对于每一个枚举到的数,利用另一个for循环计算其各位数字的n次方之和。最后,如果该数等于各位数字的n次方之和,即满足水仙花数的定义,就输出该数。
用c语言 写一个递归函数int fun(int n),将正整数n反转。
以下是用 C 语言编写的递归函数,用于将正整数 n 反转:
```c
#include <stdio.h>
int fun(int n) {
if (n < 10) {
return n;
} else {
int digit = n % 10;
int newNum = fun(n / 10);
while (newNum >= 10) {
newNum /= 10;
}
return digit * power(10, numDigits(newNum)) + newNum;
}
}
int power(int base, int exponent) {
int result = 1;
for (int i = 0; i < exponent; i++) {
result *= base;
}
return result;
}
int numDigits(int n) {
int count = 0;
while (n > 0) {
count++;
n /= 10;
}
return count;
}
int main() {
int n = 12345;
printf("Original number: %d\n", n);
int reversed = fun(n);
printf("Reversed number: %d\n", reversed);
return 0;
}
```
可以看到,该函数使用了三个辅助函数:power 函数用于计算 10 的幂,numDigits 函数用于计算一个数字的位数,以及一个 while 循环,用于将新数字缩小到一位。