鱼C论坛

 找回密码
 立即注册
查看: 1614|回复: 3

[已解决]平台显示答案错误 哪里出问题了啊

[复制链接]
发表于 2023-10-2 16:26:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目是
输入一个非负整数n,生成一张3的乘方表,输出3
0
~3
n
的值。可调用幂函数计算3的乘方。

输入格式:
输入在一行中给出一个非负整数n。

输出格式:
按照幂的递增顺序输出n+1行,每行格式为“pow(3,i) = 3的i次幂的值”。题目保证输出数据不超过长整型整数的范围。
  1. #include<stdio.h>
  2. #include<math.h>
  3. int main()
  4. {
  5.         long int n;
  6.         scanf("%ld",&n);
  7.         n=n+1;
  8.         long int i=0,a;
  9.         for(;i<n;i++)
  10.         {
  11.                 a=pow(n-1,i);
  12.                 printf("pow(%ld,%ld) = %ld\n",n-1,i,a);
  13.         }
  14. }
复制代码
最佳答案
2023-10-2 16:26:56
这个程序的问题在于计算幂的时候使用了 n-1 而不是 3,应该将 a=pow(n-1,i) 改为 a=pow(3,i)。另外,题目要求输出的是 3 的乘方表,而不是 n 的乘方表,应该将循环条件的 i<n 改为 i<=n。修改后的代码如下:

  1. #include <stdio.h>
  2. #include <math.h>

  3. int main()
  4. {
  5.     long int n;
  6.     scanf("%ld", &n);
  7.     n = n + 1;
  8.     long int i = 0, a;
  9.     for (; i <= n; i++)
  10.     {
  11.         a = pow(3, i);
  12.         printf("pow(3,%ld) = %ld\n", i, a);
  13.     }
  14.     return 0;
  15. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-10-2 16:26:56 | 显示全部楼层    本楼为最佳答案   
这个程序的问题在于计算幂的时候使用了 n-1 而不是 3,应该将 a=pow(n-1,i) 改为 a=pow(3,i)。另外,题目要求输出的是 3 的乘方表,而不是 n 的乘方表,应该将循环条件的 i<n 改为 i<=n。修改后的代码如下:

  1. #include <stdio.h>
  2. #include <math.h>

  3. int main()
  4. {
  5.     long int n;
  6.     scanf("%ld", &n);
  7.     n = n + 1;
  8.     long int i = 0, a;
  9.     for (; i <= n; i++)
  10.     {
  11.         a = pow(3, i);
  12.         printf("pow(3,%ld) = %ld\n", i, a);
  13.     }
  14.     return 0;
  15. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-2 16:27:08 | 显示全部楼层
根据你提供的代码,问题出在循环部分的幂函数计算上。应该使用 pow 函数的第一个参数为底数 3,而不是 n-1。

以下是修复后的代码:

  1. #include <stdio.h>
  2. #include <math.h>

  3. int main() {
  4.     long int n;
  5.     scanf("%ld", &n);
  6.     n = n + 1;
  7.     long int i = 0, a;
  8.     for (; i < n; i++) {
  9.         a = pow(3, i);
  10.         printf("pow(3,%ld) = %ld\n", i, a);
  11.     }
  12.     return 0;
  13. }
复制代码


在修复后的代码中,将计算幂函数的底数恢复为 3,即 a = pow(3, i)

请确保按照上述方式修改代码并重新运行。如果还有其他问题,请提供完整的错误信息以帮助我更好地诊断问题。
如果问题已经解决,请设置最佳答案
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-2 16:28:03 | 显示全部楼层
这段代码有一个小错误,它在使用pow函数计算3的幂时使用了变量n-1而不是常量3。因此,当n不等于4时,输出结果将不符合预期。

下面是修改后的代码:


  1. #include <stdio.h>
  2. #include <math.h>

  3. int main()
  4. {
  5.     long int n;
  6.     scanf("%ld", &n);
  7.     n += 1;
  8.     for (long int i = 0; i < n; i++)
  9.     {
  10.         long int a = pow(3, i);
  11.         printf("pow(3,%ld) = %ld\n", i, a);
  12.     }
  13.     return 0;
  14. }
复制代码


在上述代码中,我们将pow函数中的参数由n-1改为了3,以便正确计算3的幂。

希望对你有所帮助,如果你还有其他问题,请随时提问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-12 00:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表