C primer plus 编程练习第8章第8题

默认分类 未结 1 492
0东京泰迪熊0
0东京泰迪熊0 2023-03-17 08:48
相关标签:
1条回答
  • 2023-03-17 09:02

    #include int main(void){ double f_num, s_num; char choice,cTemp; char n[20]; 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( scanf("%c", &choice) == 1 && choice != 'q') { switch(choice) { case 'a': printf("Enter first number: "); while(scanf("%lf",&f_num)!=1) { while((cTemp=getchar())!='\n')putchar(cTemp); printf(" is not an number."); printf("Please enter a number ,such as 2.5, -1.78E8, or 3:"); } printf("Enter second number: "); while(scanf("%lf",&s_num)!=1) { while((cTemp=getchar())!='\n')putchar(cTemp); printf(" is not an number."); printf("\nPlease enter a number ,such as 2.5, -1.78E8, or 3:"); } printf("%g + %g = %g", f_num, s_num, f_num + s_num); break; case 's': printf("Enter first number: "); while(scanf("%lf",&f_num)!=1) { while((cTemp=getchar())!='\n')putchar(cTemp); printf(" is not an number."); printf("Please enter a number ,such as 2.5, -1.78E8, or 3:"); } printf("Enter second number: "); while(scanf("%lf",&s_num)!=1) { while((cTemp=getchar())!='\n')putchar(cTemp); printf(" is not an number."); printf("Please enter a number ,such as 2.5, -1.78E8, or 3:"); } printf("%g - %g = %g", f_num, s_num , f_num - s_num); break; case 'm': printf("Enter first number: "); while(scanf("%lf",&f_num)!=1) { while((cTemp=getchar())!='\n')putchar(cTemp); printf(" is not an number."); printf("Please enter a number ,such as 2.5, -1.78E8, or 3:"); } printf("Enter second number: "); while(scanf("%lf",&s_num)!=1) { while((cTemp=getchar())!='\n')putchar(cTemp); printf(" is not an number."); printf("Please enter a number ,such as 2.5, -1.78E8, or 3:"); } printf("%g * %g = %g", f_num, s_num , f_num * s_num); break; case '\n': continue; // importance case 'd': printf("Enter first number: "); while(scanf("%lf",&f_num)!=1) { while((cTemp=getchar())!='\n')putchar(cTemp); printf(" is not an number."); printf("Please enter a number ,such as 2.5, -1.78E8, or 3:"); } printf("Enter second number: "); while(scanf("%lf",&s_num)!=1) { while((cTemp=getchar())!='\n')putchar(cTemp); printf(" is not an number."); printf("Please enter a number ,such as 2.5, -1.78E8, or 3:"); } while(s_num ==0) { printf("Enter a number other than 0:"); scanf("%lf", &s_num); } printf("%g / %g = %g", f_num, s_num , f_num / s_num); break; default: printf("please input a , s , m , d or q to quit"); } printf("\nEnter the operation of your choice:\n"); printf("a. add s. subtract\n"); printf("m. multiply d. divide\n"); printf("q. quit\n"); } return 0;}我修改过后测试通过,主要是你在输入确认是数字还是英文的时候处理的不好。还有你可以把第一个数和第二个数定义为数组,这样用一个循环输入会使代码减少很多,不然看起很重复。

    0 讨论(0)
提交回复