通过键盘接收一组多项式的系数和指数,建立多项式(要求各项按指数升序排列),并按指定格式输出。
输入格式:
第一行输入一个正整数n,表示非零项个数。
第二行输入n对整数,每对形如(7,3),表示系数为7、指数为3的项。
输出格式:
按多项式形式输出,各项按指数升序排列,例如6+2X-7X^8
输入样例:
在这里给出一组输入。例如:
4
(6,0)(2,1)(-8,70)(4,150)
输出样例:
在这里给出相应的输出。例如:
6+2X-8X^70+4X^150
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int data1;
int data2;
struct node* next;
}node,*linklist;
int main()
{
int n;
scanf("%d", &n);
getchar();
linklist head;
head = (node*)malloc(sizeof(node));
//head->next = NULL;
int a = 0, b = 0;
char aa = 0, bb = 0;
node* p;
node* q = head;
for (int i = 0; i < n; i++)
{
//尾插法建立链表
p = (node*)malloc(sizeof(node));
scanf("%c%d,%d%c", &aa, &a, &b, &bb);
p->data1 = a;
p->data2 = b;
q ->next= p;
q = p;
}
q->next = NULL;
node* s = head->next;//打印
if (s->data2 == 0)//判断常数项
{
printf("%d", s->data1);
}
else
{
printf("%dX^%d", s->data1, s->data2);
}
s = s->next;
while (s)
{
if (s->data1 > 0)
{
if (s->data2 == 1)
{
printf("+%dX", s->data1);
}
else {
printf("+%dX^%d", s->data1, s->data2);
}
}
else if (s->data1 < 0)
{
if (s->data2 == 1)
{
printf("%dX", s->data1);
}
else
{
printf("%dX^%d", s->data1, s->data2);
}
}
s = s->next;
}
return 0;
}
关于 后面的输出部分仍有瑕疵,但是pta通过了我就先不改了
总之就是 判断十分的暴力 主要就是建立链表