試題五
閱讀下列程序說明和 C 程序,把應(yīng)填入其中__n__ 處的字句,寫在答卷的對應(yīng)欄內(nèi)。
[程序說明]
(1)本程序利用輾轉(zhuǎn)相除法求兩個均不超過100 次的多項式A,B 的最大公因式。
例: A(x)=x3 一x2+x 一1=(x2+1)(x 一1)
B(x)=x5 一7x4 十7x3-3x2+6x+4=(x2+1) (x3-7x2 十6x+4)
最大公因式為x2+1。
(2)輾轉(zhuǎn)相除法的算法如下:
用其中的一個多項式去除另一個多項式;然后,將所得余式變成除式,原除式變成被除式。如此反復(fù)相除,當(dāng)余式為。時,當(dāng)前除式即為最大公因式。
[程序]
#include
#include
#define DECISE.0005
#define MAX_POWER 100
main( )
{ int i,a,b;
float Ca[MAX_POWER+1],Cb[MAX _POWER+1];
void Remainder();
scanf("%d",&a);
for ( i=0;i<=a;i++ )
scanf( "%f",&Ca[i] );
scanf( "%d",&b) ;
for ( i=0;i<=b;i++ )
scanf( "%d",&Cb[i] );
Remainder(Ca,Cb,a,b);
}
void Remainder(Pointer A,Pointer B,a,b)
float *Pointer A,*Pointer B;
int a,b;
{ float x,y,*Temp;
int i,j,F(xiàn)1ag=1;
while ( Flag )
{ i=0;
while ( PointerB[i]==0 )
{ i ++;b 一-;
__①__ ;
}
x=Pointer[i];
while ( i<=b )
PointerB[i++]/=x;
for ( i=0;i<=a-b;i++ )
{ __②__ ;
for(j=0;j
{ y = PointerA[i+l+j]一x * PointerB[j+1];
PointerA[ __③__ ]=
( y
}
}
Temp=Pointer A;
PointerA=PointerB; ·
PointerB = __④__ ;
a=b--;
for ( Flag=0,i=0;i
if ( PointerB[i] !=0.0 ) Flag=1;
}
printf( "The Greatest Common Factor is:\n");
for ( i=0;i
if ( PointerA[i]!= 0.0)
printf( "%5.3f *x ∧%d%s",
PointerA[I],a-i,( PointerA[i+1]<0.0 ) ?"":"+" );
printf( "%5.3f\n",PointerA[a] );
}
相關(guān)推薦:2010年軟件水平考試軟件設(shè)計師專題講義匯總北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |