请修正程序中的错误,并运行结果:输入4之后,结果是什么?
程序如下:
\*该文件完成后以st_b2.c的文件名保存在考生文件夹下*\
#include
main()
{
float y;
int m;
printf(“请输入0~5之间的数:”);
scanf(“%f”,&x);
m=floor(x);
switch(m)
{
case 0:y=0;break;
case 1:y=
case 2:y=2*cos(x)-1;break;
case 3:y=
case 4:y=log10(x-2*x);break;
default: printf(“数据输入错误!\n”);
}
printf(“y=%d\n”,y);
}
一、源代码的错误
(1)main() //没有返回值类型
(2)float y; //变量y没有初值
(3)scanf(“%f”,&x); //变量x没有定义,应为double x
(4)scanf(“%f”,&x); //变量x必须为double类型,应为%lf
(5)m=floor(x) ; //缺少#include头文件
(6)case 1:y= //语法错误,代码不完整
(7)case 2:y=2*cos(x)-1;break; //公式不匹配错误,代码编写错误
(8)case 3:y= //语法错误,代码不完整
(9)case 4:y=log10(x-2*x);break; //公式不正确,log10和log是不同的
(10)printf(“y=%d\n”,y); //输入数据类型错误
(11)闪退问题 //使用#include和system("pause");
二、完整代码
#include "stdafx.h"
#include
#include
#include
void main()
{
float y=-1;
int m;
double x; //floor(x)中实参必须为double类型
printf("请输入0~5之间的数:");
scanf("%lf",&x);
m=floor(x); //floor(x)返回不大于x的最大整数值(返回值为浮点型)
switch(m)
{
case 0:y=0;break;
case 1:y=3*x+5;break;
case 2:y=2*sin(x-1);break;
case 3:y=log(1+pow(x,2));break; // ln(x) 在C中是log(x)
case 4:y=log(pow(x,2)-2*x);break; //log10()与log()不同
default: printf("数据输入错误!\n");
}
if(y!=-1)
{
printf("y=%lf\n",y);
}
system("pause");
}
三、测试用例
序号 输入情况 输入数据 输出
(1) 输入非数字字符 abc测试 数据输入错误!
(2) 输入边界值 -1 -1 数据输入错误!
(3) 输入边界值 0 0 y=0.000000
(4) 输入边界值 5 5 数据输入错误!
(5) 输入边界值4.5 4.5 y=2.420368
(6) 输入1-5之间的值 3.2 2 y=2.430838
(7) 题目要求测试数据4 4 y=2.079442
四、运行结果
1输入非数字字符
2输入边界值-1
3输入边界值0
4输入边界值5
5.输入边界值4.5
6.输入1-5之间的值3.22
7.题目要求测试数据4