鱼C论坛

 找回密码
 立即注册
查看: 1142|回复: 2

[已解决]小白求助

[复制链接]
发表于 2023-10-23 10:38:59 | 显示全部楼层 |阅读模式

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

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

x
输入有两行。
第一行是一个整数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[100];
       
        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);
       
        return 0;
}
大佬可以教下我是哪里错了吗?
最佳答案
2023-10-23 10:39:49
你的代码有一处小错误,导致输出结果不符合预期。在输入系数时,你使用了 scanf("%d ",&xishu[i]),其中 %d 表示读取整数,但是加上空格 " " 可能会导致换行符的读取问题。正确的写法应该是 scanf("%d", &xishu[i]),即去掉空格。

另外,你的循环中有一些小问题。以下是修改后的代码:
#include <stdio.h>int main(void){    int pow, i, j;    int xishu[100];        scanf("%d", &pow);    for (i = 0; i <= pow; i++)        scanf("%d", &xishu[i]);        for (i = pow, j = 1; i >= 1; i--, j++)        printf("%d ", xishu[i] * j);    printf("0\n"); // 输出最后一项的系数为0        return 0;}
修改后的代码会依次计算每一项的导数,并按照要求输出。最后加入了一个额外的输出语句,将最后一项的系数0输出,以满足题目要求。

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

球一个最佳答案谢谢啦!这对我非常重要!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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[100];
    
    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;
}

这样修改后,你的代码就可以正确计算多项式的导数了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-23 10:39:49 | 显示全部楼层    本楼为最佳答案   
你的代码有一处小错误,导致输出结果不符合预期。在输入系数时,你使用了 scanf("%d ",&xishu[i]),其中 %d 表示读取整数,但是加上空格 " " 可能会导致换行符的读取问题。正确的写法应该是 scanf("%d", &xishu[i]),即去掉空格。

另外,你的循环中有一些小问题。以下是修改后的代码:
#include <stdio.h>int main(void){    int pow, i, j;    int xishu[100];        scanf("%d", &pow);    for (i = 0; i <= pow; i++)        scanf("%d", &xishu[i]);        for (i = pow, j = 1; i >= 1; i--, j++)        printf("%d ", xishu[i] * j);    printf("0\n"); // 输出最后一项的系数为0        return 0;}
修改后的代码会依次计算每一项的导数,并按照要求输出。最后加入了一个额外的输出语句,将最后一项的系数0输出,以满足题目要求。

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

球一个最佳答案谢谢啦!这对我非常重要!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-5 19:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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