《大学计算机基础实验教程(C语言版)》解析
《大学计算机基础实验教程(C语言版)》东北大学出版社
源代码解析
作者:
辽宁工业大学 电子202 宋家盛制作
如有错误,请告知:jff_16@163.com
注:
- 解析为增加代码的可读性均使用函数实现
- 代码均可在Visual Studio 2019与Code::Blocks上运行通过,若在VC++6.0不可通过请自行调试
实训5分支结构程序设计
/*
时间:2020.11.30
*/
#include<stdio.h>
void C5_1(void);
void C5_2(void);
int main(void)
{
printf("C5_1:\n");
C5_1();
printf("\nC5_2:\n");
C5_2();
return 0;
}
void C5_1(void)
{
int x, y;
scanf("%d", &x);
/*
错误解析:
scanf("%d", x); //error
缺少&符号
*/
if (x < 0)
{
y = x + 5;
}
else if (0 <= x && x < 10) //不能写成0 <= x < 10,编译时只判断 0 <= x
/*
错误解析:
else if(x < 10) //error
x的范围应在[0,10)之间,题目的范围知识小于10
故应使用&&,&&为“逻辑与运算符”,运算法则为:A&&B,A和B同时成立则表达式(A&&B)才成立
0 <= x && x < 10成立即为x同时大于等于0且小于10
*/
{
y = x^2 - x + 3;
}
else
{
y = 4 * x - 7;
/*
else y = 4x - 7; //error
4x在C语言中不是4*x的意思,在C语言中*不能够省略
*/
}
printf("y = %d", y);
}
void C5_2(void)
{
int a = 2, b, c;
if (a > 1)
{
b = 1;
c = 3;
}
/*
错误解析:
if(a > 1)
b = 1; c = 3; //error
问题在于if的范围
if不加{}则默认控制一个语句
上式等价于:
if(a > 1)
{
b = 1;
}
c = 3;
可以看到c = 3;这个语句不在if里面故错误需加上{}
*/
else
{
b = 2;
}
printf("%d %d", b, c);
}