C primer plus 第六版 第八章 第八題 程式設計練習答案

Aeron-A發表於2018-05-31

Github 地址:這裡這裡φ(>ω<*)

/*
    本程式應題目而建立。
  題目要求: 編寫一個程式,顯示一個提供 加法、減法、乘法、除法的選單。 
                獲得使用者輸入選項後,提示使用者輸入兩個數字,然後執行使用者剛才選擇的功能。
    該程式只接受選單提供的選項。  程式用 float 型別的變數儲存使用者輸入數字。
   如果使用者輸入失敗,則允許再次輸入。如果使用者輸入 0 作為第二個數字。則提示使用者重新輸入一個正確的值。
*/


#include<stdio.h>


#define true 1


char Menu( void );     // 選單 部分。
void Count( char c );     // 功能服務 部分。


int main( void )
{
char n = '\n';      // 換行符。
char get_Menu = 0;  // 接受 選單部分 return 的 choices 。


get_Menu = Menu();


while ( get_Menu != 'q' )
{
Count( get_Menu );
putchar(n);
putchar(n);

get_Menu = Menu();
}


if ( Menu() == 'q' )
{
printf("The program is close now !\n");
}
else
{
// 空語句。
;
}


printf("Bye !\n");


return 0;
 }


char Menu( void )
{
// 選單部分。


int i = 0;         // 迴圈用。
char n = '\n';        // 換行符。
char choices = 0;  // 接受使用者選項

while ( i<40 )
{
printf("*");
i++;
}
putchar(n);


printf("---------------Menu---------------\n");
printf(" a. add                b. subtract\n");
printf(" c. multiply           d. divide  \n");
printf(" q. quit");

putchar(n);
putchar(n);


for ( i = 0; i < 40; i++ )
{
printf("*");
}


putchar(n);
putchar(n);


printf("Enter the operation of your choices :");
choices = getchar();


return choices;
}


void Count( char c )
{
char input = c;       // 使用者輸入的 choices。
char n = '\n';        // 換行符。


float value_1 = 0;    // 接受使用者輸入的第一個值。
float value_2 = 0;    // 接受使用者輸入的第二個值。  
float value = 0;      // 儲存計算結果並輸出。


switch ( input ) 
{
case 'a':  // 接受輸入使用者輸入。  加法。
printf("The part of add is running now !  \n");

printf("Please input the first value  :");

while ( true )
{
// 這個迴圈負責第一個 value 的輸入。

if ( scanf_s("%f",&value_1) == 1)
{
// 正確輸入,即退出迴圈。
putchar(n);
break;
}
else
{
// 輸入錯誤,則迭代,繼續輸入。
putchar(n);
printf("The value is wroing ! Please input again  :");
continue;
}
}
       
printf("Please input  the second value  :");

while ( true )
{
//這個迴圈負責第二個 value 的輸入。


if ( scanf_s("%f",&value_2) == 1)
{
// 正確輸入,即退出迴圈。
putchar(n);
break;
}
else
{
// 輸入錯誤,則迭代,繼續輸入。
putchar(n);
printf("The value is wroing ! Please input again  :");
continue;
}
}


// 計算並輸出結果。
value = value_1 + value_2;
printf(" %f + %f = %f  \n", value_1, value_2, value);
break;


case 'b':  // 接受輸入使用者輸入。  減法。
printf("The part of subtract is running now !  \n");


printf("Please input the first value  :");


while (true)
{
// 這個迴圈負責第一個 value 的輸入。


if (scanf_s("%f", &value_1) == 1)
{
// 正確輸入,即退出迴圈。
putchar(n);
break;
}
else
{
// 輸入錯誤,則迭代,繼續輸入。
putchar(n);
printf("The value is wroing ! Please input again  :");
continue;
}
}


printf("Please input  the second value  :");


while (true)
{
//這個迴圈負責第二個 value 的輸入。


if (scanf_s("%f", &value_2) == 1)
{
// 正確輸入,即退出迴圈。
putchar(n);
break;
}
else
{
// 輸入錯誤,則迭代,繼續輸入。
putchar(n);
printf("The value is wroing ! Please input again  :");
continue;
}
}


// 計算並輸出結果。
value = value_1 - value_2;
printf(" %f - %f = %f  \n", value_1, value_2, value);
break;


case 'c':  // 接受輸入使用者輸入。  乘法。
printf("The part of multiply is running now !  \n");


printf("Please input the first value  :");


while (true)
{
// 這個迴圈負責第一個 value 的輸入。


if (scanf_s("%f", &value_1) == 1)
{
// 正確輸入,即退出迴圈。
putchar(n);
break;
}
else
{
// 輸入錯誤,則迭代,繼續輸入。
putchar(n);
printf("The value is wroing ! Please input again  :");
continue;
}
}


printf("Please input  the second value  :");


while (true)
{
//這個迴圈負責第二個 value 的輸入。


if (scanf_s("%f", &value_2) == 1)
{
// 正確輸入,即退出迴圈。
putchar(n);
break;
}
else
{
// 輸入錯誤,則迭代,繼續輸入。
putchar(n);
printf("The value is wroing ! Please input again :");
continue;
}
}


// 計算並輸出結果。
value = value_1 * value_2;
printf(" %f * %f = %f  \n", value_1, value_2, value);
break;


case 'd':  // 接受輸入使用者輸入。  除法。
printf("The part of add is running now !  \n");


printf("Please input the first value  :");


while (true)
{
// 這個迴圈負責第一個 value 的輸入。


if (scanf_s("%f", &value_1) == 1)
{
// 正確輸入,即退出迴圈。
putchar(n);
break;
}
else
{
// 輸入錯誤,則迭代,繼續輸入。
putchar(n);
printf("The value is wroing ! Please input again  :");
continue;
}
}


printf("Please input  the second value ( :");


while (true)
{
//這個迴圈負責第二個 value 的輸入。


if (scanf_s("%f", &value_2) == 1)
{
// 正確輸入,且不為0的情況下,退出迴圈。 否則重新輸入。
putchar(n);

if ( value == 0 )
{
printf("The second value can't be '0'. Please input again :");
continue;
}
else
{
// 空語句。
;
}


break;
}
else
{
// 輸入錯誤,則迭代,繼續輸入。
putchar(n);
printf("The value is wroing ! Please input again  :");
continue;
}
}


// 計算並輸出結果。
value = value_1 / value_2;
printf(" %f // %f = %f  \n", value_1, value_2, value);
break;


default:  // 莫名情況。退出程式。
printf("WARNING ! The program will close now !\n");
break;
}


// Program is Over !....

return 0;
}

相關文章