第一次实验报告
C程序设计实验报
实验项目:基本的程序语句以及程序的简单算法设计实验
姓名:谢丽萍 实验地点:514教室 实验时间:3月12日
一、实验目的与要求
1、(1)掌握c语言几种基本数据类型。(2)掌握c语言的运算符和表达式的正确使用。(3)掌握自增和自减运算符的正确使用。(4)掌握基本输入输出函数的基本功能、调用方法,输入输出格式控制规定等。(5)能独立编写顺序结构程序并调试通过。(6)用表达式语句,输入输出语句结局简单的应用问题并上机实现。
2、(1)掌握结构化程序的算法描述方法。(2)了解c语言的基本语法要素,能熟悉地将算法描述转化为c语言程序。(3)熟练掌握c语言的运算符,即运算符的优先级和结核性,运算规则、运算对象类型。
二、实验内容
1、实验练习:
①问题描述:从键盘输入UI个大写字母,要求转化成小写字母输出,并输出这个小写字母相邻的两个字母,以及它们的ASCII码值。
②实验代码:
#include<stdio.h> void main() { char a,b,c; printf("请输入一个大写字母:\n"); scanf("%c",&a); b=a+31; c=a+33; a=a+32; printf("小写字母为:%c,%c,%c\n",a,b,c); printf("ASCII码值为:%d,%d,%d\n",a,b,c); }
③问题分析:在这个敲代码时遇到了一个变量a,b,c变换后放置的顺序问题,一开始因为放置顺序不同从而一直运行不了,其次是在输出ASCII码值时输出格式符弄错了。后来问了一下同学,帮我解决了这些问题。
2、实验练习:
①问题描述:从键盘输入一个三位数,将输出该数的逆序数。
②实验代码:
#include<stdio.h> int main () { int a,b,c,x,y; printf("请输入一个3位的正整数:\n"); scanf("%d",&x); c=x%10; b=(x%100)/10; a=x/100; y=c*100+b*10+a; printf("%d: %d\n",x,y); return 0; }
③问题分析:在这道题上我遇到了两个问题。首先是变量b的值一开始没怎么想出来怎样计算得到它,后面在老师的提醒下计算出来了b的值;最后是一个低级错误,就是在敲代码中英文替换时,把中文的分号当成英文的分号使用,从而使得代码运行不出来。经过仔细的检查后面发现了这个问题并及时改正了过来。
3、实验分析:
①问题描述:编写一个程序,用于医院收费处出纳算账。要求输入所在医院费用,打印出应付钱数,打印出应找的钱数。
②实验代码:
#include<stdio.h> int main() { float x,j,c,hj,fk,zh,cw,g,f; printf("输入西药费,检查费,材料费,床位费,观察费,护理费:\n"); scanf("%f,%f,%f,%f,%f,%f",&x,&j,&c,&cw,&g,&f); hj=(x+j+c+cw+g+f); printf("应付款(元):%.2f",hj); printf("病人付款(元):"); scanf("%f",&fk); zh=fk-hj; printf("计算结果:\n"); printf("病人付款=%6.2f元\n应付款=%6.2f元应找回=%6.2f\n",fk,hj,zh); return 0; }
③问题分析:这道题可能变量有点多,虽说如此但这道题比较顺利的就完成了,可能因为书上的提示比较多就稍微简单一点,所以也没遇到什么问题。
4、实验分析:
①问题描述:用流程图表示一个指定函数的算法。输入x值,输出函数关系的y值。并用c语言编写程序进行检验。
②实验代码:
#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); }
③问题分析:这道题我遇到两个问题。第一个是刚开始用到if/else的语句,还不熟,不知道怎样用,后来在老师的提示下以及结合书上的例题后面这个问题就得到了解决。第二个是乘号在使用过程中用错了,之前使用的那个乘法符号这个软件无法识别。后面在同学的提醒下这个问题得到了解决。
5、实验分析:
①问题描述:用流程图描述求解鸡兔同笼问题的算法:已知鸡兔的总头数为h,总脚数为f,求鸡兔各有多少只?
②实验代码:
#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"); }
③问题分析:这道题由于书上给出了太多的提示,所以直接按照书上的来就可以了。所以没怎么遇到问题。
6、实验分析:
①问题描述:有四个圆塔,圆心分别为(2,2)、(-2,2)、(2,-2)、(-2,-2),圆半径为1,这四个塔的高度均为10cm,塔以外无建筑物。先输入任一点的坐标,若该点坐标在任一圆塔内,则输出圆塔的高度;若该店不在圆塔内,则输出0.
②实验代码:
#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) printf("该点的高度为:0"); else printf("该点的高度为:10"); }
③问题分析:这道题比较难的是在各点到中心的距离比较难用代码敲出来,比较复杂吧。我认为是这六道题里面最难的一题。后面有同学提前做出来了,老师叫他们上台演示了一遍,听后就大概懂了。
三、实验小结:
在此次实验中的收获:1、见识并掌握了更多的c语言程序代码。2、对c语言程序的编写有了更深的了解。3、认识了if/else语句的运用。
不足:1、没有提前预习实验内容,从而使得完成速度比较慢。2、对c语言程序的熟悉度还是不够,连最基本的符号还是错了,所以这方面有待提高。