#include "stdio.h"
float requstNumber(void);
float add(float x,float y);
float sub(float x,float y);
float mul(float x,float y);
void divide(float x,float y);
int main(void){
char ch;
float n1;
float n2;
printf("Enter the operation of your choice:\n");
printf("a. add s. subtract\n");
printf("m. multiply d. divide \n");
printf("q. quit\n");
while ((ch = getchar()) != 'q') {
while (getchar()!= '\n') {
continue;
}
switch (ch) {
case 'a':
n1 = requstNumber();
n2 = requstNumber();
printf("%.2f + %.2f = %.2f\n",n1,n2,add(n1, n2));
break;
case 's':
n1 = requstNumber();
n2 = requstNumber();
printf("%.2f - %.2f = %.2f\n",n1,n2,sub(n1, n2));
break;
case 'm':
n1 = requstNumber();
n2 = requstNumber();
printf("%.2f * %.2f = %.2f\n",n1,n2,mul(n1,n2));
break;
case 'd':
n1 = requstNumber();
n2 = requstNumber();
divide(n1, n2);
break;
case 'q':
printf("Bye.\n");
default:
printf("Please enter a correct operation!\n");
break;
}
printf("Enter the operation of your choice:\n");
printf("a. add s. subtract\n");
printf("m. multiply d. divide \n");
printf("q. quit\n");
}
return 0;
}
float requstNumber(){
float num1;
char c;
printf("Enter the number:");
while (scanf("%f",&num1) != 1) {
while ((c = getchar()) != '\n') {
continue;
}
printf("please enter again.\n");
}
return num1;
}
float add(float x,float y){
return x+y;
}
float sub(float x,float y){
return x-y;
}
float mul(float x,float y){
return x*y;
}
void divide(float x,float y){
if (y == 0) {
printf("Enter a number other than 0:");
scanf("%f",&y);
}
printf("%.2f / %.2f = %.2f\n",x,y,x/y);
}
代码我贴在这里了,题目没啥难的,就是把这章学的字符和数字混合输入应用一下,但是我的程序在运行完某个分支后,输入一次q无法退出,必须输入两次才能退出。
不知道为什么,单步调试明明又是正确的。
晕,写代码果然是一种玄学。