第一次实验报告.

C程序设计实验报告

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

姓名: 王雨晴 实验地点:514物联网实验室_____实验时间:2019年3月19日

一、实验目的与要求

1、 掌握C语言掌握C语言几种基本数据类型,如整型(int),字符型(char),单精度(float),双精度(double),以及这些基本类型构成的常量和变量的使用方法掌握C语言的运算符和表达式的正确使,用,掌握自增和自减的正确使用,理解优先级的使用。掌握基本的输入输出函数等函数的基本功能、调用方法、输入/输出格式的控制规定

2、掌握结构化程序的算法描述方法,了解C语言的基本语法要素,能熟练的将算法描述为C语言程序。熟练掌握C语言的运算符,即运算符的优先符的优先级和结合性、运算规则、运算对象类型等。

二、实验内容

1、实验练习:2.3.3字符与ASCII码

1问题的简单描述:从键盘输入一个大写字母,要求转化成小写字母输出,并输出这个小写字母相邻的俩个字母,以及他们的ASCII码值。

2实验代码:

#include <stdio.h>
main()
{
 char a,b,c,d;
 printf("请输入一个大写字母; ");
 scanf("%c",&a);  
    b=a+31;
    c=a+32;
    d=a+33;
 printf("小写字母为:%c,%c,%c\n ",b,c,d); 
 printf("ASCII码值为;%d,%d,%d\n",b,c,d);
 return 0;
}

3问题分析:这个实验是这六个里我花费时间最长的一个,脑子知道要干什么,可是操作的时候不知道怎么来表达,期间我犯了一个最大的错误就是看到书上有管这种类型的编程看到它在数字和字母上加了单引号,然后我就不假思索的也加了上去,所以我的编程总是没有语法错误,但是结果总是错的我一直找不到原因左改改右改改,一直错一直错,可是我的单引号一直都在,从只是数字上加了,到字母数字都加了,我总是意识不到哪错了,就在别人都做第三个,甚至第三都写完了,我第一个还是没弄明白,刚好晓鹏老师在我们附近,我就想他寻求了帮助,晓鹏老师问的第一个问题就是为什么要有引号,我......觉得自己sb了,最后意识到只要没了引号,程序早就该出来了。
然后我去找了,单引号一个数,代表一个字符,如果单引号内是数值,那输出的结果是ASCII码中对应的字符,单引号一个字母,那个字母就是一个字符!所以编写程序时一定要知道什么是干什么的。

2、实验练习:2.3.4运算符与表达式的应用

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

2实验代码:

#include <stdio.h>
{int main()

    int a,b,c,x,y;
    printf("请输入一个3位数的正整数: \n");
    scanf("%d",&x);
    a=x/100;
    b=(x%100)/10;
    c=x%10;
    y=c*100+b*10+a;
    printf("%d: %d\n",x,y);
    return 0;
}

3问题分析:要灵活运用运算符得到我们所需要的各个位上的数,只要想到了怎么用C语言表达出来就很好办了

3、实验练习:2.3.5顺序结构应用程序

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

#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;
}

3问题分析:这个题目相对来说比较简单,思路清晰,主要最后输出的%6.2f,这里是病人应付款为1774.20元,看清楚每个字母对应的费用项目。

4、实验练习:3.3.1数学函数的算法描述

1问题的简单描述:一个分段函数,y=x(x<1),y=2x-1(1<=x<10),y=3x-1(x>=10);请用流程图表示该函数的算法。输入写x的值,输出满足函数关系的y的值。并用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问题分析:条件语句,if,else,开始我写出的编程出来是有错误的,运算结果,3个里面总是有一个或者俩个是错的,看了很久,觉得自己语法没错,然后就翻了会书,看到有用到你{},然后就跟坐在附近的同学讨论,最后理解了,然后就成功了。

5、实验练习:3.3.2鸡兔同笼的算法描述

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问题分析:因为书上给出了程序模板,所以我们编写出程序还是比较简单的,如果全部要我自己来编程,我可能编程不出这么简洁的语言出来吧。

6、实验练习:3.3.3确定坐标的算法描述

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

#include <stdio.h>
#include<math.h>    printf("请输入一个点(x,y)");
    scanf("%f,%f",&x,&y);
    d1=sqrt((x-2)*(x-2)-(y-2)*(y-2));
    d2=sqrt((x+2)*(x+2)-(y-2)*(y-2));
    d3=sqrt((x+2)*(x+2)-(y+2)*(y+2));
    d4=sqrt((x-2)*(x-2)-(y+2)*(y+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;

    if(d1>1&&d2>1&&d3>1&&d4>1)
    h=0;
    printf("该点高度为: %d",h);  
 } 

3问题分析:
看到题目就直接写,没在敲代码前想好要用些什么函数,这个题目很显然要用到数学公式,所以要用带math函数,其次,在C语言编程环境中识别不了^的作用,所以,平方改用*号,或者其他表示方法。

三、实验小结

1.动手能力极差,速度不是一般的慢,出了问题很难找到错在哪,想法会比较死板,总是在那个点那就结徘徊和不理解,总是要别人来点那么一下我才能想通透,在我看来是自己逻辑思维还不够。
2.对C语言有畏惧感,觉得这个很牛逼,又觉得很难,这节课做了6个编程实验,由于我的速度慢,后面几个都是跟着别人做的,别人开始上去讲的时候我第六个还没写完,所以自己的思考就不够,就是跟着别人背后写完的,花的时间还是不够,课后一定要花时间,当天上课所学的知识一定要尽快消化,一节课时间也有限,讲不完书上所有的知识,这个时候应该靠自己课后花时间去学了,老师推荐的网课我也还没花时间去看,所以得花时间,时间的投入可能不能跟我们学到的同西成一定比例的正增长,但是,不花时间一定不能学得很好。

3.多思考多问别人,要慢慢从小白变成肚子里有东西的人。

猜你喜欢

转载自www.cnblogs.com/wangyuqing1126/p/10587048.html