C语言程序设计第三次作业

(一).改错题
1.计算f(x)的值:输入实数x,计算并输出下列分段函数f(x)的值,输出时保留1位小数。

输入输出样例1:
  Enterr x: 10.0
  f(10.0) = 0.1

输入输出样例2:
  Enter x: 234
  f(234.0) = 234.0

源程序(有错误的程序)

  #include <stdio.h> 
 int main(void)
 { 
    double x,y;
    printf("Enter x: \n"); 
    scanf("=%f", x);
    if(x = 10);
    { 
        y = 1 / x
    }
    else (x != 10)
    {
       y = x;
    }
    printf("f(%.2f) = %.lf\n" x y); 
    return 0; 
 }

编译源程序

错误信息1:

错误原因:%前面有=,输入的x前面没有加&
改正方法:改成scanf("Enter x:%f",&x);
错误信息2:

错误原因:if后面加了“;”
改正方法:将if后面的“;”去掉
错误信息3:

错误原因:“y = 1/x”后面没加分号
改正方法:将分号加上
错误信息4:

错误原因:else后面加上了条件
改正方法:将else后面的条件去掉
错误信息5:

错误原因:%.lf错误
改正方法:将%.lf改成%.1f
错误信息6:
错误原因:在分号和x之间以及x和y之间都没有加逗号
改正方法:在分号和x之间以及x和y之间都加上逗号
错误信息7:

错误原因:if语句中只有一个等号
改正方法:再加上一个等号
错误信息8:同上图
错误原因:printf语句里面加上了/n
改正方法:去掉/n
错误信息9:同上图
错误原因:保留了2位小数
改正方法:将%.2f改为%.1f

(二).实验总结
1.if(a)if(b) x=x+1;else y=y+1; 的确切含义是什么?这个else应该和哪个if配对?如何明确表达这种配对方法?将该段代码按照规范化的格式进行书写。
确切含义:如果满足a和b的情况下,就执行x=x=1,否则就执行y=y+1。这个else应该和if(b)的if配对。为明确表达这种配对方法,应该在每个if和else后加上“{}”
代码:

2..C语言的表达式 (-10< x <10)能够表达x在区间(-10,10)吗?为什么?如果不能,正确的表达式应该怎么写?
不能,因为在C语言中,系统是从左到右进行判断的0,输出的只能是数字0或1,不能表示区间。正确的表达是应该是:x>-10&&x<10

3.C语言中输入数据时,如果遇到非法字符,则认为输入结束。运行程序(1),输入123a,看看输出结果是什么?你能解释是为什么吗?,
程序(1)

include <stdio.h>

int main()
{
int a, b;
scanf("%d %d", &a, &b);
printf("a = %d, b = %d\n", a, b);
return 0;
}
运行程序(1):

因为123a中的a是非法字符,所以输入结束。

scanf()函数的返回值是成功读入数据的个数,如果没有读取任何数据,则返回0。运行程序(2),分别输入123 45和123a,看看输出结果是什么?为什么?
程序(2)

include <stdio.h>

int main()
{
int a, b,n;
n = scanf("%d %d", &a, &b);
printf("n = %d\n", n);
return 0;
}
输入123 45:

输入123a:

因为函数的返回值是成功读入数据的个数,因为123 45是整型数据,所以输出n=2,而123a中123是整形数据,a是字符数据,所以输出n=1。

修改程序(1),当输入非法数据时,输出“Input error!".

4.对其他你认为需要进行总结的内容进行总结。
(1).每条switch语句结束的时候都要有break
(2).注意if语句的使用以及else和else if的区别
(3).题目中若要使用数学公式,要用“#include <math.h>”
(三).实验总结
(1) 计算分段函数
流程图:

源代码:

测试数据及运行结果:

实验分析:
错误信息:运行结果错误
错误原因:没有使用数学函数
改正方法:在开始加上“#include <math.h>”
(2). 算术入门之加减乘除
对于输入的两个整数,按照要求输出其和差积商。
流程图:

源代码:

       测试数据及运行结果:


实验分析:
暂时没有问题
(3).输出三角形面积和周长
本题要求编写程序,根据输入的三角形的三条边a、b、c,计算并输出面积和周长。注意:在一个三角形中, 任意两边之和大于第三边。三角形面积计算公式:area=√
​s(s−a)(s−b)(s−c)

​​ ,其中s=(a+b+c)/2。
流程图:

源代码:

测试数据及运行结果:


实验分析:
注意“三角形两边之和大于第三边”是“且”的关系,另外要注意小数点的问题
(4).出租车计价

本题要求根据某城市普通出租车收费标准编写程序进行车费计算。具体标准如下:
起步里程为3公里,起步费10元;
超起步里程后10公里内,每公里2元;
超过10公里以上的部分加收50%的回空补贴费,即每公里3元;
营运过程中,因路阻及乘客要求临时停车的,按每5分钟2元计收(不足5分钟则不收费)。
流程图:

源代码:

测试数据及运行结果:


实验分析:
错误信息:运行结果错误
错误原因:没有使用“double”
改正方法:使用“double”定义变量
PTA提交列表:
选择结构(一)

posted on 2017-10-28 22:09  田彩  阅读(419)  评论(0编辑  收藏  举报

导航