关于C语言的错误,用VS2015编写的

xu_chenyi 2016-08-06 04:54:56
//C language program
#include<stdio.h>
#include<stdlib.h>

int main(void)
{
double number1 = 0.0;
double number2 = 0.0;
int operation = 0;
double result = 0.0;


printf("\n请在里输入要计算数字\n");
scanf("%lf %c %lf\n", &number1, &operation, number2);

switch (operation)
{
case 1:
result = number1 + number2;
printf("= %f\n", &result);
break;

case 2:
result = number1 - number2;
printf("= %f\n", &result);
break;

case 3:
result = number1 * number2;
printf("= %f\n", &result);
break;

case 4:
if (number2 == 0)
printf("\n\n数字输入错误,除数不能为0!\n");
else
result = number1 / number2;
printf("= %f\n", &result);
break;



default:
printf("不正确的操作法!!!");
break;

}

system("pause");
return 0;

}

按F5键后出现以下错误提示
Program: D:\Documents\Visual Studio 2015\Projects\TEST\Debug\TEST.exe
File: minkernel\crts\ucrt\inc\corecrt_internal_stdio_input.h
Line: 1581

Expression: result_pointer != nullptr

For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.

(Press Retry to debug the application)
...全文
578 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xu_chenyi 2016-08-07
  • 打赏
  • 举报
回复
按照你的指点问题已经解决,我怎么样把分给你? 我刚自学C语言没几天,有一点不太明白: 为什么 这一句”scanf("%lf %d %lf", &number1, &operation, &number2);“要加&, 而这里”result = number1 + number2; printf("= %f\n", result);“却不能加呢?
小灸舞 版主 2016-08-07
  • 打赏
  • 举报
回复
引用 3楼我是你的主体 的回复:
按照你的指点问题已经解决,我怎么样把分给你? 我刚自学C语言没几天,有一点不太明白: 为什么 这一句”scanf("%lf %d %lf", &number1, &operation, &number2);“要加&, 而这里”result = number1 + number2; printf("= %f\n", result);“却不能加呢?
点结帖按钮。 因为scanf是这样规定的,你可以理解成要将输入的数据写入一个内存地址,由于是地址,所以要加&
小灸舞 版主 2016-08-06
  • 打赏
  • 举报
回复
1.scanf("%lf %c %lf\n", &number1, &operation, number2);这句不对 number2前面少了&,%c应该是%d吧,'\n'也要去掉 2.printf("= %f\n", &result);也不对,result前面多了&

#include<stdio.h>
#include<stdlib.h>

int main(void)
{
	double number1 = 0.0;
	double number2 = 0.0;
	int operation = 0;
	double result = 0.0;


	printf("\n请在里输入要计算数字\n");
	scanf("%lf %d %lf", &number1, &operation, &number2);

	switch (operation)
	{
	case 1:
		result = number1 + number2;
		printf("= %f\n", result);
		break;

	case 2:
		result = number1 - number2;
		printf("= %f\n", result);
		break;

	case 3:
		result = number1 * number2;
		printf("= %f\n", result);
		break;

	case 4:
		if (number2 == 0)
			printf("\n\n数字输入错误,除数不能为0!\n");
		else
			result = number1 / number2;
		printf("= %f\n", result);
		break;



	default:
		printf("不正确的操作法!!!");
		break;

	}

	system("pause");
	return 0;

}
dustpg 2016-08-06
  • 打赏
  • 举报
回复
vs2015的话,应该有一大堆警告信息吧, 反正就是关于类型不安全的

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧