Devc++的 n次方

要用以下

#include<stdio.h>

#include<stdlib.h>

int main()

{

int num1,num2;

char input='y', ch, sum, sub, Mul, Dev;

printf(" A L T I S 計 算 工 作 室 歡迎您 \n");

printf(" \n");

printf(".☆.歡 迎.☆.★.計算.★.☆ 的.★.世 界 ★. \n");

printf(" \n");

printf(" 請使用者輸入兩個整數便會相加相減相乘相除 \n");

printf(" \n");

printf("***** 四則運算 *****\n");

while(input=='y'){

printf("請輸入要執行的運算(+-*/):\n");

scanf("%c",&ch);

fflush(stdin);

printf("請使用者輸入一個兩位數數字 1 : ");

scanf("%d",&num1);

fflush(stdin);

printf("請使用者輸入一個兩位數數字 2: ");

scanf("%d",&num2);

fflush(stdin);

switch(ch){

case '+':

sum = num1+num2;

printf("%d+%d=%d\n",num1,num2,sum);

break;

case '-':

sub = num1 - num2;

printf("%d-%d=%d\n",num1,num2,sub);

break;

case '*':

Mul = num1 * num2;

printf("%d*%d=%d\n",num1,num2,Mul);

break;

case '/':

Dev = num1 / num2;

printf("%d/%d=%d\n",num1,num2,Dev);

break;

}

printf("\n");

printf("若要繼續使用請按y,離開請按n\n");

scanf("%c",&input);

fflush(stdin);

}

system("pause");

return 0;

}

然後插入 for的 次方算式 而且還要能輸入^=執行次方程式

請問可以怎做呢~ 要能保持連續 +上執行+-*/

另外就是請求支援! 5/3如何跑出1.67呢~ 無法解決中

已更新項目:

power(x, y)的函數 要加入進去~for 但我不曉得怎做

2 個已更新項目:

power(x, y)的函數 要加入進去~for 但我不曉得怎做

3 個已更新項目:

要貼上FOR的運算式 ~幕次方函數 英文power(a.b)

a^b次方 = axaxaxa...老師的意思好像是 輸入一個特定例如 ^ 就會執行次方式

4 個已更新項目:

謝謝各位大大的幫助~ 我也會在自己嘗試看看

5 個已更新項目:

for(i=1;i<=b;i++)

{

p=p*a;

printf("%d 的 %d 次方 = %d \n",a,i,p);

}

這是宣告後~裡面的for 老師請我們融合進去變成+-*/以外的第五個 輸入^就會進入幕次方計算功能

power(a,b) << 幕次方的代表 ~請教大大 該如何

6 個已更新項目:

請問如何才能列印次方例如

5的1次方等於5

5的2次方等於25

5的3次方等餘5

就是輸入兩個數 例如輸入5與10 列引5的1~10次方數值

4 個解答

評分
  • 5 年前
    最佳解答

    Greetings,

    if you strictly want your result to be rounded to the 2nd decimal, use float instead of int as the data type for num1 and num2. Then change printf("%d * %d = %d\n", num1, num2, mul) to printf("%f * %f = %.2f\n", num1, num2, mul).

    About the power function... if you want to write the algorithm by yourself, the code below implemented the divide and conquer method of recursion.

    Add this line in your main function:

    powerFuction (num1, num2);

    and write a recursive function:

    float powerFunction (float num1, float num2) {

    //base case 1

    if (num 2 == 0) {

    return 1;

    }

    //base case 2

    else if (num2 == 1) {

    return num1;

    }

    //induction hypothesis

    else {

    //case when the index is an even number

    if (num2 % 2 == 0) {

    return powerFunction (num1 * num1, num2 / 2);

    }

    //case when the index is an odd number

    else {

    return powerFunction (num1 * num1, (num2 - 1) / 2) * num1;

    }

    }

    An easier way is to include a library called math.h. What you will do is to add:

    #include <math.h>

    at the beginning of your code, and call the function by

    pow (num1, num2);

    in your main function.

    Hope this helps :)

    2015-05-30 16:59:47 補充:

    You do not need a for loop if you use the pow(float, int) function in the math.h library.

    2015-05-30 17:15:12 補充:

    你好, 次方如果是用math.h裡面的pow函數, 是不需要用到for迴圈的 ^^

    除非你要自己寫一個演算法. 除了我上面寫的遞迴法, 你也可以硬解, 它的函數是這麼寫的:

    float powerFunction (float num1, float num2) {

    float temp;

    if (num1 == 0)

    return 1;

    else if (num2 == 1)

    return num1;

    else {

    for (n = num2; n>=1; n--) {

    num1 = num1 * temp;

    }

    return num1;

    }

    2015-05-30 17:24:05 補充:

    如果你還沒學過函數的話, 把

    case '^':

    if (num1 == 0) {

    printf("%f^%f=1,num1,num2");

    break;}

    else if (num2 == 1){

    printf("%f^%f=%f\n",num1,num2,num2);

    break;}

    else {

    float temp = num1;

    for (n = num2; n>=1; n--) {

    temp = num1 * temp;

    }

    printf("%f^%f=%f\n",num1,num2,temp);

    break;

    }

    插入main裡面也可以.

    2015-05-31 00:51:22 補充:

    士統你好,

    請仔細看我的code最後一段(補充那邊). 不好意思因為已經達到字數限制所以只好回覆在這裡了.

    其實跟你的code

    for(i=1;i<=b;i++)

    {

    p=p*a;

    printf("%d 的 %d 次方 = %d \n",a,i,p);

    }

    是差不多意義的(只是我用的是降次, 你用的是升次而已).

    我有點不理解你的最後問題; 你上面這段程序已經可以達到你要的效果了, 因為printf放在for裡面, 是應該會把計算過程顯示出來的.

    2015-05-31 07:27:50 補充:

    你們老師的意思應該是指把pow獨立出來做為一個函數吧?

    參考資料: I'm a CS graduate student.
  • 5 年前

    #include<stdio.h>

    #include<stdlib.h>

    #include<math.h>

    int main()

    {

    int num1,num2;

    char input='y', ch, sum, sub, Mul;

    float Dev;

    printf(" A L T I S 計 算 工 作 室 歡迎您 \n");

    printf(" \n");

    printf(".☆.歡 迎.☆.★.計算.★.☆ 的.★.世 界 ★. \n");

    printf(" \n");

    printf(" 請使用者輸入兩個整數便會相加相減相乘相除 \n");

    printf(" \n");

    printf("***** 四則運算 *****\n");

    while(input=='y'){

    printf("請輸入要執行的運算(+-*/):\n");

    scanf("%c",&ch);

    fflush(stdin);

    printf("請使用者輸入一個兩位數數字 1 : ");

    scanf("%d",&num1);

    fflush(stdin);

    printf("請使用者輸入一個兩位數數字 2: ");

    scanf("%d",&num2);

    fflush(stdin);

    switch(ch){

    case '+':

    sum = num1+num2;

    printf("%d+%d=%d\n",num1,num2,sum);

    break;

    case '-':

    sub = num1 - num2;

    printf("%d-%d=%d\n",num1,num2,sub);

    break;

    case '*':

    Mul = num1 * num2;

    printf("%d*%d=%d\n",num1,num2,Mul);

    break;

    case '/':

    Dev = float(num1) / num2;

    printf("%d/%d=%.2f\n",num1,num2,Dev);

    break;

    }

    printf("%.0f\n",pow(num1,num2));

    printf("\n");

    printf("若要繼續使用請按y,離開請按n\n");

    scanf("%c",&input);

    fflush(stdin);

    }

    system("pause");

    return 0;

    }

    參考資料: 信哥的愛
  • 5 年前

    上述是? 因為老師的確有提到要在for的程式加入power(a.b)但我還是聽不太懂

    2015-05-31 07:16:08 補充:

    了解~謝謝你!!因為我想半天還是想不透 ~老師請我們用for做 又要設定pow為函數

    2015-05-31 13:17:47 補充:

    好像是這樣耶! ㄊ說設立power為函數~ 但要能呼叫它

  • 卸貨
    Lv 5
    5 年前

    1. Use function "pow".

    2. Use type "float" instead of "int".

還有問題?馬上發問,尋求解答。