1215787625 发表于 2023-10-23 10:38:59

小白求助

输入有两行。
第一行是一个整数n(0 <= n <= 100)表明多项式的最高次幂为n。
第二行包含n+1个非负整数,C n ,C n-1 ,C n-2 ,C n-3 ,C n-4 ,… ,C 1,C 0(0 <= C i <= 1000)且Cn != 0。Ci是幂次为i的项的系数。

输出
在一行内输出f'(x)的结果。
(1) 如果g(x) = 0那么直接输出0
(2) 如果g(x)形如C m(x^m)+C m-1(x^(m-1))+…+C 0(C m!=0)那么输出C m…C 0
(3) 相邻整数之间有单个空格。

样例输入
2
5 3 6

样例输出
10 3

#include <stdio.h>
int main(void)
{
        int pow,i,j;
        int xishu;
       
        scanf("%d",&pow);
        for (i = 0;i <= pow;i++)
                scanf("%d ",&xishu);
        for (--i,j = 0;i >= 0;i--,j++)
                printf("%d ",xishu * j);
       
        return 0;
}
大佬可以教下我是哪里错了吗?{:10_254:}

isdkz 发表于 2023-10-23 10:39:24

你的代码有两个小问题。首先,在输入系数时,你在 scanf 函数中的格式字符串中多了一个空格,导致输入不匹配。你应该将 scanf("%d ",&xishu[ i]) 改为 scanf("%d",&xishu[ i]) 。其次,在计算导数时,你将每个系数乘以了它的幂次,而实际上应该是乘以它的幂次减一。所以你应该将 xishu[ i] * j 改为 xishu[ i] * (j-1) 。下面是修改后的代码:

#include <stdio.h>
int main(void)
{
    int pow,i,j;
    int xishu;
   
    scanf("%d",&pow);
    for (i = 0;i <= pow;i++)
      scanf("%d",&xishu[ i]);
    for (--i,j = 0;i >= 0;i--,j++)
      printf("%d ",xishu[ i] * (j-1));
   
    return 0;
}


这样修改后,你的代码就可以正确计算多项式的导数了。

Mike_python小 发表于 2023-10-23 10:39:49

你的代码有一处小错误,导致输出结果不符合预期。在输入系数时,你使用了 scanf("%d ",&xishu),其中 %d 表示读取整数,但是加上空格 " " 可能会导致换行符的读取问题。正确的写法应该是 scanf("%d", &xishu),即去掉空格。

另外,你的循环中有一些小问题。以下是修改后的代码:


#include <stdio.h>

int main(void)
{
    int pow, i, j;
    int xishu;
   
    scanf("%d", &pow);
    for (i = 0; i <= pow; i++)
      scanf("%d", &xishu);
   
    for (i = pow, j = 1; i >= 1; i--, j++)
      printf("%d ", xishu * j);

    printf("0\n"); // 输出最后一项的系数为0
   
    return 0;
}


修改后的代码会依次计算每一项的导数,并按照要求输出。最后加入了一个额外的输出语句,将最后一项的系数0输出,以满足题目要求。

希望这个解答能够帮到你!如果还有其他问题,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}
页: [1]
查看完整版本: 小白求助