第二次实验报告
c语言程序设计实验报告
姓名:廖锦丽 实验地点:一教522教室 实验时间:2021,4,15
一:实验目的与要求
1. 掌握结构化程序的算法描述方法。
2·了解C语言的基本语法要素,能熟练地将算法描述转化为C语言程序。
3·熟练掌握C语言运算符的优先级、结合性、运算规则、运算对象类型等。
4·掌握C语言逻辑值的表示方法(0代表“假”,1代表“真”)。
5·学会正确的使用逻辑表达式和关系表达式。
6·掌握各种形式的if语句语法和使用方法。注意if语句中if和else的匹配关系,以及if语句的嵌套。
7·掌握switch语句的语法和使用方法。注意在switch语句中break语句的语法及switch语句的嵌套。
8·能独立编写分支结构程序并测试通过。
9·用if语句、switch语句解决简单的应用问题并上机实现。
二:实验内容
1·实验练习:3·3·2
(1)问题描述:用算法流程图描述求解鸡兔同笼问题的算法:已知鸡兔的总头数为h,总脚数为f,求鸡兔各有多少只?
(2)实验代码:
#include <stdio.h>
main()
{
int h,f,x,y;
printf("鸡兔总数,鸡兔脚总数:\n");
scanf("%d,%d",&h,&f);
if(x>0&&y>0)
{
x=(4*h-f)/2;
y=(f-2*h)/2;
printf("鸡有%d 兔有%d\n",x,y);
}
else
printf("输入错误!\n");
}
(3)问题分析:
2·实验练习:3·3·3
(1)问题描述:有四个圆塔,圆心分别为(2,2)、(-2,2)、(2,-2)、(-2,-2),圆半径为1,四个塔的高度均为10m,塔以外无建筑物。现输入任意一点的坐标,若该点的坐标在任意一个圆塔内,则输出圆塔的高度;若该点不在圆塔内,则输出0.
(2)实验代码:
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=(x-x1)*(x-x1)+(y-y1)*(y-y1);
d2=(x-x2)*(x-x2)+(y-y2)*(y-y2);
d3=(x-x3)*(x-x3)+(y-y3)*(y-y3);
d4=(x-x4)*(x-x4)+(y-y4)*(y-y4);
if(d1>1&&d2>1&&d3>1&&d4>1)
printf("h=0");
else
printf("h=10");
}
(3)问题分析:
当不知道一个数的平方(如a的平方)如何表达时,可直接两数相乘(如a*a)。
3·实验练习:4·3·1
(1)问题描述:读入三个表示箱子长、宽、高的整数值,判断并输出该箱子是正方体还是长方体。
(2)实验代码:
#include <stdio.h>
int main()
{
int l,w,h;
printf("请输入箱子的长,宽,高: \n");
scanf("%d %d %d",&l,&w,&h);
if(l==w&&w==h&&h==l)
printf("该箱子是正方形。\n");
else
printf("该箱子是长方形。\n");
return 0 ;
}
(3)问题分析
描述长、宽、高的关系时不能表达为“l=h=w”,也不能表达为"lhw",而应该表达为“lh&&hw&&w==l”之类的形式。
4·实验练习:4·3·2
(1)问题描述:编写程序实现如下功能:商店有打印纸(18元/本)、墨盒(132元/个)、光盘(4.5元/片)出售,商店进行优惠酬宾活动。具体规则如下:顾客购买商品的总额超过100元,优惠%5;超过200元,优惠%6;超过300元,优惠%7;超过400元,优惠%8;超过500元,优惠%10。根据不同的购买量,计算应付货款。
(2):实验代码:
#include<stdio.h>
void main()
{
int x,y,z,a;//x为打印纸的数量,y为墨盒的数量,z为光盘的数量
float sum;
sum=0.0;
printf("请输入打印纸,墨盒,光盘的数量:\n");
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("应付款%.2f",sum);
return 0;
}
(3)问题分析:
对于sum函数的运用还不太熟练,一开始自己直接列了一个式子,结果可运行但无结果输出;对switch···case语句嵌套掌握的不够熟练。
5·实验练习:4·3·3
(1)问题描述:输入某一年、月的数值,输出该月的天数。
(2)实验代码:
#include <stdio.h>
int main()
{
int year,month,days;
printf("please enter year and month :\n");
scanf("%d %d",&year,&month);
switch(month)
{
case 2:
if(year%4==0||year%400==0)
printf("days=29");
else
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:printf("days=31");break;
case 4:
case 6:
case 9:
case 11:printf("days=30");break;
}
return 0;
}
(3)问题分析:
闰年的判断方法式年份可整除4或可整除400,所以应该写成“year%40||year%4000”,而不是“year%40&&year%4000”。
三:实验小结
1·总结所学内容,归纳知识点。
此次实验我学会了如何运用sum函数,如何运用switch···case语句嵌套,以及与和或(&&和||)的运用。还学会了一些算术关系式的表达,比如:a的平方可表达为“aa”,4h一定要写为“4h”。
2·查看你的学习伙伴的作业,并对他的作业提出建议。
重点用其他颜色标明,结构清晰,可以看得出作业做的很认真。