实验4分支结构程序设计说明书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.练习题一
编写程序,计算练习一分段函数的值。
(1)用scanf函数输入x的值。
(2)运行程序时,分别按x的值小于0、x的值在0-15之间、x的值大于15三种情况输入数据,检查输出的y值是否正确。
判断x的值在0-15之间可否使用表达式“0<=x<15”?为什么?正确的表示方法是什么?
不可。因为一个条件判断表达式中最多只能有一个运算符。正确的表示方法是x>=0&&x<15.
2.练习题二
输入3个数字,判断他们是否能构成三角形,如果不能,输出提示信息;否则判断它是直角、等边、等腰
# include
int k=1;void test();
void main()
{
while(k==1)
{
int a,b,c,d;
printf("Input a,b,c:");
scanf("%d,%d,%d",&a,&b,&c);
while ((d=getchar())!='\n'&&c!=EOF);//清空输入缓存区
if(!(a>0&&b>0&&c>0&&a+b>c&&a+c>b&&b+c>a))
printf("三条边无法构成三角形。\n");
else
if (a*a+b*b==c*c||a*a==b*b+c*c||b*b==a*a+c*c)
printf("这是一个直角三角形\n");
else if (a==b&&b==c)
printf("这是一个等边三角形\n");
else if (a==b||b==c||a==c)
printf("这是一个等腰三角形\n");
else
printf("这是一个普通三角形\n");
test();
}
}
void test()
{ char c;
printf("Test again?y/n:");
if ((c=getchar())=='n'||c=='N')//只有当输入N或n时才终止程序
k=0;
}
判断三角形的类型时需要用到各种判断条件,入等边三角形的判断条件是3条边相等,该判断条件可否描述为“a=b=c”?为什么?
答案:
1.练习题三
编写一个程序,输出给定的某年某月的天数。要求:
采用switch语句实现。
}
思考题及问题:
①本程序所给代码中的switch语句没有default语句可以吗?default语句应该在switch 可以。Default语句可以在{}之间的任意位置。
②本程序所给代码中的最后一个case语句中,没有break正确吗?请解释。
正确。在switch语句中,当找到符合条件的case时,执行该case语句及之后的其他情况的语句,故C语言会在case语句和default语句后加break;防止执行下面的语句。而最后一个case语句后无其他语句,故没有break语句也正确。
1.自测练习一
编写程序,计算逻辑表达式的值。
假设int a=0,b=1,c=1,d=3;
(1)表达式a*b&&c-d、c-d&&a*b是多少?为什么?
程序代码:
# include
void main()
{
int a=0,b=1,c=1,d=3;
printf("%d,%d",a*b&&c-d,c-d&&a*b);
}
运行结果截图及原因:
a*b=0,逻辑假,由于与运算的短路性,&&右边的表达式不进行,直接为0;
c-d=-2,逻辑真,为1,故第二个运算式为1&&0=0.
(2)表达式—a||++b&&--c的值是多少?变量a、b、c的值分别是多少?为什么?
程序代码:
# include
void main()
{
int a=0,b=1,c=1,d=3;
printf("%d\n",-a||++b&&--c);
printf("a=%d,b=%d,c=%d",a,b,c);
}
++b即b的值为2,是真值1,--c值即c的值为0,假值0。-a即a的值为0,假值0. 故结果为0||1&&0=1&&0=0,
程序代码:
# include
void main()
{
int a=0,b=1,c=1,d=3;
printf("++b&&--c||--a=%d\n",++b&&--c||--a);
printf("a=%d,b=%d,c=%d",a,b,c);
}
++b即b的值为2,是真值1,--c值即c的值为0,假值0。--a即a的值为-1,真值1.
故结果为1&&0||1=1,
2.自测练习二
设整型变量a、b、c分别存放从键盘输入的3个整数。编写C程序,按从大到小排列这3个数,使a成为最大值,c成为最小值,并且按序输出这3个数。
# include
void main()
{
int a[3]={0},t,j,i,k;
for (i=0;i<=2;i++)
{
printf("Input %c:",i+97);
scanf("%d",&a[i]);
}
for (j=0;j<=2;j++)//冒泡法
{
for (i=0;i<=2-j;i++)
if (a[i] t=a[i],a[i]=a[i+1],a[i+1]=t; } printf("a=%d,b=%d,c=%d\n",a[0],a[1],a[2]); } 运行结果截图: