练习专区

今天的一小步就是明天的一大步
Problem 1813 一元多项式的建立
Accepted: 7   Total Submit: 7
Time Limit: 1000ms   Memory Limit: 30720KB
Description
多项式的输出可以写成:12+15x+15x^7+ x^10-5x^17,现在按升幂的方式输入多项式的系数的次数,下列的代码是把多项式建立成链表,然后输出。你的任务是把main()中2行定义变量的语句补上,再对标上(1)(2)……的地方加上注释。 #include #include #include//(1) struct Polynomial { int coef; int exp; struct Polynomial *next;//(2) }; struct Polynomial * creat(int n) { struct Polynomial *head,*q,*p1; int i; p1 = (struct Line*)malloc(sizeof(struct Line));//有错,请改。 head = p1; q=head; for(i=0;icoef ,&p1->exp ); q->next = p1; q = q->next; //(4) } p1->next = NULL;//(5) return head; } void out(struct Polynomial *head) { struct Polynomial *p;//(6) p = head->next; do { if(p->coef>0&&p!=head->next) { printf("+"); } if(p->exp==0) printf("%d",p->coef); else if(p->coef==1) { printf("x"); if(p->exp!=1) printf("^%d",p->exp); } else if(p->coef==-1) { printf("-x"); if(p->exp!=1) printf("^%d",p->exp); } else if(p->exp==1) printf("%dx",p->coef); else printf("%dx^%d",p->coef,p->exp); p=p->next;//(7) }while(p!=NULL); } void main() { struct Polynomial *head=NULL; int n,m,t=1; scanf("%d",&m); while(m--)//(8) { scanf("%d",&n); head=creat(n); printf("Case %d:",t++); out(head); printf("\n"); } }
Input
一开始输入一个整数T(0 < T <= 10),表示要处理T个多项式,接下来有2T行,每两行是一个多项式的输入。先输入一个正整数n表示多项式的项数,后面的2n个数是对应的系数和指数。
Output
每行输出一个多项式,先输出“Case id:”,id是序号,接着按样例输出多项式。
Sample Input
2
5
12 0 15 1 15 7 1 10 -5 17
3
1 1 -1 2 3 3
Sample Output
Case 1:12+15x+15x^7+x^10-5x^17
Case 2:x-x^2+3x^3
Hint
提交     返回