#include <stdio.h> int main(void) { float number_1=0,number_2=0; int doperation; //输入界面 printf("请先输入第一个数字,然后再输入第二个数字,最后输入运算符\n"); printf("请先输入第一个数字:\n",number_1); scanf("第一个数字:%d\n",&number_1); printf("请再输入第二个数字:\n",number_2); scanf("第二个数字:%d\n",&number_2); printf("请输入运算符:\n",doperation); scanf("输入运算符:%c\n",doperation); //逻辑判断区域 switch (doperation) { case "+": printf("结果为:%f",number_1+number_2); break; case "-": printf("结果为:%f",number_1-number_2); break; case "*": printf("结果为:%f",number_1*number_2); break; case "/": printf("结果为:%f",number_1/number_2); break; default: printf("输出错误"); } getchar(); return 0; }
以上是代码,运行后输入第一个数字就跳出了下面的截图,问一下问题出在哪里?
解决方案
10
已经说得很清除了,doperation没有初始化。
根源是这句:
printf(“请输入运算符:\n”,doperation);
看样式是笔误写错了。
其他的问题:
scanf不能用%d格式串来输入float类型数据
scanf(“%c”之前要清理输入缓冲区,否则会获取上次输入的回车符。
本人给你改了下,vs2008调试通过,有问题给本人留言:
float number_1=0,number_2=0;
char doperation = “\0”;
//输入界面
printf(“请先输入第一个数字,然后再输入第二个数字,最后输入运算符\n”);
printf(“请先输入第一个数字:\n”,number_1);
scanf(“%f”,&number_1);
printf(“请再输入第二个数字:\n”,number_2);
scanf(“%f”,&number_2);
getchar();
printf(“请输入运算符:\n”);
scanf(“%c”,&doperation);
//逻辑判断区域
switch (doperation)
{
case “+”:
printf(“结果为:%f”,number_1+number_2);
break;
case “-“:
printf(“结果为:%f”,number_1-number_2);
break;
case “*”:
printf(“结果为:%f”,number_1*number_2);
break;
case “/”:
printf(“结果为:%f”,number_1/number_2);
break;
default:
printf(“输出错误”);
}
getchar();
return 0;
根源是这句:
printf(“请输入运算符:\n”,doperation);
看样式是笔误写错了。
其他的问题:
scanf不能用%d格式串来输入float类型数据
scanf(“%c”之前要清理输入缓冲区,否则会获取上次输入的回车符。
本人给你改了下,vs2008调试通过,有问题给本人留言:
float number_1=0,number_2=0;
char doperation = “\0”;
//输入界面
printf(“请先输入第一个数字,然后再输入第二个数字,最后输入运算符\n”);
printf(“请先输入第一个数字:\n”,number_1);
scanf(“%f”,&number_1);
printf(“请再输入第二个数字:\n”,number_2);
scanf(“%f”,&number_2);
getchar();
printf(“请输入运算符:\n”);
scanf(“%c”,&doperation);
//逻辑判断区域
switch (doperation)
{
case “+”:
printf(“结果为:%f”,number_1+number_2);
break;
case “-“:
printf(“结果为:%f”,number_1-number_2);
break;
case “*”:
printf(“结果为:%f”,number_1*number_2);
break;
case “/”:
printf(“结果为:%f”,number_1/number_2);
break;
default:
printf(“输出错误”);
}
getchar();
return 0;
5
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止。
20
#include <stdio.h> int main(void) { float number_1=0,number_2=0; char doperation; //输入界面 printf("请先输入第一个数字,然后再输入第二个数字,最后输入运算符\n"); printf("请先输入第一个数字:\n"); scanf("%f",&number_1); printf("请再输入第二个数字:\n"); scanf("%f",&number_2); printf("请输入运算符:\n"); getchar(); scanf("%c",&doperation); //逻辑判断区域 switch (doperation) { case "+": printf("结果为:%f",number_1+number_2); break; case "-": printf("结果为:%f",number_1-number_2); break; case "*": printf("结果为:%f",number_1*number_2); break; case "/": printf("结果为:%f",number_1/number_2); break; default: printf("输出错误"); } getchar(); return 0; }