VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 637|回复: 2

[讨论] 关于加减乘除的C程序求助

[复制链接]
68_avatar_middle
最佳答案
0 
在线会员 发表于 2019-5-19 23:03:27 | 显示全部楼层 |阅读模式
这个程序首先要求用户选择加/减/乘/除,如图片所示,输入d后,仍然显示要求输入a或s或m或d,相关的是char get_choice()函数,请看下问题出在哪里?

#include <stdio.h>
char get_choice(); /*读取加减乘除选项*/
char get_first(); /*只读取第一个字符*/
float get_num(); /*读取要计算的数字*/

int main()
{
int choice;
float num_1,num_2;

while((choice=get_choice()) != 'q') /*期望输入字符a,s,m,d*/
{
printf("Enter first number:\n");
num_1 = get_num(); /*输入第一个数字*/
printf("Enter second number:\n");
num_2 = get_num(); /*输入第二个数字*/
switch(choice)
{
case 'a': printf("%.2f + %.2f = %.2f.\n",num_1+num_2);/*如果输入字符a,做加法*/
break;
case 's': printf("%.2f - %.2f = %.2f.\n",num_1-num_2);/*如果输入字符s,做减法*/
break;
case 'm': printf("%.2f * %.2f = %.2f.\n",num_1*num_2);/*如果输入字符m,做乘法*/
break;
case 'd': if(num_2 == 0) /*做除法,如果分母等于0,要求重新输入*/
{
printf("Please enter a number other than 0:");
while((num_2 = get_num()) == 0) /*一直输入,直到分母不等于0*/
continue;
printf("%.2f / %.2f = %.2f.\n",num_1/num_2);
    break;
}
else
printf("%.2f / %.2f = %.2f.\n",num_1/num_2);
break;
  default: printf("Error!\n");
  break;
}
printf("Bye!.\n");
}

}

char get_choice()
{
int ch;

printf("Enter the operation of your choice:\n");
printf("a. add s. subtract\n");
printf("m. multiply d. divide\n");
printf("q. quit\n");
ch = get_first();
while((ch != 'a' || ch != 's' || ch != 'm' || ch != 'd') && ch != 'q') /*如果输入的字符不等于a或s或m或d,并且不是q,那么要求重新输入*/
{
printf("Please respond with a,s,m,d or q.\n");
ch = get_first();
}
return ch;
}

char get_first()
{
int ch;

ch = getchar();
while(getchar() != '\n')  
continue; /*只读取第一个字符,跳过后续字符包括回车行*/
return ch;
}

float get_num()
{
float num;
char ch;

while((scanf("%f",&num)) != 1) /*如果输入的不是数字*/
{
while((ch=getchar()) != '\n')
putchar(ch);
printf(" is not number.\n");
printf("Please input a number:\n");
}
return num;
}
捕获.PNG




上一篇:c++《水果忍者》完整游戏源码-学习必备
下一篇:c++怎么运用java代码?
75_avatar_middle
最佳答案
0 
在线会员 发表于 2019-5-20 09:47:59 | 显示全部楼层
while((ch != 'a' || ch != 's' || ch != 'm' || ch != 'd') && ch != 'q') /*如果输入的字符不等于a或s或m或d,并且不是q,那么要求重新输入*/ 改为
while (ch != 'a' && ch != 's' && ch != 'm' && ch != 'd' && ch != 'q')
关于加减乘除的C程序求助
68_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2019-5-20 20:15:26 | 显示全部楼层
xx_player 发表于 2019-5-20 09:47
while((ch != 'a' || ch != 's' || ch != 'm' || ch != 'd') && ch != 'q') /*如果输入的字符不等于a或s或m ...

感谢你的帮助,确实这里错了
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-9-25 05:06

Powered by CcTry.CoM

© 2009-2020 cctry.com

快速回复 返回顶部 返回列表