1002 A+B for Polynomials
思路
结构体:存指数和系数 结构体数组要开得足够大!!且赋初值为0 依次输入数据,存入结构体数组。注意j的上限范围! 冒泡排序结构体数组(从大到小) 注意系数为零时,不能计入个数! 若个数t为0时,可直接输出0并return 控制输出格式,不要出现0.0,-0.0的情况(指数为int型数据,故无需考虑会出现0.0的情况) 题解
# include <stdio.h>
struct number {
int exp;
double coe;
} ;
int main ( ) {
struct number num[ 1001 ] = { 0 } ;
struct number p;
int i, j;
int x1, x2, y1, y2;
double z1, z2;
int t= 0 ;
scanf ( "%d" , & x1) ;
for ( i= 0 ; i< x1; i++ )
{
scanf ( "%d%lf" , & y1, & z1) ;
num[ i] . exp= y1;
num[ i] . coe= z1;
}
getchar ( ) ;
scanf ( "%d" , & x2) ;
for ( j= i; j< x1+ x2; j++ )
{
scanf ( "%d%lf" , & y2, & z2) ;
num[ j] . exp= y2;
num[ j] . coe= z2;
}
for ( i= 0 ; i< x1+ x2- 1 ; i++ )
for ( j= 0 ; j< x1+ x2- 1 - i; j++ )
{
if ( num[ j] . exp< num[ j+ 1 ] . exp)
{
p= num[ j] ;
num[ j] = num[ j+ 1 ] ;
num[ j+ 1 ] = p;
}
}
for ( i= 0 ; i< 1001 ; i++ )
{
if ( num[ i] . exp== num[ i+ 1 ] . exp)
{
num[ i+ 1 ] . coe= num[ i+ 1 ] . coe+ num[ i] . coe;
}
if ( num[ i] . exp!= num[ i+ 1 ] . exp&& num[ i] . coe!= 0 )
{
t++ ;
}
}
if ( t== 0 )
{
printf ( "%d" , t) ;
return 0 ;
}
printf ( "%d" , t) ;
for ( i= 0 ; i< 1001 ; i++ )
{
if ( ( num[ i] . exp!= num[ i+ 1 ] . exp) && num[ i] . coe!= 0.0 )
{
printf ( " %d %.1lf" , num[ i] . exp, num[ i] . coe) ;
}
}
return 0 ;
}