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

(一)改错题

计算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:
错误原因:第10行语句后面缺少“;”
改正方法:将“;”补到第10行语句后面
错误信息2:
错误原因:if后面加了“;”
改正方法:将if后面的分号去掉
错误信息3:
错误原因:else后面不应该加判断语句
改正方法:将else后面的判断语句删除
错误信息4:
错误原因:由编程结果可知第16行printf语句中双引号之后没有加“,”
改正方法:将printf语句中双引号之后都加上“,”,并且x,y两个变量用“,”隔开
错误信息5:
错误原因:scanf语句多加了“=”,并且x前面没有加地址符
改正方法:去掉scanf中的“=”,并且在x之前加上“&”
错误信息6:
错误原因:%f与%lf混肴了
改正方法:将程序中的所有的“%f”改为“%lf”
错误信息7:
错误原因:第8行if语句中‘=’与“”混肴了
改正方法:将“=”改为“

错误信息8:
错误原因:由输入输出样例可知不应该分行
改正方法:将第6行printf中的“\n”去掉
错误信息9:
错误原因:由输入输出样例可知应该保留一位小数
改正方法:将printf中的“%.2ld”改为“%.1ld”
正确语句:

(二)学习总结
1.if(a)if(b) x=x+1;else y=y+1; 的确切含义是什么?这个else应该和哪个if配对?如何明确表达这种配对方法?将该段代码按照规范化的格式进行书写。
(1)如果a成立,并且b也成立,则x=x+1;否则y=y+1;
(2)else与第二个if配对;
(3)应该用“{ }”来明确分配的配对方法
(4)
2.C语言的表达式 (-10< x <10)能够表达x在区间(-10,10)吗?为什么?如果不能,正确的表达式应该怎么写?
不能,在c语言里(-10< x <10)将会从左开始执行,无论x值是多少,执行结果也只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;
}
结果:
原因:C语言中输入数据时,如果遇到非法字符,则认为输入结束,而b得结果是个1。
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;
}
结果:
原因: a,b均为整型,scanf中的输入符号也为整型的,所以123 45 时,返回值为2;
结果:
原因: 而当输入值变为123a是出现了非法字符,则认为输入结束,输出的返回值变为1.
修改程序(1),当输入非法数据时,输出“Input error!".
样例如下:
结果:
4.对其他你认为需要进行总结的内容进行总结。
(1)float,单精度浮点型,对应%f。double,双精度浮点型,对应%lf。
(2)%c:是存取或者输出一个字符。%d:是存取或者输出一个整数。
(3)在输入数据时,遇到空格,回车,跳格键,指定的宽度或是非法输入是,表示该数据结束。
(4)if else匹配规则是else匹配距离最近未被匹配的if。
(三)实验总结

  1. 计算分段函数[2]
    (1)题目
    本题目要求计算下列分段函数f(x)的值:

    (2)流程图

    (3)源代码

    (4)测试数据及运行结果


    (5)实验分析
    问题1:无
  2. 算术入门之加减乘除(10 分)

(1)题目
对于输入的两个整数,按照要求输出其和差积商。
(2)流程图

(3)源代码

(4)测试数据及运行结果

(5)实验分析
问题1:

原因:缺少“double”
解决办法:在f2等号后面加上"double"
3.输出三角形面积和周长(10 分)
(1)题目
本题要求编写程序,根据输入的三角形的三条边a、b、c,计算并输出面积和周长。注意:在一个三角形中, 任意两边之和大于第三边。三角形面积计算公式:area=√s(s−a)(s−b)(s−c) ,其中s=(a+b+c)/2。
(2)流程图

(3)源代码

(4)测试数据及运行结果

(5)实验分析

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

(3)源代码

(4)测试数据及运行结果


(5)实验分析
问题1:

原因:doube应该用%ld表示
解决办法:将%f改为%lf
(四)PTA提交列表

posted on 2017-10-28 14:47  蕊薏  阅读(639)  评论(0编辑  收藏  举报

导航