C语言&Java实现“输入系数和幂,输出加法多项式”
每行输入两个数,第一个数为系数,第二个数是幂次,最后结果由高幂次到低幂次输出加法多项式。
【下面的代码没有考虑系数为负】
C语言:
//多项式加法
//输入样例:第一位是系数,第二位是幂次
// 2 6
// 3 5
// 12 3
// 6 1
// 20 0
// 2 6
// 3 5
// 12 2
// 6 1
// 20 0
//输出样例:
//4x6+6x5+12x3+12x2+12x+40
#include "stdio.h"
int function(int array[20][2],int length)
{
int b[20][2];//定义二维数组b用于存储同幂合并后的结果
int count1=0;//设置计数项
for(int key=0;key<=100;key++){//设置一个key去比对幂次,幂次最大为100 【可以设置for(int key=100;key>=0;key--),后面输出多项式时就可以简化】
int temp=0;
for(int i=0;i<length;i++){
if(array[i][1]==key){//幂相同的项相加
temp+=array[i][0];
}
if(i==length-1 && temp!=0){//设置数据录入条件:当遍历完整个数组(标志:i=length-1),且temp不能为0时
b[count1][0]=temp;
b[count1][1]=key;
count1++;
}
}
}
for(int j=count1-1;j>=0;j--){//输出多项式
// if(j!=0){
// if(b[j][1]==0){
// printf("%d",b[j][0]);
// }else if(b[j][1]==1){
// printf("%dx+",b[j][0]);
// }else{
// printf("%dx%d+",b[j][0],b[j][1]);
// }
// }else{
// if(b[j][1]==0){
// printf("%d",b[j][0]);
// }else if(b[j][1]==1){
// printf("%dx",b[j][0]);
// }else{
// printf("%dx%d",b[j][0],b[j][1]);
// }
// }
printf("%d",b[j][0]);
if(b[j][1]!=0){
printf("x");
if(b[j][1]==1){
printf("+");
}else if(j==0){
printf("%d",b[j][1]);
}else{
printf("%d+",b[j][1]);
}
}
}
}
int main()//主函数
{
int a[20][2];
printf("请输入(键入-1结束输入):\n");
int length=sizeof(a)/sizeof(a[0]);//获取数组a的长度
int count=0;//设置一个计数项,录一次数据累加一次
for(int i=0;i<length;i++){
for(int j=0;j<2;j++){
scanf("%d",&a[i][j]);
if(a[i][j]==-1) //如果输入结果为-1,则跳出for循环
goto out;
}
count++;
}
out:
function(a,count);
}
Java:
package Grant;
import java.util.Scanner;
public class 多项式1 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int[][] a=new int[20][2];
System.out.println("请输入(键入-1结束输入):");
int count=0;
OUT://跳出最外层的循环,接下来直接往21行去
for(int i=0;i<a.length;i++) {
for (int j = 0; j < 2; j++) {
a[i][j]=sc.nextInt();
if(a[i][0]==-1) {
break OUT;
}
}
count++;
}
solution s=new solution();
s.function(a, count);
}
}
class solution{
void function(int[][] array,int length) {
int[][] b=new int[20][2];
int count1=0;
for(int key=0;key<100;key++) {
int temp=0;
for(int i=0;i<length;i++) {
if(array[i][1]==key) {
temp+=array[i][0];
}
if(i==length-1 && temp!=0) {
b[count1][0]=temp;
b[count1][1]=key;
count1++;
}
}
}
for(int j=count1-1;j>=0;j--) {
System.out.print(b[j][0]);
if(b[j][1]!=0) {
System.out.print("x");
if(b[j][1]==1) {
System.out.print("+");
}else if(j==0) {
System.out.print(b[j][1]);
}else {
System.out.print(b[j][1]+"+");
}
}
}
}
}