TYVJ 1103 多项式输出 解题报告

  纯模拟,考虑0啊,1啊,-1啊等的特殊情况就行了。。。
  代码如下:

#include <stdio.h>
#include <stdlib.h>
const char xishu[2][4] = {"%+d", "%d"};

void output(int a, int b, int *c)
{
	if(a == 0){
		return;
	}
	if(b == 0){
		printf(xishu[*c], a);
	}else if(abs(a) == 1){
		if(*c){
			if(a == -1){
				printf("-");
			}
		}else{
			if(a == 1){
				printf("+");
			}else{
				printf("-");
			}
		}
	}else{
		printf(xishu[*c], a);
	}
	//上面输出系数
	if(b == 0){
		return;
	}else if(b == 1){
		printf("x");
	}else{
		printf("x^%d", b);
	}
	//上面输出x
	if(*c){
		*c = 0;
	}
}

int main(int argc, char **argv)
{
	int i, j = 1;
	int n, a;
	scanf("%d", &n);
	for(i = n; i >= 0; i--){
		scanf("%d", &a);
		if(i == n){
			output(a, i, &j);
		}else{
			output(a, i, &j);
		}
	}
	if(j){
		printf("0");
	}
	printf("\n");
	return 0;
}
posted @ 2011-08-03 16:11  zqynux  阅读(200)  评论(0编辑  收藏  举报