不叫灯笼椒MOOC《程序设计入门——C语言》翁恺 第七周 7.1编程练习答案及笔记

不叫灯笼椒 MOOC《程序设计入门——C语言》翁恺 第七周 7.1编程练习答案及笔记icon-default.png?t=N7T8https://www.cnblogs.com/denglongjiao/p/16173621.html

形式1: 

#include <stdio.h>
int main()
{
    int num[101] = {0};//初始化为0,因为次幂最大为100,所以在让下标作为次幂时,要把num[100]这个元素包括进去,所以数组长度101
    int a, b;
    int j = 2;
    int i;
    int flag = 0;
    for (; j > 0; j--)//循环两次输入多项式
    {
        do
        {
            scanf("%d %d", &a, &b);
            num[a] += b;    //用下标作为次幂,数组num的元素的值作为系数。当两次输入多项式有相同的次幂时,让系数相加
        } while (a != 0);
    }
    for (i = 100; i >= 0; i--)//遍历数组,从大到小
    {
        if (num[i] > 1 || num[i] < -1)//当系数不为0或1、-1时
        {
            if (i == 0)//次幂为0
            {
                printf("%d", num[i]);
            }
            else if (i == 1)//次幂为1
            {
                printf("%dx", num[i]);
                flag = 1;
            }
            else if (i > 1)//次幂大于1
            {
                printf("%dx%d", num[i], i);
                flag = 1;
            }
        }
        else if (num[i] == 1)//当系数为1,则要注意系数±1的绝对值不显示
        {
            if (i == 0)//次幂为0
            {
                printf("1");
            }
            else if (i == 1)//次幂为1
            {
                printf("x");
                flag = 1;
            }
            else if (i > 1)//次幂大于1
            {
                printf("x%d", i);
                flag = 1;
            }
        }
        else if (num[i] == -1)//当系数为-1,则要注意系数±1的绝对值不显示
        {
            if (i == 0)//次幂为0
            {
                printf("-1");
            }
            else if (i == 1)//次幂为1
            {
                printf("-x");
                flag = 1;
            }
            else if (i > 1)//次幂大于1
            {
                printf("-x%d", i);
                flag = 1;
            }
        }
        else if (num[i] == 0 && i == 0)//当次幂和系数都为0,要输出0
        {   
            if(flag){//当0次幂前有系数不为0的次幂,则在前加上+号(因为是次幂从大到小输出,当0次幂前的所有次幂的系数都为0,则flag默认为0)
            	printf("+");
            }
            printf("0");
        }
        if (flag && num[i - 1] > 0)//当flag为1且该次幂的下一个次幂的系数不为0和负数,在后面加上+号
        {      //---------------第一种①num[i-1]>0----------------第二种②num[i-1]>=0
            printf("+");
        }
    }
    return 0;
}

 形式2:

#include <stdio.h>
int main()
{
    int num[101] = {0};//初始化为0,因为次幂最大为100,所以在让下标作为次幂时,要把num[100]这个元素包括进去,所以数组长度101
    int a, b;
    int j = 2;
    int i;
    for (; j > 0; j--)//循环两次输入多项式
    {
        do
        {
            scanf("%d %d", &a, &b);
            num[a] += b;    //用下标作为次幂,数组num的元素的值作为系数。当两次输入多项式有相同的次幂时,让系数相加
        } while (a != 0);
    }
    for (i = 100; i >= 0; i--)//遍历数组,从大到小
    {
        int flag = 0;//---------------------------------------------------第二种②
        if (num[i] > 1 || num[i] < -1)//当系数不为0或1、-1时
        {
            if (i == 0)//次幂为0
            {
                printf("%d", num[i]);
            }
            else if (i == 1)//次幂为1
            {
                printf("%dx", num[i]);
                flag = 1;
            }
            else if (i > 1)//次幂大于1
            {
                printf("%dx%d", num[i], i);
                flag = 1;
            }
        }
        else if (num[i] == 1)//当系数为1,则要注意系数±1的绝对值不显示
        {
            if (i == 0)//次幂为0
            {
                printf("1");
            }
            else if (i == 1)//次幂为1
            {
                printf("x");
                flag = 1;
            }
            else if (i > 1)//次幂大于1
            {
                printf("x%d", i);
                flag = 1;
            }
        }
        else if (num[i] == -1)//当系数为-1,则要注意系数±1的绝对值不显示
        {
            if (i == 0)//次幂为0
            {
                printf("-1");
            }
            else if (i == 1)//次幂为1
            {
                printf("-x");
                flag = 1;
            }
            else if (i > 1)//次幂大于1
            {
                printf("-x%d", i);
                flag = 1;
            }
        }
        else if (num[i] == 0 && i == 0)//当次幂和系数都为0,要输出0
        {   
            printf("0");
        }
        if (flag && num[i - 1] >= 0)//当flag为1且该次幂的下一个次幂的系数不为0和负数,在后面加上+号
        {     //---------------第一种①num[i-1]>0----------------第二种②num[i-1]>=0
            printf("+");
        }
    }
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值