博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c语言的第三次作业
阅读量:6195 次
发布时间:2019-06-21

本文共 3325 字,大约阅读时间需要 11 分钟。

(一)改错题

计算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 
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)错误信息:

1242778-20171026143959023-878321953.png

错误原因:在第9行结束时,少些了 ”;“。

改正方法:在第9行最后加英文分号。

(2)错误信息:

1242778-20171026144236945-95581068.png

错误原因:else后不能直接加判断条件。

改正方法:在else后加if。

(3)错误信息:

1242778-20171026144628555-893429633.png

错误原因:在输入时没有加”&“。

改正方法:在输入中x前加&。

(4)错误信息:

1242778-20171026144854242-2143292295.png

错误原因:if判断语句后不能加分号。

改正方法:把if判断语句后的分号删除。

(5) 错误信息:

1242778-20171026145502383-1038235557.png

错误原因:输出语句中,分号后应该加逗号,x y之间也应用逗号分开,不能使用空格。

改正方法:在输出语句中分号后加逗号,x y之间也加逗号。

(6)错误信息

1242778-20171026155412664-607357803.png

错误原因:在输入时应为 “%lf”.。

改正方法:在输入那 f 前加 l。

(7)错误信息:运行的结果不对。

错误原因:
1242778-20171026155801242-1099257116.png
1242778-20171026160036961-543389057.png

“=”一个等号表示赋值;“==”两个等号才是等于。

改正方法:在if判断那x后再加一个等号。

(8)错误信息:

1242778-20171026160543023-1478532761.png

1242778-20171026160551367-949633332.png

错误原因:在输入的时候没有换行。
改正方法:把printf中的“\n"去掉。

(9)错误信息:

1242778-20171026161523398-872957323.png

错误原因:scanf输入时没有等号。

改正方法:把scanf输入的等号去掉。

(10)错误信息

1242778-20171026161757976-1819296412.png

错误原因:输出是都是保留一位小数,f括号里保留了两位小数,结果输出错误。最后输出时不能用 "l" ,要用 ”1“。

改正方法:printf("f(%.2f) = %.lf\n" x y); 改成 printf("f(%.1f) = %.1f\n" x y);

(11)正确的程序

1242778-20171026162246664-2000557332.png

(二)学习总结

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(b)第二个if配对。
(3)加大括号,并且要字母缩进的形式写。
(4)
if(a&b)
{
x=x+1;
}
else
{
y=y+1;
}

2.C语言的表达式 (-10< x <10)能够表达x在区间(-10,10)吗?为什么?如果不能,正确的表达式应该怎么写?

(1)不能表达。
(2)原因:这种表达方式在c语言中要先从左到右的判断是真是假,是 0 还是 1,并不能用来表示这个区间的数。所以此种写法不正确。
(3)正确的表达方式: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的输出结果:

1242778-20171026151643117-451298996.png

(2)原因:当我们输入一个非法字符时,系统会认为输入自动停止,我们的 b 将会赋予一个系统产生的随机数。

非法字符会使系统停止再读数。

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

(1)输入123 45的结果:

1242778-20171026152143570-1555458610.png
返回值为 2.

(2)输入123a的结果:

1242778-20171026152244695-493916626.png
返回值为 1.

(3)原因时:n读取的是输入能读取的数 的个数。第二次输入时输入非法字符时系统如第一次一样自动停止读取数据,因此只读入一个数。所以第二次的返回值就是 1 .

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

include <stdio.h>

int main()

{
int a, b,n;
n = scanf("%d %d", &a, &b);
if(n == 2)
{
printf("a = %d, b = %d\n", a, b);
}
else
{
printf("Input error!");
}
return 0;
}

4.对其他你认为需要进行总结的内容进行总结。

(1)在输入的时候double类型的需要输入 ”%lf“ 不能丢掉 ”l“。
(2)在输入时也要记得取地址符&。
(3)在写if条件语句是,if后不能加分号。并且要注意格式的书写。
(4)输出的格式要和题目中的格式一样。

(三)实验总结

1.计算分段函数

(1)题目

本题目要求计算下列分段函数f(x)的值:
1242778-20171024010538301-1784272319.png
注:可在头文件中包含math.h,并调用sqrt函数求平方根,调用pow函数求幂。

(2)流程图

1242778-20171026142044055-400195376.png

(3)源代码

1242778-20171024011441144-1292085717.png

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

输入样例1: 10
1242778-20171024011859707-238930476.png

输入样例2:      -0.5

1242778-20171024014527348-32613051.png

(5)实验分析

问题:double类型的输入出现错误。
原因:容易忘记写“l"
解决办法:多加注意输入的格式。

2.算术入门之加减乘除

(1)题目

对于输入的两个整数,按照要求输出其和差积商。

(2)流程图

1242778-20171026142058976-1418021514.png

(3)源代码

1242778-20171026142725492-85573894.png

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

输入样例1: 6 3
1242778-20171024012154676-1765053917.png

输入样例2:      8 6

1242778-20171024012201035-1184180502.png

(5)实验分析

问题:除法运算时的判断。
原因:两个整数相除,有可能除尽,有可能除不尽。
解决办法:分情况进行判断,然后在计算。

3.输出三角形面积和周长

(1)题目

本题要求编写程序,根据输入的三角形的三条边a、b、c,计算并输出面积和周长。
注意:在一个三角形中, 任意两边之和大于第三边。三角形面积计算公式:area=√s(s−a)(s−b)(s−c),其中s=(a+b+c)/2。

(2)流程图

1242778-20171026142110867-1347916528.png

(3)源代码

1242778-20171024011515801-1104293121.png

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

输入样例1: 5 5 3
1242778-20171024012634863-405940765.png

输入样例2:    1 4 1

1242778-20171024012641519-706418522.png

(5)实验分析

问题:输出的格式,在PTA中提交时出现格式错误。
原因:输出是的两个之间时分号加空格,没有看清。
解决办法:复制题目中的输出格式,进行修改,不容易出现错误。

4.出租车计价

(1)题目

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

(2)流程图

1242778-20171026142123586-195547376.png

(3)源代码

1242778-20171024011530566-795445056.png

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

输入样例1: 2.6 2
1242778-20171024013139535-596262822.png

输入样例2:      5.1  4

1242778-20171024014405332-1327206818.png

输入样例3:      12.5  9

1242778-20171024014411941-8772504.png

(5)实验分析

问题:判断停车时间的费用计算错误。
原因:读题不清,没有理解对。
解决办法:认真读题,看清问题在进行解答。

(四)PTA提交列表

1242778-20171024013548816-1233196010.png

1242778-20171024013558176-1453553019.png

转载于:https://www.cnblogs.com/liumiaomiao520/p/7720529.html

你可能感兴趣的文章
《Java与模式》- 结构型模式
查看>>
甲骨文发布2012 4月数据库安全补丁Critical Patch Update April 2012
查看>>
Zookeeper(八)分布式队列
查看>>
rails里面添加妹子ui
查看>>
[Angular 2] Handling Click Events with Subjects
查看>>
php在没有登录的情况下自动跳转到登录页
查看>>
Linux启动过程笔记
查看>>
poj 3411 Paid Roads(dfs)
查看>>
SQL Server将数据导出到SQL脚本文件
查看>>
Win10下用Anaconda安装TensorFlow
查看>>
Google Maps Application Developing —— Quick Start
查看>>
PHP生成word的三种方式
查看>>
Iphone连轴画的实现
查看>>
Win7局域网打印机共享设置(详细图文流程)
查看>>
亿能测试资讯_2013-8-11
查看>>
为什么要使用AOP?
查看>>
Perl代码片段-正则表达式测试程序
查看>>
java路径Java开发中获得非Web项目的当前项目路径
查看>>
uva-442 Matrix Chain Multiplication
查看>>
(喷血分享)利用.NET生成数据库表的创建脚本,类似SqlServer编写表的CREATE语句...
查看>>