zoukankan      html  css  js  c++  java
  • 第一次实验报告

    C程序设计实验报告

    实验项目:基本的程序语句实验和程序的简单算法设计实验

     

    姓名:罗子健   实验地点:514物联网实验室   实验时间:2019/3/19

    一、实验目的与要求

    (1)掌握C语言几种基本数据类型,如整型(int)、字符型(char)、单精度型(float)、双精度型(double),以及由这些基本类型构成的常量和变量的使用方法。

    (2)掌握C语言的运算符和表达式的正确使用。

    (3)掌握自自增(++)和自减(--)运算符的正常使用。

    (4)掌握基本的输入/输出函数scanf()、getchar()、printf()和putchar()函数的基本功能、调用方法、输入/输出格式控制规定等。

    (5)能独立编写顺序结构程序并调试通过。

    (6)用表达式语句、输入/输出语句解决简单的应用问题并上机实现。

    (7)掌握结构化程序的算法描述方法。

    (8)了解C语言的基本语法要素,能熟练地将算法描述转化成C语言程序。

    (9)熟练掌握C语言地运算符,即运算符地优先级和结合性、运算规则、运算对象类型等。

    二、实验内容

    2.3.3实验练习:

    问题的简单描述:从键盘输入一个大写字母,要求转换成小写字母输出这个小写字母相邻的两个字母,以及它们的ASCII码。

    实验代码:

    1 #include<stdio.h>
    2 main()
    3 {
    4     char ch;
    5     printf("请输入一个大写字母:
    ");
    6     scanf("%c",&ch);
    7     printf("小写字母为:%c,%c,%c
    ",ch+31,ch+32,ch+33);
    8     printf("ASCII码值为:%d,%d,%d",ch+31,ch+32,ch+33);     
    9 }

    问题分析:实验过程中看了好久不知道怎么表示这个意思,有些无从下手,翻了好久书才知道到底应该怎么表示,明白之后就简单多了。

    2.3.4实验练习:

    问题的简单描述:从键盘输入一个3位整数,将输出该数的逆序数。例如,输入123,输出321.

    实验代码:

     1 #include<stdio.h>
     2 int main()
     3 {
     4     int a,b,c,x,y;
     5     printf("请输入一个3位的正整数;
    ");
     6     scanf("%d",&x);
     7     a=x/100;/*求x的百位数*/
     8     b=x%100/10;/*求x的十位数*/
     9     c=x%100%10;/*求x的个位数*/
    10     y=c*100+b*10+a;
    11 printf("%d: %d ",x,y); 12 return 0; 13 }

    问题分析:要利用模运算求出它的各个位的数,因为是整型输出,所以是取整数。老师在实验前提了一下,实验过程中并没有遇到什么问题。特别要注意数字的位置。

    2.3.5实验练习:

    问题的简单描述:编写一个程序,用于医院收费处出纳算账。要求输入所在医院费用(西药费、检查费、材料费、床位费、观察费和护理费),打印出应付钱数,再输入病人所付款数,打印出应找的钱数(已知某病人,西药费268.2元,检查600元,注射用材料费206元,床位费120元,观察费360元,护理费220元)。

    实验代码:

     1 #include<stdio.h>
     2 int main()
     3 {
     4     float x,j,c,hj,fk,zh,cw,g,f;
     5     /*其中,x代表西药费;j代表检查费;c代表材料费;cw代表床位费;g代表观察费;f代表护理费;hj代表应付费;fk代表病人付款;zh代表应找回的金额;*/
     6     printf("输入西药费,检查费,材料费。床位费,观察费,护理费:
    ") ;
     7     scanf("%f,%f,%f,%f,%f,%f",&x,&j,&c,&cw,&g,&f);/*编写接受语句,将西药费、检查费、材料费、床位费、观察费、护理费存放在相应的变量中*/
     8     hj=x+j+c+cw+g+f;/*计算各项费用的金额*/
     9     printf("应付款(元):%.2f",hj);
    10     printf("病人付款(元):");
    11     scanf("%f",&fk);
    12     zh=fk-hj;/*得出应找回给病人的金额*/
    13     printf("计算结果:
    ");
    14     printf("病人付款=%6.2f元
    应付款=%6.2f元应找回=%6.2f元
    ",fk,hj,zh);
    15     return 0; 
    16 }

    问题分析:在实验中总是算出的结果是0,后面发现是因为代码里的%f好多打成了&f,改了之后又发现它的结果变成了负数,仔细检查了几遍发现是因为第7行的scanf中少打了一个%f。照着书上给的代码打上去的,并没有仔细的去打,也没有去检查。

    3.3.1实验练习:

    问题的简单描述:请用流程图表示该函数的算法。输入x值,输出满足函数关系的y值。并用C语言编写程序进行检验。

    实验代码:

     1 #include<stdio.h>
     2 main()
     3 {
     4     float x,y;
     5     printf("请输入x的值:");
     6     scanf("%f",&x);
     7     if(x<1)
     8         y=x;
     9     else
    10         if(x<10)
    11             y=2*x-1;
    12         else
    13             y=3*x-1;
    14     printf("y的值为%.2f
    ",y);
    15 }

    问题分析:忽略了乘号不像以前一样可以省略不写,导致输出的结果错误。

    3.3.2实验练习:

    问题的简单描述:用流程图描述求解鸡兔同笼问题的算法:已知鸡兔的总头数为h(head),总脚数为f(feet),求鸡兔各有多少只?

    实验代码:

     1 #include<stdio.h>
     2 #include<math.h>
     3 main()
     4 {
     5     int h,f,x,y;
     6     printf("鸡兔总数,鸡兔脚总数:");
     7     scanf("%d,%d",&h,&f);
     8     if (h>0&&f>0)
     9     {
    10         x=(4*h-f)/2;
    11         y=(f-2*h)/2;
    12         printf("鸡:%d    兔:%d
    ",x,y);
    13     }
    14     else
    15         printf("输入错误!
    ");
    16 }

    问题分析:照着书上给的模板打的代码,后面发现无论输入什么东西,结果都是显示“输入错误”,看了周围的同学也是这样的,就一时间不知道为什么,思索了一会才发现是书上的模板错了,条件不是“if (x>0&&y>0)”而应该是“if (h>0&&f>0)”才是对的。

    3.3.3实验练习:

    问题的简单描述:有4个园塔,圆心分别为(2,2)、(-2,2)、(2,-2)、(-2,-2),圆半径为1.这4个塔的高度均为10m,塔以外无建筑物。现输入任一点的坐标,若该点坐标在任意圆塔内,则输出圆塔的高度;若该点不在圆塔内,则输出0。

    实验代码:

     1 #include<stdio.h>
     2 #include<math.h>
     3 main()
     4 {
     5     int h=10;
     6     float x1=2,y1=2,x2=-2,y2=2,x3=-2,y3=-2,x4=2,y4=-2,x,y,d1,d2,d3,d4;
     7     printf("请输入一个点(x,y)");
     8     scanf("%f,%f",&x,&y);
     9     d1=sqrt((x-x1)*(x-x1)+(y-y1)*(y-y1));
    10     d2=sqrt((x-x2)*(x-x2)+(y-y2)*(y-y2));
    11     d3=sqrt((x-x3)*(x-x3)+(y-y3)*(y-y3));
    12     d4=sqrt((x-x4)*(x-x4)+(y-y4)*(y-y4));
    13     if(d1>1&&d2&&d3>1&&d4>1)
    14     printf("该点的高度为:0");
    15     printf("该点的高度为:%d",h);
    16 }

    问题分析:在这个实验的时候花了很长时间去理解题目,看了很久才看懂。

    三、实验小结(在本次实验中收获与不足)

    在本次实验中,我发现自己有以下几点不足:

    1. 对知识点的理解和掌握不够熟练;
    2. 对一些细节的东西不能很好的进行处理;
    3. 对书本的过分相信和依赖;
    4. 对题目的理解能力不是很好。

    我也有以下几点收获:

    1. 能够正确定义程序的变量;
    2. 加深的对算法概念的理解;
    3. 可以使用if语句来根据条件的真假来进行判断;
    4. 能够熟练的使用printf和scanf来输出变量和输入数据。
  • 相关阅读:
    MongoDB一键安装
    Mongo基本操作
    MongoDB AUTH结果验证及开启方法
    MongoDB AUTH结果验证
    MongoDB使用
    MongoDB-安装配置
    11204RAC-dbca建库脚本
    MySQL主从同步最佳实践
    实时抓取主从的同步状态
    守护神 Supervisor
  • 原文地址:https://www.cnblogs.com/gnxyxlzj/p/10586660.html
Copyright © 2011-2022 走看看