English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

C語言當中,執行次方的運算,要用何種函數完成。然後加入在你的程式中,能夠讓使用者輸入兩個正數a以及b,然後計算ab的大小並顯示出。

誰能告訴我嗎?

2007-09-27 14:02:37 · 2 個解答 · 發問者 。o° CHRIS° o。 1 in 電腦與網際網路 程式設計

2 個解答

執行次方運算的函式:pow ( 底數 , 次方 )
數值太大,發生溢位!下面的程式碼可以解決…
//Power by Visual Studio 2005
#include
#include
#include
//定義最大值
#define MAX 0xff
#define EXPMAX 0xffff
//被乘數 *a,乘數 b,答案 *c,答案位數 Bit_length
void multiply(int *a, int b, int *c, int Bit_length) {
int i,tmp,carry=0;
for(i=Bit_length-1;i>=0;i--){
tmp=a[i]*b+carry,c[i]=tmp%10,carry=tmp/10;
}
}
int main(int argc, char* argv[]){
//==========START==========//
FILE *f;
char *fn="output.txt";
int N,EXP,i,j,setw,*number,*result;
double BIT;
printf("Ex: 2^10= 1024\nMAX= %d^%d\nInput main Number: ",MAX,EXPMAX),scanf("%d",&N);
printf("Input EXP Number: "),scanf("%d",&EXP);
if((N>=0)&&(N<=MAX)&&(EXP>=0)&&(EXP<=EXPMAX)){
//計算位數
BIT=(int)(EXP*log10(N)+1);
number=(int*)malloc((int)BIT*sizeof(int)),result=(int*)malloc((int)BIT*sizeof(int));
//初始化被乘數
for(i=0;i<(int)BIT;i++){
number[i]=(i==((int)BIT-1)?1:0);
}
//進行運算
for(i=0;i multiply(number,N,result,(int)BIT);
for(j=0;j<(int)BIT;j++){
number[j]=result[j];
}
}
//顯示數值
printf("%d^%d= ",N,EXP);
for(j=0,setw=((int)BIT%4)-1;j<(int)BIT;j++){
printf("%d",number[j]);
if((int)BIT>4){
printf("%s",((j==setw)||(j>setw&&(j-setw)%4==0&&(j+1)!=(int)BIT)?",":""));
}
}
//輸出文字檔
f=fopen(fn,"w");
if(f!=NULL){
fprintf(f,"%d!= ",N);
for(j=0;j<(int)BIT;j++){
fprintf(f,"%d",number[j]);
if((int)BIT>4){
fprintf(f,"%s",((j==setw)||(j>setw&&(j-setw)%4==0&&(j+1)!=(int)BIT)?",":""));
}
}
fclose(f);
}
//釋放記憶體
free(number),free(result);
}else{
printf("Incorrect number!\n");
}
//==========END==========//
printf("\n"),system("PAUSE");
return 0;
}

2007-09-27 15:08:45 · answer #1 · answered by Big_John-tw 7 · 0 0

要是不知道指令的話可以自己寫一個

int 次方(int a;int b)
{
 int i,sum=0;
 for(i=0;i   sum+=b;
 erturn sum;
}

2007-09-27 16:30:21 · answer #2 · answered by ? 5 · 0 0

fedest.com, questions and answers