编程实现如下功能:对输入的一元多项式,进行同类项合并,并按指数降序排序,输出处理后的一元多项式。

说明:

1.多项式由若干个单项式组成,单项式之间为加、减(+,-)关系。

2.单项式指数字与字母幂的乘积构成的代数式。对一元多项式,字母只有一种。

3.同类项合并指将多项式中指数相同的单项式,系数经过加减求和,合并为一个单项式。按指数降序指多项式中,单项式按指数从大到小顺序

相连。

格式说明

一元多项式输入输出时以字符串形式表示,格式如下

l.单项式之间用单个加减运算符相连,运算符:+,-

2.单项式由系数、字母、指数标识符、指数依次直接相连组成,各部分均不能省略。

系数:只由若干0到9数字字符组成(系数不等于0,且不以0开头)

字母:X

指数标识符:^

指数:只由若干0到9数字字符组成(指数可等于0,不等于0时不以0开头)

3.其他约定

输入不为空串,输出若为0则以空串表示

字符串中除以上字符,不包含空格等其他字符,字符串尾部以’\0’结束

多项式中第一个单项式前加运算时省略+符号,减运算时有-符号

注意:输入多项式符合上述格式,无需检查;输出多项式格式由考生程序保证

规格

输入多项式满足如下规格,考生程序无需检查:

–0

–0<=单项式指数<=3000<>

–单项式个数不限制,但同类项合并处理后,单项式的系数小于65535。

示例

输入:

"-7X^4+5X^6-3X^3+3X^3+1X^0"

输出:

"5X^6-7X^4+1X^0"

<=单项式指数<=3000<>

输入:-7X^5+7X^3+1X^2-7X^3+2X^5

输出:-5X^5+1X^2(要求从高次到低次排序)

#include "string.h"

#include "stdio.h"

#include "stdlib.h"

#define MAX_PATH 256

int store[1024] = {0};

int num = 0;

void getStringBeforeString(char *out,char *in,char *subFlag)

{

char *t = strstr(in,subFlag);

if(t!=NULL)

{

memcpy(out,in,t-in);

}

else

{

memset(out,0,1);

}

}

char *getUnit(char *out,char *in,int *pn)

{

char *position = NULL;

char tmp1[1024] = {0};

char tmp2[1024] = {0};

getStringBeforeString(tmp1,in,"+");

getStringBeforeString(tmp2,in,"-");

if (strlen(tmp1)==0 && strlen(tmp2)==0)

{

memset(out,0,1);

return in;

}

if (strlen(tmp1)

{

if (strlen(tmp1)!=0)

{

memcpy(out,tmp1,strlen(tmp1)+1);

*pn = 1;//正数

position = in+(strstr(in,"+")-in)+1;

}

else

{

memcpy(out,tmp2,strlen(tmp2)+1);

*pn = 0;//负数

position = in+(strstr(in,"-")-in)+1;

}

}

else

{

if(strlen(tmp2)!=0)

{

memcpy(out,tmp2,strlen(tmp2)+1);

*pn = 0;//负数

position = in+(strstr(in,"-")-in)+1;

}

else

{

memcpy(out,tmp1,strlen(tmp1)+1);

*pn = 1;//正数

position = in+(strstr(in,"+")-in)+1;

}

}

return position;

}

//准备工作:存入数据,处理数据(矩阵运算:行的元素和列的元素对应积的和),输出

int main()

{

//输入:

// "-7X^4+5X^6-3X^3+3X^3+1X^0"

//输出:

//"5X^6-7X^4+1X^0"

char buffer[1024] = {0};

char out[1024] = {0};

gets(buffer);

int pn = 1,pn_next = 1;//记录正负,1为正数

char *position = buffer;

//单独处理第一个

if (*position=='-')

{

pn_next = 0;

pn = pn_next;

position = position+1;

}

while(true)

{

memset(out,0,1024);

position = getUnit(out,position,&pn_next);

if (strlen(out)==0)

{

//处理最后一组

char *a = strtok(position,"X^");

char *b = strtok(NULL,"X^");

if (pn==1)

{

store[atoi(b)] += atoi(a);

}

else

{

store[atoi(b)] -= atoi(a);

}

break;

}

char *a = strtok(out,"X^");

char *b = strtok(NULL,"X^");

if (pn==1)

{

store[atoi(b)] += atoi(a);

}

else

{

store[atoi(b)] -= atoi(a);

}

pn = pn_next;

}

int headFlag = 0;

for (int i=1023;i>=0;i--)

{

int t = store[i];

if (t!=0)

{

if (t>0)

{

if (headFlag==1)

{

printf("+");

}

}

printf("%dX^%d",t,i);

headFlag = 1;

}

}

//store[num++] = atoi(out);

return 0;

}

c语言字符串化简,华为面试题:一元多项式的化简 C语言实现源码相关推荐

  1. 从一道面试题,到“我可能看了假源码[2]

    上一篇从一道面试题,到"我可能看了假源码"中,由浅入深介绍了关于一篇经典面试题的解法. 最后在皆大欢喜的结尾中,突生变化,悬念又起.这一篇,就是为了解开这个悬念. 如果你还没有看过 ...

  2. asp毕业设计——基于asp+access的精品在线试题库设计与实现(毕业论文+程序源码)——精品在线试题库

    基于asp+access的精品在线试题库设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于asp+access的精品在线试题库设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦.需要下 ...

  3. 华为电脑c语言总是错误,关于华为机试题求代码!解决方法

    关于华为机试题求代码!!! n个字符串,1 如n=3 1.what is local bus? 2.this is local bus. 3.local bus is name sdhfj. 那么最长 ...

  4. 【leetcode】第394题:字符串解码(华为笔试题)

    题目:给定一个经过编码的字符串,返回它解码后的字符串. 编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次.注意 k 保证为正整数. ...

  5. C语言在BST中找到最接近目标的值的算法(附完整源码)

    C语言在BST中找到最接近目标的值的算法 C语言在BST中找到最接近目标的值的算法完整源码(定义,实现,main函数测试) C语言在BST中找到最接近目标的值的算法完整源码(定义,实现,main函数测 ...

  6. C语言链表返回第n个到最后的节点的算法(附完整源码)

    C语言链表返回第n个到最后的节点的算法 C语言链表返回第n个到最后的节点的算法完整源码(定义,实现,main函数测试) C语言链表返回第n个到最后的节点的算法完整源码(定义,实现,main函数测试) ...

  7. C语言数组中两个数字之间的最大差的算法(附完整源码)

    C语言数组中两个数字之间的最大差的算法 C语言数组中两个数字之间的最大差的算法完整源码(定义,实现,main函数测试) C语言数组中两个数字之间的最大差的算法完整源码(定义,实现,main函数测试) ...

  8. C语言从未排序的链接列表中删除重复项的算法(附完整源码)

    C语言从未排序的链接列表中删除重复项的算法 C语言从未排序的链接列表中删除重复项的算法完整源码(定义,实现,main函数测试) C语言从未排序的链接列表中删除重复项的算法完整源码(定义,实现,main ...

  9. 51单片机c语言教程感应灯控制,可手动调节亮度的自感应开关台灯单片机源码+PCB源文件...

    STC单片机,C语言,环境亮度低自动开灯,可通过按键手动调节亮度Altium Designer画的原理图和PCB图如下:(51hei附件中可下载工程文件) 0.png (19.89 KB, 下载次数: ...

  10. 【C语言】游戏开发:天天酷跑丨完美练手项目 [附源码]

    目录 一.项目说明: 二.项目作用 三.项目技术要求 四.库.宏.主函数说明 五.项目实现 5.1游戏背景的实现 5.2实现Hero奔跑 5.3 实现Hero跳跃 5.4 优化帧等待 5.6使用结构体 ...

最新文章

  1. 元宇宙大热后将陷低潮, 虚实互联网更准确, 2030前后才可能全面热启
  2. CentOS 6.5安装Xen虚拟化
  3. Android 学习笔记--android——AsyncTask在Android4.X的机制问题
  4. web.xml配置详细
  5. 光纤激光切机计算机无法启动,激光切割机不出光,如何解决?
  6. ubutnu16.04安装ros2
  7. 零门槛人像转卡通、GIF表情包(赶快行动起来)
  8. SSL自签名的实现类org apache commons httpclient contrib ssl EasySSLP
  9. python中单词个数_python 统计单词个数
  10. java服务器测速_服务器测速,php在线测速
  11. 计算机硬盘启动设置方法,如何进入BIOS设置硬盘启动顺序|计算机BIOS硬盘启动设置方法...
  12. C++笔记(《C++新经典》)
  13. PSSP之特征提取(PSSP protein secondary structure prediction)
  14. 8个优秀的预训练模型,帮助您开始使用自然语言处理(NLP)
  15. 理论+实操 :华为NAT地址转换
  16. 黑魔法:iOS链式编程
  17. 如何用计算机模拟光的传播,一种模拟激光辐射颗粒的数值建模方法与流程
  18. 是谁说的测试工资高的,应届毕业生,面试测试岗5k薪资都没人要.....
  19. python通达信接口_python通达信接口-通达信 量化交易。
  20. DOSBOX使用技巧

热门文章

  1. mysql的bean配置_jsp+tomcat+mysql+sevlet+javabean配置流程
  2. python pcl学习入门
  3. mxnet slice_axis
  4. c++之数组指针作为形参,并返回数组
  5. ubuntu子系统多版本
  6. torch.cuda.is_available()返回false
  7. log_softmax
  8. pytorch 初始化权重
  9. 人脸关键点 姿态笔记
  10. Intel发布神经网络压缩库Distiller:快速利用前沿算法压缩PyTorch模型