#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;
}