-
1 文字讲解
-
2 视频讲解
-
3 过关测试
例3-7 从键盘输入两个整数,输出其中的较大者。
1、程序编写思路分析:①正确理解任务,②算法分析,③画出程序流程流,④书写源程序,⑤测试源程序。
2、算法分析:
从两个数中找出一个较大的数,只要比较一次,就可以分出大小。有三种实现方法。
3、流程图:
实现方法1:双分支流程图

实现方法2:单分支流程图

4、源程序如下:
实现方法1:双分支流程图源程序
#include <stdio.h>
#include <conio.h>
main( )
{
int a, b, max;
printf("请输入两个整数:");
scanf("%d%d", &a, &b);
if( a > b)
max = a;
else
max = b;
printf("两个数中较大的为:%d", max);
getch( );
}
5、程序测试过程如下:
对于两个数据a, b,有两种可能,a大或b大,可以采用两组代表数据进行测试。
第一组数据:选用样例数据 a=17, b=23,代表“a > b”这一类数据。测试如下图所示。

第二组数据:选用样例数据 a=23, b=17,代表“a < b”这一类数据。测试如下图所示。

经过以上两组数据测试,程序输出达到期望结果,从而验证程序正确。
思考题:
1、 请依据实现方法2(单分支流程图)编写源程序并进行测试。
2、请用条件表达式编写源程序并进行测试。
例3-9 编写一个程序,判断一个字符是否为英文字母。
1、程序编写思路分析:①正确理解任务,②算法分析,③画出程序流程流,④书写源程序,⑤测试源程序。
2、算法分析:
判断一个字符是否是英文字母,要看它的ASCI码是否符合以下两个条件之一。
① ch >= 'A' && ch < 'Z' 大写字母
② ch >= 'a' && ch <='z' 小写字母
因此。判断字符是否为字母可以使用下面的逻辑表达式。
(ch >= 'A' && ch <= 'Z' ) || (ch>='a' && ch <= 'z')
3、源程序如下∶
#include <stdio.h>
#include <conio.h>
main( )
{ char ch;
printf("请输入一个字符∶");
scanf("%c", &ch);
if( (ch >= 'A' && ch <= 'Z' ) || (ch>='a' && ch <= 'z'))
printf("%c 是英文字母\n", ch);
else
printf("%c 是其他字符\n", ch);
getch( );
}
4、程序测试过程如下:
第一组数据:大写字母

第二组数据:小写字母

第三组数据:其他字符

经过以上三组数据测试,程序输出达到期望结果,从而验证程序正确。
例3-8 从键盘输入两个整数,从小到大输出。
1、程序编写思路分析:①正确理解任务,②算法分析,③画出程序流程流,④书写源程序,⑤测试源程序。
2、算法分析:
① 只需要做一次比较,然后进行一次交换即可
② 用if语句实现条件判断
③ 关键是怎样实现两个变量值的互换

变换过程如下:

3、流程图如下:

4、源程序如下:
#include <stdio.h>
#include <conio.h>
main( )
{ int a, b, tmp;
printf("输入两个整数:");
scanf("%d%d", &a, &b);
if( a > b )
{
tmp = a;
a = b;
b = tmp;
}
printf("%d, %d", a, b);
getch( );
}
5、程序测试过程如下:
选用样例数据 a=20, b=15,期望结果:15,20

经过以上数据测试,程序输出达到期望结果,从而验证程序正确。
例3-10 由半径为 1 的圆和半径为 2 的圆所围成的圆环如图3-19 所示。编写程序,输入点A的坐标x、y,若点A(x,y)在圆环内,则输出 TRUE,否则输出 FALSE。

1、程序编写思路分析:①正确理解任务,②算法分析,③画出程序流程流,④书写源程序,⑤测试源程序。
2、算法分析:
根据题意, 求线段OA的长度公式为,若1≤|OA|≤2,即1≤x²+y²≤4,则在圆环内;否则在圆环外。因此,此题实际上是求下面表达式的逻辑值。
( x*x + y*y >= 1) && ( ( x*x+y*y ) <=4 )
在C 语言中,逻辑值 TRUE 用 1 表示,FALSE 用 0 表示,它们可以看成是整型值,因此,只需将这个表达式的值赋给一个整型变量 bool,然后输出它的值即可。
3、流程图如下:

4、源程序如下∶
#include <stdio.h>
#include <conio.h>
main( )
{ int bool;
float x, y, z;
printf("请输入x,y∶");
scanf("%f%f", &x, &y);
z=x * x + y * y;
bool = ( z >= 1) && ( z <= 4 );
if ( bool )
printf("TRUE \n");
else
printf("FALSE \n");
getch( );
}
5、程序测试过程如下:
第一组数据:选用样例数据 x=1.2, y=1.5,代表点A在圆环内这一类数据。测试如下图所示。

第二组数据:选用样例数据 x=1.8, b=1.9,代表点A在圆环外这一类数据。测试如下图所示。

经过以上两组数据测试,程序输出达到期望结果,从而验证程序正确。


