C程序设计实验报告
实验项目:简单算法& 分支结构实验 姓名:米思琪 实验地点:一教522 实验时间:2020.4.15
一、实验目的与要求
1、正确选择if语句和switch语句的选择结构
2、正确认识条件判断在程序中的需要
3、熟练掌握if语句和switch语句的语法结构
4、正确使用关系运算符和关系表达式
5、注意逻辑运算符及其优先次序
二、实验内容
1、实验练习:3.3.1
(1)问题的简单描述:设计正确的选择结构和流程,输入x值,输出对应y值。
(2)实验代码:
#include<stdio.h>
main()
{
float x,y;
printf("please input x:\n");
scanf("%f",&x);
if(x>=1)
if(x>=10)
y=3*x-1;
else
y=2*x-1;
else
y=x;
printf("y的值为%.2f\n",y);
}
(3)问题分析:由于if语句后加了分号,导致代码错误,经多次检查改正。
2、实验练习:3.3.2
(1)问题的简单描述:运用算法流程计算鸡兔同笼问题。
(2)实验代码:
#include<stdio.h>
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("输入错误!\n");
}
(3)问题分析:运算符出现错误,取余算数忘记,经多次检查改正。
3、实验练习:3.3.3
(1)问题的简单描述:四个圆塔,高度均为10m,输入任意一点的坐标,若该点坐标在任意一个圆塔内,则输出圆塔的高度;若该点不在圆塔内,则输出0.
(2)实验代码:
#include<stdio.h>
#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));
d2=sqrt((x-x2)*(x-x2)+(y-y2)*(y-y2));
d3=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\n",h);
}
else
{
printf("该塔的高度为%d\n",h);
}
}
(3)问题分析:没有数学公式头文件,导致运行错误,经多次检查已改正。
4、实验练习:4.3.1
(1)问题的简单描述:定义长、宽、高三个数值,判断箱子形状。
(2)实验代码:
#include<stdio.h>
int main()
{
int l,w,h;
printf("请输入箱子的长、宽、高:\n");
scanf("%d%d%d",&l,&w,&h);
if(1==w&&1==h&&w==h)
printf("该箱子是正方体。");
else
printf("该箱子是长方体。");
return 0;
}
(3)问题分析:if语句后不加分号,条件语句是两个“==”号
5、实验练习:4.3.2
(1)问题的简单描述:商店有打印纸(18元/本)、墨盒(132元/个)、光盘(4.5元/片)出售,商店促销:顾客购买商品总额超过100元,优惠%5;超过200元,优惠%6;超过300元,优惠%7;超过400元,优惠%8;超过500元,优惠%10。根据不同的购买量,计算应付货款。
(2)实验代码:
#include<stdio.h>
main()
{
int a,b,c;
float w,z;
printf("请输入打印纸、墨盒、光盘的数量:");
scanf("%d,%d,%d,&a,&b,&c");
printf("打印纸%d张,墨盒%d个,光盘%d个\n",a,b,c);
if(w>100)
z=0.95*w;
else if(w>200)
z= 0.94*w;
else if(w>300)
z=0.93*w;
else if(w>400)
z=0.92*w;
else if(w>500)
printf("应付款:%.2f");
}
(3)问题分析:对switch语句不熟练,写代码用了很长时间。
6、实验练习:4.3.3
(1)问题的简单描述:输入某一年、月的数值,输出该月的天数。
(2)实验代码:
#include<stdio.h>
main()
{
int year,month,days;
printf("请输入年份和月份:");
scanf("%d,%d",&year,&month);
switch(month)
{
case 2:
if((year%4==0&&year%100!=0)||year%400==0)
{
days=29;
}
else
{
days=28;
}
break;
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:days=31;break;
case 4:
case 6:
case 9:
case 11:days=30;break;
}
printf("%d年%d月有%d天",year,month,days);
}
(3)问题分析:代码逻辑不清晰,请教同学后改正。
三、实验小结
收获:
(1)if语句和switch语句的使用;
(2)熟悉流程图的制作;
(3)熟悉结构化算法的性质及结构;
(4)程序的核心就是算法,程序对算法有一个最基本的要求,即算法必须是可以终结的过程,也就是说算法的执行最终能够结束。
不足:
(1)设计流程和输入代码时不够细心,导致不必要的错误;
(2)对运算符的优先级与运算不熟练,操作时浪费大量时间;
(3)不爱思考问题,喜欢求助别人。
对卢雨晴的建议:整理报告很认真,但字体太小,不利于观察,希望下次改正。
四、预习第四章