C语言实验报告(一)
C程序设计实验报告
姓名:杨静 实验地点:家 实验时间:2020.03.10
实验项目
1.字符与ASCII码
2.运算符与表达式的应用
3.顺序结构应用程序
4.数学函数的算法描述
5.鸡兔同笼的算法描述
6.确定坐标的算法描述
一、实验目的与要求
1.掌握自增++、自减--运算符的正确使用。
2.掌握基本的输入/输出函数的基本功能、调用方法、输入/输出格式控制规定等。
3.掌握结构化程序的算法描述方法。
4.熟练掌握C语言的运算符,即运算符的优先级和结核性、运算规则、运算对象类型等。
二、实验内容
1.字符与ASCII码
(1)问题简单描述:从键盘输入一个大写字母,要求转换成小写字母输出,并输出这个小写字母相邻的两个字母,以及它们的ASCII码。
(2)实验代码:
#include<stdio.h>
main()
{
char a,b,c,d;
printf("请输入一个大写字母:\n");
scanf("%c",&d) ;
a=d+31;
b=d+32;
c=d+33;
printf("小写字母:%c,%c,%c,\n",a,b,c);
printf("ASCII码:%d,%d,%d,\n",a,b,c);
}
(3)问题分析:大写字母与小写字母的转换为ASCII+32,一开始没想到另外两个字母只需相应的+1和-1,通过提示信息很快想通。
2.运算符与表达式的应用
(1)问题简单描述:从键盘输入一个3位整数,将输出该数的逆序数。例如,输入123,输出321。
(2)实验代码:
#include<stdio.h>
main()
{
int a,b,c,d;
printf("请输入一个三位整数: \n");
scanf("%d",&a);
b=a/100;
c=(a-b*100)/10;
d=a-b*100-c*10;
printf("三位整数a的逆序数是%d",d*100+c*10+b);
}
(3)问题分析:用到%模运算取余数,要先理清三个数的顺序,看到其他同学的算法发现也有些不同,他们的要更简单化,不过我写的也方便自己理解。
3.顺序结构应用程序
(1)问题简单描述:编写一个程序,用于医院收费处出纳算账。要求输入所在医院费用(西药费、检查费、材料费、床位费、观察费和护理费),打印出应付钱数,再输入病人所付款数,打印出应找的钱数。
(2)实验代码:
#include<stdio.h>
main()
{
float x,j,c,cw,g,f,hj,fk,zh;
/*其中,x为西药费;j为检查费;c为材料费;cw为床位费;g为观察费;f为护理费;hj为应付款;fk为病人付款额;zh为应找回金额;*/
printf("请输入西药费,检查费,材料费,床位费,观察费,护理费:\n") ;
scanf("%f,%f,%f,%f,%f",&x,&j,&c,&cw,&g,&f);
hj=x+j+c+cw+g+f;
printf("应付款(元):%.2f",&hj);
printf("应付款(元):",fk);
scanf("%f,&fk");
zh=fk-hj;
printf("计算结果:\n");
printf("病人付款=%6.2f元\n应收款=%6.2f元应找回=%6.2f元\n",&fk,&hj,&zh);
}
(3)问题分析:这道题字数较多,不过题型较为简单,所以很快理清程序思维,书上也有程序版样。
4.数学函数的算法描述
(1)问题简单描述:有一函数:y=x(x<1);y=2x-1(1<=x<10);y=3x-1(x>=10),请用C语言编写程序进行验证。
(2)实验代码:
#include<stdio.h>
main()
{
float x,y;
printf("请输入x的值:");
scanf("%f",&x);
if (x<1)
{
y=x;
}
else if (x<10)
{
y=2*x-1;
}
else
{
y=3*x-1;
}
printf("y的值为%.2f\n",y);
}
(3)流程图:
(4)问题分析:用到了if和else,画出算法流程图更有利于运算,在{}的方面出现了些问题,老是在if后加了;导致出现错误。
5.鸡兔同笼的算法描述
(1)问题简单描述:将鸡和兔子关在同一笼子里,假如知道鸡和兔的总头数h,鸡和兔的总脚数f,请设计算法,计算出鸡和兔分别有多少只。
(2)实验代码:
#include<stdio.h>
main()
{
int h,f,x,y;
printf("鸡兔总数,鸡兔脚总数:");
scanf("%d,%d",&h,&f);
if(h>0&&f>0)
{
x=(4*h-f)/2;
y=(f-2*h)/2;
printf("鸡:%d兔:%d\n",x,y);
}
else
printf("输入错误!\n");
}
(3)流程图:
(4)问题分析:根据算法流程图和书上提示也比较顺利的编写程序。
6.确定坐标的算法描述
(1)问题简单描述:有4个圆塔,圆心分别为(2,2)、(-2,2)、(2,-2),(-2,-2),圆半径为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));
d4=sqrt((x-x4)*(x-x4)+(y-y4)*(y-y4));
if(d1>1&&d2>1&&d3>1&&d4>1)
h=0;
else
h=10;
}
(3)问题分析:这道题真的难到我,问了同学才想到数学算法,之前将输出写的很复杂。
三、实验小结
题不算多,但是我做了很久,晚上8点做到11点,真的难到了,不过做完很有成就感,实验课一起讨论也挺有趣,不会就问同学老师,下次一定要提前预习好实验课的题,不至于会太懵,继续加油。

浙公网安备 33010602011771号