实验项目:3.3.1~4.3.3、案例三
姓名:游文进 实验地点:教室524 实验时间:2021.4.15
1、掌握结构化程序的算法描述方法
2、了解C语言算法基本语法要素,熟练掌握将算法描述转化成程序
3、掌握算术运算符的优先级,运算对象,运算规则
3.3.1
问题描述:
函数:
y= x (x<1)
2x-1 (1<=x<10)
3x-1 (10<=x)
输入x的值,输出y的值。
代码与结果:
main()
{
float x,y;
printf("请输入X的值:");
scanf("%f",&x);
if(x<1)
printf("y的值为%f",y=x);
else if (x<=10)
printf("y的值为%f",y=2*x-1);
else printf("y的值为%1f",y=3*x-1);
}
分析:
1.注意if和else的配对
2.代码美观性,养成注释的习惯
3.3.2
已知鸡兔总头数h,鸡兔总脚数f,分别计算鸡兔数量。
代码:
main()
{
int h,f,x,y;
printf("鸡兔总数,鸡兔脚总数:");
scanf("%d,%d",&h,&f);
if(x>0&&y>0)
{x=(4*h-f)/2;
y=(f-2*h)/2;
printf("鸡有%d,兔有%d",x,y);
}
else
printf("输入有误");
}
分析:
1.if表达式中xy,并没有计算出,所以要先算出xy结果再进行if语句的判断
3.3.3:
有四个圆塔,圆心分别为(2,2)(2,-2)(-2,-2)(-2,2),塔高度为10,塔外无建筑物,现输入一个坐标点,若在圆塔范围内则输出10,否则输出0.
代码:
#include <math.h>
main()
{
int h=10;
float x1=2,y1=2,x2=-2,y2=2,x3=-2,y3=-2,x4=2,y4=-2,x,y,d1,d2,d3,d4;
printf("请输入一个点(x,y):");
scanf("%f,%f",&x,&y);
d1=sqrt((x-x1)*(x-x1)+(y-y1)*(y-y1));
d1=sqrt((x-x2)*(x-x2)+(y-y2)*(y-y2));
d1=sqrt((x-x3)*(x-x3)+(y-y3)*(y-y3));
d1=sqrt((x-x4)*(x-x4)+(y-y4)*(y-y4));
if(d1>1&&d2>1&&d3>1&&d4>1)
h=0;
printf("该塔的高度为%d" ,h);
}
分析:
1.x2在表达式中使用x*x,而不是x**2
2.复制表达式时注意更改表达式中变量名
案例三:
模拟简单计算器,进行两个数的加减乘除
代码:
main()
{
float x,y;
char op;
printf("输入表达式:");
scanf("%f%c%f",&x,&op,&y);
if(op==‘+‘)
printf("%.2f%c%.2f=%.3f\n",x,op,y,x+y);
else if(op==‘-‘)
printf("%.2f%c%.2f=%.2f\n",x,op,y,x-y);
else if(op==‘*‘)
printf("%.2f%c%.2f=%.2f\n",x,op,y,x*y);
else if(op==‘/‘&&y!=0)
printf("%.2f%c%.2f=%.2f\n",x,op,y,x/y);
else
printf("输入表达式错误!\n");
}
分析:
1.算术运算符用‘‘包含置于if表达式中如:if(op==‘+‘)
4.3.1
输入三个表示箱子长宽高整数值,判断并输出该箱子为正方体还是长方体。
代码:
main()
{
int l,w,h;
printf("请输入箱子的长,宽,高:");
scanf("%d%d%d",&l,&w,&h);
if(l==w&&w==h)
printf("该箱子是正方体");
else
printf("该箱子是长方体");
return 0;
}
分析:
1.if表达式中多变量的恒等不可用lwh表示,应分成两个表达式并用&&连接。否则if将恒判断错误只输出else,那程序运行将如下:
4.3.2
编写程序实现以下功能:商店有打印纸(18/本),墨盒(132),光盘(4,5),开业酬宾超过100,优惠5%,200优惠6%,300优惠7%,400优惠8%,500优惠100%,根据不同购买量,支付不同货款。
代码:
main()
{
int x,y,z,a;
float sum;
printf("请输入打印纸,墨盒,光盘的数量");
scanf("%d%d%d",&x,&y,&z);
sum=18*x+132*y+4.5*z;
a=sum/100;
switch(a)
{
case 1:sum=sum*0.95;break;
case 2:sum=sum*0.96;break;
case 3:sum=sum*0.93;break;
case 4:sum=sum*0.92;break;
default:sum=sum*0.9;break;
}
printf("应付款%.f",sum) ;
}
分析:
1.输入数据时要根据代码scanf函数中格式输入否则将造成数据输入错误,可选中变量进行调试,查看其变量数值变化以确定数据的计算正确。
了解算法步骤后运用if和switch语句较为简单,但对问题的分析,流程图的制作任存在很多问题。要一一熟悉解决。知识点归纳见思维导图。
思维导图:
原文:https://www.cnblogs.com/YWJN/p/14674582.html