C primer plus 第六版 第八章 第八題 程式設計練習答案
/*
本程式應題目而建立。
題目要求: 編寫一個程式,顯示一個提供 加法、減法、乘法、除法的選單。
獲得使用者輸入選項後,提示使用者輸入兩個數字,然後執行使用者剛才選擇的功能。
該程式只接受選單提供的選項。 程式用 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;
}
相關文章
- C primer plus 第六版 第八章 第四題 程式設計練習答案程式設計
- C primer plus 第六版 第八章 第五題 程式設計練習答案程式設計
- C primer plus 第六版 第八章 第六題 程式設計練習答案程式設計
- C primer plus 第六版 第八章 第七題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第八題 程式設計練習答案程式設計
- C primer plus 第六版 第十章 第八題 程式設計練習答案程式設計
- C primer plus 第六版 第六章 第八題 程式設計練習答案程式設計
- C primer plus 第六版 第九章 第八題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第九題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第十題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第五題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第六題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第七題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第一題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第二題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第三題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第四題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第十一題題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第十三題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第十四題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第十五題 程式設計練習答案程式設計
- C primer plus 第六版 第十章 第六題 程式設計練習答案程式設計
- C primer plus 第六版 第十章 第七題 程式設計練習答案程式設計
- C primer plus 第六版 第十章 第九題 程式設計練習答案程式設計
- C primer plus 第六版 第十章 第十題 程式設計練習答案程式設計
- C primer plus 第六版 第十章 第二題 程式設計練習答案程式設計
- C primer plus 第六版 第十章 第一題 程式設計練習答案程式設計
- C primer plus 第六版 第十章 第三題 程式設計練習答案程式設計
- C primer plus 第六版 第十章 第四題 程式設計練習答案程式設計
- C primer plus 第六版 第十章 第五題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第十二題 程式設計練習答案程式設計
- C primer plus 第六版 第六章 第二題 程式設計練習答案程式設計
- C primer plus 第六版 第六章 第三題 程式設計練習答案程式設計
- C primer plus 第六版 第六章 第四題 程式設計練習答案程式設計
- C primer plus 第六版 第六章 第五題 程式設計練習答案程式設計
- C primer plus 第六版 第六章 第六題 程式設計練習答案程式設計
- C primer plus 第六版 第六章 第七題 程式設計練習答案程式設計
- C primer plus 第六版 第六章 第九題 程式設計練習答案程式設計