(一)改错题

计算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

错误原因1:%前有=,输入里面的x 没有取地址符

改正方法1:

scanf("Enter x : %f", &x);

错误信息2:

错误原因2:if 后面有分号

改正方法2:将if后面的分号去掉

错误信息3:

错误原因3:if 里面的执行语句没有加分号

改正方法3:将y=1/x后面加上分号

错误信息4:

错误原因4:else后面有语句

改正方法4:将else括号里面的语句删掉

错误信息5:

错误原因5:发现分号后面和x y中间都没有逗号

改正方法5:在分号后面和x y中间加上逗号

执行编译命令,编译成功

错误信息6:

错误原因6:printf语句里加入了转义字符/n

改正方法6:去掉转义字符/n

错误信息7:

错误原因7:发现在if语句中只有一个“=”,使运算符变成了赋值符

改正方法7:再加上一个“=”

错误信息8:结果如上图

错误原因8:scanf中输入的为float型,但定义x,y为double型,并且第15行中的printf语句中“=”后面的%.1f被误写为%.lf,而且f(x)的x部分也被误写为%.2f,保留了两位小数

改正方法8:将%.lf和%.2f都改为%.1f

输出样式正确,如下图

此为改正后的源程序

(二)学习总结

1.if(a)if(b) x=x+1;else y=y+1; 的确切含义是什么?这个else应该和哪个if配对?如何明确表达这种配对方法?将该段代码按照规范化的格式进行书写。

确切含义:在if(a)语句中嵌套了一个if(b)语句

else应该和第二个if(b)语句配对

代码:

include

int main(void)

{

int x,y,a,b;

scanf("%d %d",&x,&y);

if(a)

{

if(b)

{

x = x+1;

}

else

{

y =y+1;

}

}

return 0;

}

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

不能,因为表达式 (-10< x <10)虽然是合法的,但是不等价于(x>-10&&x<10),而区间(-10,10)表示的是(x>-10&&x<10)

正确的表达式:(x>-10&&x<10)

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

    程序(1)

    include

    int main()

    {

    int a, b;

    scanf("%d %d", &a, &b);

    printf("a = %d, b = %d\n", a, b);

    return 0;

    }

    编译无误,但运行时出现错误



    b被赋予一个无意义数字,由题可知,当输入123后,继续输入a,系统认为输入非法字符,输出停止,%d定义为整型变量,而a是字符型变量,所以无法输出

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

程序(2)

include

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时,a为字符型变量,不应用%d表示,应用%c表示,a无法输出,所以返回值是1

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

程序如下图

(3)其他总结

(1)要熟记各个运算符之间的优先级关系,避免不必要的麻烦

(2)要区分赋值符“=”和等于符号“==”之间的区别

(3)注意switch语句中每条语句结束要有break

(4)注意double int float 和char之间的不同,double是用%lf来定义,int是用%d来定义,float是用%f来定义,而char是用%c来定义

(5)要注意如果题中要用数学公式来计算,要加上一个#include

(三)实验总结(我的学号末尾是单号,总结的题号为3,5,7,9)

第一题:

(1)题目

判断一个5位数是不是回文数。例如12321是一个回文数,即它的个位与万位相同,十位与千位相同。

(2)流程图:

(3)源代码:



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



(5)实验分析

问题1:十位与千位不等,但也输出了"yes"

原因1:没有在else语句下方加上花括号

解决方法1:在else语句下方加上花括号,把printf("No")扩进去

第二题

(1)题目

本题要求根据火车的出发时间和达到时间,编写程序计算整个旅途所用的时间。

(2)流程图

(3)源代码



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



(5)实验分析

问题1:输出数据与示范样例不符

原因1:时间的进制是60,而不是100

解决方法1:将m2 - m1后面再加60,表示进一小时

第三题

(1)题目

三天打鱼两天晒网

(2)流程图

(3)源代码



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





(5)实验分析

问题1:输出数据错误

原因1:if语句里的n=4||n=0中的“||”错写为"&&"

解决方法1:将“||"改正确

第四题

(1)题目

阶梯电价

(2)流程图

(3)源代码



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



(5)实验分析

问题1:电量是负数会输出两次

原因1:因为输出电量的语句放到了最后

解决方法1:将输出电量的语句放到else语句里面

(四)PTA提交列表







C语言程序第三次作业的更多相关文章

  1. C语言程序设计第三次作业--选择结构(1)

    Deadline: 2017-10-29 22:00 一.学习要点 掌握关系运算符和关系表达式 掌握如何判断两个实数相等 掌握常用数学函数的使用 掌握逻辑运算符和逻辑表达式 理解逻辑运算的短路特性 掌 ...

  2. C语言程序的三种基本结构

    1.程序结构:在C语言程序中,一共有三种程序结构:顺序结构.选择结构(分支结构).循环结构: 顺序结构:从头到尾一句接着一句的执行下来,直到执行完最后一句: 选择结构:到某个节点后,会根据一次判断的结 ...

  3. C 语言学习 第三次作业总结

    本次作业内容: For循环的使用 If判断语句的使用 常用数学运算表达式的使用 数学函数库中几个常见函数的使用及自我实现 将操作代码提交到coding 作业总结: For循环是C语言中一种基本的循环语 ...

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

    态度决定一切,无论做什么事情,秉持一个认真的态度,相信一定会让你受益无穷.当提交作业时,如果只是粘贴一下代码和运行结果,那么,你也只是写了一个程序而已,对你自己水平的提升帮助并不大,这次犯的错误或许下 ...

  5. C语言程序设计第三次作业——选择结构(1)

    一.改错题 1.题目计算f(x)的值:输入实数x,计算并输出下列分段函数f(x)的值,输出时保留1位小数. 源程序(有错误的程序): #include <stdio.h> int main ...

  6. c语言的第三次作业

    (一)改错题 计算f(x)的值:输入实数x,计算并输出下列分段函数f(x)的值,输出时保留1位小数. 输入输出样例1: Enterr x: 10.0 f(10.0) = 0.1 输入输出样例2: En ...

  7. c语言程序第2次作业

    (一)改错题 1.输出带框文字:在屏幕上输出以下3行信息. 错误信息1:{{uploading-image-560144.png(uploading...)} 错误原因:stdio误写为stido 错 ...

  8. C语言程序设计第三次作业——选择结构(一)

    (一)改错题 错误信息: 错误原因:y=1/x后没加分号 改正方法:在其后加上分号 错误信息: 错误原因:if语句后接了:,使else语句找不到对应的if 改正方法:删掉if后的分号 错误信息: 错误 ...

  9. C语言程序设计第三次作业 —— 选择结构(1)

    (一)改错题 计算f(x)的值:输入实数x,计算并输出下列分段函数f(x)的值,输出时保留1位小数. (错误一) 错误原因及改正:第九行语句结尾缺少半角分号,添加分号即可改正 (错误二) 错误原因及改 ...

随机推荐

  1. System.Reflection名称空间下的程序集类Assembly应用.

    利用反射中的程序集类(Assembly--抽象类)动态加载类库(.dll)或者可执行程序(.exe). 优点:①.可以消除if条件的逻辑判断.②.减少内存资源.③.有利于程序扩展. 缺点... 使用静 ...

  2. django的FBV和CBV

    title: python djano CBV FBV tags: python, djano, CBV, FBV grammar_cjkRuby: true --- python django的fu ...

  3. thinkphp中定义自己的函数

    可以在前台和后台的公共文件夹中common.php中定义自己的函数,这样就可以在控制器中调用,而不需要调用对象了 /** * @name addvtorandp * @author 黄峰1664253 ...

  4. 验证码进阶(TensorFlow--基于卷积神经网络的验证码识别)

    本人的第一个深度学习实战项目,参考了网络上诸多牛人的代码,在此谢过,因时间久已,不记出处,就不一一列出,罪过罪过. 我的数据集是我用脚本在网页上扒的,标签是用之前写的验证码识别方法打的.大概用了400 ...

  5. Python内置函数(31)——object

    英文文档: class objectReturn a new featureless object. object is a base for all classes. It has the meth ...

  6. 零基础大数据入门教程:Java调用阿里云短信通道服务

    这里我们使用SpringBoot 来调用阿里通信的服务. 阿里通信,双11.收到短信,日发送达6亿条.保障力度非常高. 使用的步骤: 1.1. 第一步:需要开通账户 1.2. 第二步:阅读接口文档 1 ...

  7. 阿里云API网关(12)为员工创建子账号,实现分权管理API:使用RAM管理API

    网关指南: https://help.aliyun.com/document_detail/29487.html?spm=5176.doc48835.6.550.23Oqbl 网关控制台: https ...

  8. express学习(二)—— Post()类型和中间件

    1.数据:GET.POST 2.中间件:使用.写.链式操作 GET-无需中间件 req.query POST-需要"body-parser" server.use(bodyPars ...

  9. redis中的aof模式,产生的是增量数据,还是全量数据?

    先说答案:全量数据. 1.修改redis.conf,开启rdb,禁用aof 上面这个是持久化文件的路径,我们ll看下: 2.启动redis后,cli查看里面的key [root@mini1 redis ...

  10. mybatis的generator中xml配置问题

    <!-- 生成模型的包名和位置 --> <javaModelGenerator targetPackage="com.sung.risk.model.biz" t ...