c语言实验题水仙花数5359,C语言中一个关于空格和回车键的处理问题

C语言中一个关于空格和回车键的处理问题0

自己编写了一个类似计算器的小程序,如下:

#include

char get_choice(void);

float get_num(void);

void get_add(void);

void get_subtract(void);

void get_multiply(void);

void get_divide(void);

int main(void)

{

char choice;

choice=get_choice();

while(choice!='E')

{

switch(choice)

{

case'A':

get_add();

break;

case'B':

get_subtract();

break;

case'C':

get_multiply();

break;

case'D':

get_divide();

}

choice=get_choice();

}

printf("谢谢使用,再见!\n");

return 0;

}

char get_choice(void)

{

char ch;

printf("请选择您要进行的操作:\n"

"A. 加 B. 减\n"

"C. 乘 D. 除\n"

"E. 退出\n");

ch=getchar();

while(getchar()!='\n')

continue;

while(ch'E')

{

if(ch=='\n'||ch==' ')

;

else

printf("请输入: A,B, C, D或E: ");

ch=getchar();

while(getchar()!='\n')

continue;

}

return ch;

}

float get_num(void)

{

float num;

while(scanf("%f",&num)!=1)

{

printf("请输入数字,如: 25, -1.68E8, 3等: ");

while(getchar()!='\n')

continue;

}

while(getchar()!='\n')

continue;

return num;

}

void get_add(void)

{

float first,second,result;

printf("请输入第一个数字: ");

first=get_num();

printf("请输入第二个数字: ");

second=get_num();

result=first+second;

printf("%f + %f = %f\n",first,second,result);

}

void get_subtract(void)

{

float first,second,result;

printf("请输入第一个数字: ");

first=get_num();

printf("请输入第二个数字: ");

second=get_num();

result=first-second;

printf("%f - %f = %f\n",first,second,result);

}

void get_multiply(void)

{

float first,second,result;

printf("请输入第一个数字: ");

first=get_num();

printf("请输入第二个数字: ");

second=get_num();

result=first*second;

printf("%f * %f = %f\n",first,second,result);

}

void get_divide(void)

{

float first,second,result;

printf("请输入第一个数字: ");

first=get_num();

printf("请输入第二个数字: ");

second=get_num();

while(second==0)

{

printf("错误!请输入一个非零数:");

second=get_num();

}

result=first/second;

printf("%f / %f = %f\n",first,second,result);

}

可是在运行时遇到了一个小问题,当让选择A,B,C,D,E的时候,如果先输入一个空格或回车键,再输入选项时,没有反应,只有再一次输入时才能正常运行。可能是get_choice函数出的问题,可是怎样才能使这个函数自动忽略空格或回车键呢?我用了if...else对其进行处理也不顶用!

希望高手解释一下原因并做做修改,不胜感激!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值