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:
错误原因:第九行的语句最后没有加分号。
改正方法:加上分号。
错误信息2:
错误原因:第七行的语句最后加上了分号。
改正方法:最后加上分号。
错误信息3:
错误原因:第十一行的 else 后加上了判断语句。
改正方法:把判断语句删掉。
错误信息4:
错误原因:第十五行的输出语句中,后引号与变量 x 之间没有逗号。
改正方法:在后引号与变量 x 之间加上逗号。
错误信息5:
错误原因:第十五行的输出语句中,变量 x 与变量 y 之间没有逗号。
改正方法:在第十五行的输出语句中,在变量 x 与变量 y 之间加上逗号。
错误信息6:
错误原因:源程序的第五行的输入语句中有 \n
改正方法:把源程序第五行的输入语句中的 \n 去掉。
错误信息7:
错误原因:源程序的第十五行的输出语句中变量 x 对应的为 %.2f 。
改正方法:把变量 x 对应的 %.2f 改为 %.1f 。
错误信息8:
错误原因:源程序的第六行的输入语句中, x 前没有区地址符。
改正方法:在 x 前加上区地址符
错误信息9:
错误原因:源程序的第十五行的输出语句中变量 y 对应的为 %.lf 。
改正方法:把y 对应的 %.lf 改为 %.1f 。
错误信息10:
错误原因:第六行的输入语句中 &x 对应的为 =%f。
改正方法:把第 &x 对应的 =%f 改为 %lf。
错误信息11:
错误原因:源程序的第七行的判断语句中的等于为 = 。
改正方法:把 = 改为 ==
试运行


(二)学习总结
1.if(a)if(b) x=x+1;else y=y+1; 的确切含义是什么?这个else应该和哪个if配对?如何明确表达这种配对方法?将该段代码按照规范化的格式进行书写。
答:确切含义为如果条件符合a则往后运行,再符合b则运行x=x+1。若不符合a则运行y=y+1。 这个else应该与第二个if配对。每个if、else后均加上大括号。
if(a)
{
if(b)
{
x=x+1;
}
}
else
{
y=y+1;
2.C语言的表达式 (-10< x <10)能够表达x在区间(-10,10)吗?为什么?如果不能,正确的表达式应该怎么写?
答:不能,,(-10<x)若正确则值为1,错误则为2。然后再与10进行比较。
、正确表达式为:(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;
}
答:scanf()函数的返回值是成功读入数据的个数,如果没有读取任何数据,则返回0。这个读取了一个数,所以是1
程序(2)
#include <stdio.h>
int main()
{
int a, b,n;
n = scanf("%d %d", &a, &b);
printf("n = %d\n", n);
return 0;
}
答:输出结果为n = 2和n = 1。scanf()函数的返回值是成功读入数据的个数,如果没有读取任何数据,则返回0。如果是读取1个则是1,读取2个则是2
4.对其他你认为需要进行总结的内容进行总结。
总结:应牢记关系运算符及其性质,关系运算符有六种
应熟练掌握和运用 if...else 语句,
应牢记数学函数,数学函数所在的头文件为math.h。
应牢记逻辑运算符,有三种
(三)实验总结
2计算分段函数本题目要求计算下列分段函数f(x)的值

流程图

源程序
运行结果


出现的问题
问题:
解决办法:经检查发现未加上数学专用字符#include
4.对于输入的两个整数,按照要求输出其和差积商

流程图:
源程序:
运行结果

出现的问题
问题:没考率除法时第一次未考虑除不尽的情况
解决办法:加一种方法
6,本题要求编写程序,根据输入的三角形的三条边a、b、c,计算并输出面积和周长。
流程图:
源程序:
运行结果


出现的问题
问题:未加入数学字符#include
改正方法:加上#include
8,本题要求根据某城市普通出租车收费标准编写程序进行车费计算。具体标准如下:
起步里程为3公里,起步费10元;
超起步里程后10公里内,每公里2元;
超过10公里以上的部分加收50%的回空补贴费,即每公里3元;
营运过程中,因路阻及乘客要求临时停车的,按每5分钟2元计收(不足5分钟则不收费)。
流程图:
源程序:
输出结果
出现的问题
问题:输出值全为整数
原因:未考虑使用double型字符
(五)PTA提交列表

浙公网安备 33010602011771号