(一)改错题

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

1)源程序(有错误的程序)

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



错误原因:经过检查发现,在if语句中,“y = 1/ x”后缺少“;”

改正方法:加上“;”

2)错误信息:



错误原因:在源代码第七行的if语句后,多添加了一个“;”

改正方法:去掉;

3)错误信息:

错误原因:else后不能有 (x != 10)

改正方法:去掉(x != 10)

4)错误信息:



错误原因:在printf语句中缺两个逗号

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

5)可进行编译,执行编译命令,编译成功。输入所给样例,但在输入前,首先发现输入格式不对,如图

错误信息:

错误原因:在源代码的scanf语句中多了一个转义字符“/n”

改正方法:去掉“/n”

6)错误信息:



错误原因:首先发现在scanf语句中多了一个“=”,在第七行的if语句中,所给比较条件“x == 10”被写成“x = 10”,缺少一个“=”导致条件运算符变为赋值运算符,导致比较时出错。

改正方法:将“x = 10”改为“x == 10”。

7)错误信息:

错误原因:首先发现,在scanf语句中,所取用的数型为float型,而x,y的定义均为double型,虽然这并不是造成错误的主要原因,但谨慎起见,仍改为“%lf”,进一步检查发现,在第15行的printf语句中,“=”后的部分的“%.1f”被误写成“%lf”,可以认定,这是造成错误的主要原因,而f(x)部分的“x”,也写成了“%.2f”,因而被保留了两位小数。

改正方法:将第15行的“%.2f”改为“%.1f”;“%.lf”改为“%.1f”。

8)错误原因:scanf语句中x前没有&

改正方法:x前加上&



符合题目

改后正确代码为:



二:学习总结:

(1)对于所给代码段的理解:

所给代码段“if(a)if(b) x=x+1;else y=y+1”本身应为判断是否为a并且b,若为真,则执行“x = x + 1”这段语句,若为假,则执行后面的“y = y + 1”。

该语句的else在此处应与第二个if语句配对。若要明确表达这种配对方式,应在每一个if 或else if或else后添加“{}”(花括号),同时要时刻注意if else配对的优先顺序。

改正后的代码段应为

if(a&&b)

{

x = x + 1;

}

else

{

y = y + 1;

}

(2)C语言中对于范围的表达:

不能。因为在C语言中,逻辑运算符的顺序是从左至右的,判断结果为0或1,即“true,false”。而以题设的“ (-10< x <10)”而言,当x大于-10为真时,x的值便被转换为1,根据结合性,x与右侧的10继续比较,显然成立。但若输入大于10的数,先与左侧的-10比较,显然为真,x被赋值为1,再与10比较,为真,但显然不符合逻辑。因此,只要输入任意大于-10的值,得到的结果都只能为真。因此无法表示(-10,10)这一区间。

正确表达方式如下:

(x >-10 && x < 10);

即添加逻辑运算符,即可得到所要效果。

(3)非法字符的问题:

1.首先将所给代码输入编译器,可以编译。运行,输入所给数据“123a”,得到结果如下:



系统发现输入的123a中a是非法数据,便认为输入已经停止,用1来表示,想输出整形数据,定义时就用int型以及输入输出用%d,而字符要用%c。

2..首先将所给代码输入编译器,可以编译。运行,输入所给数据“123 45”,和“123a”,得到结果如下:



该函数的返回值为成功读取变量的个数。在该程序中,a,b均为整型变量,在scanf中,对应的格式化输入符号也为整型,所以在输入“123 45”,即均为整型时,均为合法数据,因此被读入,返回值为2.而输入“123a”,其中包含了非法数据“a”,结合上题,可以得知输入被终止,所以只将123赋给了a,b未能成功被赋值,因此返回值是1。所以,也能佐证上题分析正确。

3.修改程序1.若输入数值均为合法数值,则会被正常读取,scanf的返回值会为2,否则均说明未能正常读入数据,即含有非法数据,源代码如下:

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.(1)题目

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

(2)流程图

(3)源代码

include<stdio.h>

include<math.h>

main()

{

float x,y;

scanf("%f",&x);

if(x>=0)

y=sqrt(x);

else

y=(x+1)(x+1)+2x+1/x;

printf("f(%.2f) = %.2f",x,y);

}

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



(5)实验分析

问题:调用pow函数不太会用,总有错误。

原因:没有听过这部分内容。

解决办法:用普通赋值法进行求解。

2.(1)题目

7-4 算术入门之加减乘除,对于输入的两个整数,按照要求输出其和差积商。

(2)流程图

(3)源代码

include<stdio.h>

int main()

{

int a,b,c,d,e;

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

if(a%b==0)

{int f;

c=a+b;d=a-b;e=ab;f=a/b;

printf("%d + %d = %d\n%d - %d = %d\n%d * %d = %d\n%d / %d = %d\n",a,b,c,a,b,d,a,b,e,a,b,f);}

else

{ float f;

c=a+b;d=a-b;e=a
b;f=(float)a/b;

printf("%d + %d = %d\n%d - %d = %d\n%d * %d = %d\n%d / %d = %.2f\n",a,b,c,a,b,d,a,b,e,a,b,f);}

return 0;

}

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



(5)实验分析

问题:做除法运算时总会出现结果为0错误的情况。

原因:除法结果定义类型时没按照除不除的尽分清数据类型

解决办法:用选择结构来分类余数是否为0的数据类型

3.(1)题目

7-6 输出三角形面积和周长。本题要求编写程序,根据输入的三角形的三条边a、b、c,计算并输出面积和周长。注意:在一个三角形中, 任意两边之和大于第三边。

(2)流程图

(3)源代码

include<stdio.h>

include<math.h>

int main()

{

int a,b,c;

float S,s,C;

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

if(a+b>c&&a+c>b&&b+c>a)

{

s=(a+b+c)/2;

S=sqrt(s(s-a)(s-b)*(s-c));

C=a+b+c;

printf("area = %.2f; perimeter = %.2f",S,C) ;

}

else
printf("These sides do not correspond to a valid triangle");
return 0;

}

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



(5)实验分析

无问题

4.(1)题目

7-8 出租车计价

本题要求根据某城市普通出租车收费标准编写程序进行车费计算。具体标准如下:

起步里程为3公里,起步费10元;

超起步里程后10公里内,每公里2元;

超过10公里以上的部分加收50%的回空补贴费,即每公里3元;

营运过程中,因路阻及乘客要求临时停车的,按每5分钟2元计收(不足5分钟则不收费)。

(2)流程图

(3)源代码

include<stdio.h>

int main()

{

float a,b;

int x,y,c;

scanf("%f %d",&a,&x);

y=(x/5)2;

if(a<=3.0)

{

b=10+y;

c=(int)(b+0.5);

printf("%d",c);

}

else if(a>3&&a<10)

{

b=10+(a-3)
2+y;

c=(int)(b+0.5);

printf("%d",c);

}

else

{

b=10+14+3*(a-10)+y;
c=(int)(b+0.5);
printf("%d",c);

}

return 0;

}

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



PTA提交列表:

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

  1. 基于C#程序设计语言的三种组合算法

    目录 基于C#程序设计语言的三种组合算法 1. 总体思路 1.1 前言 1.2 算法思路 1.3 算法需要注意的点 2. 三种组合算法 2.1 普通组合算法 2.2 与自身进行组合的组合算法 2.3 ...

  2. C语言——第三次作业(2)

    作业要求一 PTA作业的提交列表 第一次作业 第二次作业 一道编程题: 有一个axb的数组,该数组里面顺序存放了从1到a*b的数字.其中a是你大学号的前三位数字,b是你大学号的后四位数字,比如你的学号 ...

  3. C语言--第三次作业

    要求一 . 1)C高级第三次PTA作业(1) 题目6-1 1.设计思路      (1)主要描述题目算法          第一步:将月份分别赋值:          第二步:利用switch语句,输 ...

  4. C语言学习 第七次作业总结

    C语言学习 第七次作业总结 数组可以分为数组和多下标数组(在传统的国内C语言书本中,将其称为二/多维数组). 数组名称 在之前的课程中,大家应该都有印象,对于int a这样的定义,会为变量 a 声明一 ...

  5. 2016福州大学软件工程第三次个人作业-K米软件产品评测

    K米软件测评个人作业结果统计如下: 评分标准: 按照栋哥布置的第三次个人作业--K米测评制定评分标准如下: 第一部分:调研.评测 下载并使用,描述最简单直观的个人第一次上手体验. 0.5 按照描述的b ...

  6. 【作业】HansBug的前三次OO作业分析与小结

    OO课程目前已经进行了三次的作业,容我在本文中做一点微小的工作. 第一次作业 第一次作业由于难度不大,所以笔者程序实际上写的也比较随意一些.(点击就送指导书~) 类图 程序的大致结构如下: 代码分析 ...

  7. 第五次程序设计作业 C++计算器雏形 调用文件输入输出

    一.C++计算器作业系列链接 第三次作业:C++计算器雏形 第三次作业附加:代码规范 第四次作业:命令行的调用及计算 MyGithub 二.本次作业相关 要求:第五次程序设计作业 根据这一次的作业要求 ...

  8. OO第三次电梯作业优化

    目录 第三次电梯作业个人优化 前言 优化思路 一.调度器 二.电梯 第三次电梯作业个人优化 前言 由于个人能力有限,第二次电梯作业只能完成正确性设计,没能进行优化,也因此损失了强测分数,于是第三次电梯 ...

  9. C++第三章课后作业答案及解析---指针的使用

    今天继续完成上周没有完成的习题---C++第三章课后作业,本章题涉及指针的使用,有指向对象的指针做函数参数,对象的引用以及友元类的使用方法等 它们具体的使用方法在下面的题目中会有具体的解析(解析标注在 ...

随机推荐

  1. ASP.NET Web API编程——路由

    路由过程大致分为三个阶段: 1)请求URI匹配已存在路由模板 2)选择控制器 3)选择操作 1匹配已存在的路由模板 路由模板 在WebApiConfig.Register方法中定义路由,例如模板默认生 ...

  2. SiteMesh入门(1-1)SiteMesh是什么?

    1.问题的提出 在开发Web 应用时,Web页面可能由不同的人参与开发,因此开发出来的界面通常千奇百怪.五花八门,风格难以保持一致. 为了统一界面的风格,Struts 框架提供了一个标签库Tiles ...

  3. KNN算法简单应用

    这里是写给小白看的,大牛路过勿喷. 1 KNN算法简介 KNN(K-Nearest Neighbor)工作原理:存在一个样本数据集合,也称为训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集 ...

  4. 一个适用于单页应用,返回原始滚动条位置的demo

    如题,最近做一个项目时,由于页面太长,跳转后在返回又回到初始位置,不利于用户体验,需要每次返回到用户离开该页面是的位置.由于是移动端项目,使用了移动端的套ui框架framework7,本身框架的机制是 ...

  5. Python之编码

    一.Python2与Python3的区别 1.从宏观上考虑,Python2重复代码太多,错误率高,不够规范.Python崇尚的是语言简洁.优美.清晰.Python3更加规范,重复代码少: 2.Pyth ...

  6. cache和buffer

    一.free命令是Linux查看内存使用情况的命令 1. centos 7风格 [root@bogon init.d]# free -m total used free shared buff/cac ...

  7. 关于PHP包含文件的方法

    Begin 今天陆陆续续在重新写一些后台程序,用到了一些共用的PHP文件,所以顺便学习了一下几种包含文件方式 include 最常用的包含文件方法,如果遇到错误会显示warning,但是不会影响下面脚 ...

  8. 初识 SpringMVC

    1.Spring MVC 的工作流程 1.web请求被 前端控制器(DispatcherServlet)拦截 2.DispatcherServlet调用 映射处理器(HandelerMapping)查 ...

  9. 【vuejs深入一】深入学习vue指令,自定义指令解决开发痛点

    写在前面  一个好的架构需要经过血与火的历练,一个好的工程师需要经过无数项目的摧残. 最近博主我沉淀了几个月,或者说懒了几个月.然而大佬的指点总是一针见血,能够让人看到方向.所以我现在有觉得,一个好的 ...

  10. JS实现数组去重方法总结(六种方法)

    方法一: 双层循环,外层循环元素,内层循环时比较值 如果有相同的值则跳过,不相同则push进数组 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Array. ...