PAT:1002. A+B for Polynomials (25) 部分错误

本文介绍了一段程序代码,该代码用于接收两个多项式输入,并计算其中的有效项数。通过循环读取每一项的系数和次数,然后判断系数是否为零来决定该多项式的有效性。最后输出所有有效项及其系数。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//【warning】double 输入%lf,输出%f
struct arr
{
  int tag;
  double data;
}arr[1005];

int main()
{
  memset(arr,0,sizeof(arr));
  int t1,t2,tmp,maxI=0;          //maxI记录最多多少项
  double tdata;

  for(int I=0 ; I<2 ; ++I)        //输入第一个和第二个多项式
  {
    scanf("%d",&t1);          //多项式有t1项
   /* if(t1>maxI)
      maxI=t1;*/
    for(int i=0 ; i<t1 ; ++i)      //输入多项式
    {
      scanf("%d",&tmp);
      arr[tmp].tag=1;          //修改过,设置为有效
      scanf("%lf",&tdata);
      arr[tmp].data+=tdata;      //加上这项前系数
      if(arr[tmp].data==0)      //正负抵消,没有此项了,设为无效
        arr[tmp].tag=0;
    }
  }
  int len=0;                //len记录多项式项数
  for(int i=0 ; i<=1000 ; ++i)
    if(arr[i].tag==1)
      ++len;
  printf("%d",len);
  if(len!=0)
  {
    int cnt=0;      //【caution】记录输出个数,控制空格数量,不一定是输出到指数为0才结束
  printf(" ");
    for(int i=1000 ; i>=0 ; --i)        //从后向前找tag为1的有效项
      if(arr[i].tag==1)
      {
        printf("%d %.1f",i,arr[i].data);
    ++cnt;
        if(cnt!=len)
          printf(" ");          //保证只有中间有空格
      }
  }
  printf("\n");
  //system("pause");
  return 0;
}

转载于:https://www.cnblogs.com/Evence/p/4295538.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值