第一次实验报告

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语言的运算符,即运算符的优先级和结合性、运算规则、运算对象类型等。

二.实验内容

1.实验练习:2.3.3字符与ASCII码
1问题的简单描述:

从键盘输入一个大写字母,要求转换成小写字母输出,并输出这个小写字母相邻的两个字母,以及它们的ASCII码值。

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

我在写代码的时候,没有弄清a、b、c的位置式子关系,输出的结果是错误的。后面发现,a赋值的式子应该放在后面而不是前面,否则b与c式子中的a会变成赋值后的a。

2.实验练习:2.3.4运算符与表达式的应用
1问题的简单描述

从键盘输入一个3位整数,将输出该数的逆序数。例如,输入123,输出321.

2实验代码
/*sy2-4.c*/
# include <stdio.h>
int main ()
{   
    int a,b,c,x,y;
    printf("请输入一个3位的正整数:\n");
    scanf("%d",&x);
    a=int(x/100);/*求x的百位数*/
    b=int((x%100)/10);/*求x的十位数*/
    c=x%10;/*求x的个位数*/
    y=c*100+b*10+a;
    printf("%d:%d\n",x,y);
    return  0;
}

3问题分析

两个整数相除(/),结果只取整数部分。所以求x的百位数时,只需要令a=int(x/100)。“%”表示的是模取余,所以x的百位数c=x%10。求x的十位数b是最复杂的一步,要先求出x除以100后取余数,再除以10取整数,所以b=int((x%100)/10)。

3.实验练习:2.3.5顺序结构应用程序
1问题的简单描述:

要编写一个程序,用于医院收费处出纳算账。

2实验代码:
/*sy2-5.c*/
#include <stdio.h>
int main()
{
	float x,j,c,hj,fk,zh,cw,g,f;
	/*其中,x代表西药费;j代表检查费;c代表材料费;cw代表床位费;g代表观察费;
	f代表护理费;hj代表应付款;fk代表病人付款;zh代表应找回的金额;*/
	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问题分析:

在本次实验中,要分清不同的变量,并用式子表示出它们的关系。不然,就会造成编写的代码错误。

4.实验练习:3.3.1数学函数的算法描述
1问题的简单描述:

用C语言编写程序检验一函数输入x值时输出y的值。函数为x<1时,y=x;1<=x<10时,y=2x-1;x>=10时,y=3x-1。

2实验代码:
#include <stdio.h>
main ()
{
    floatx,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的嵌套关系错误。else要嵌于if语句中,再使用else if与else。

5.实验练习:3.3.2鸡兔同笼的算法描述
1问题的简单描述:

鸡兔同笼问题。将鸡和兔子关在同一个笼子里,假如知道鸡和兔的总头数h,鸡和兔总脚数f,设计算法能计算出鸡和兔分别有多少只。

2实验代码:
#include <stdio.h>
main ()
{
  int h,f,x,y;
  printf("鸡兔总数,鸡兔总脚数:");
  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问题分析:

不能直接输入4h和2h,而要在4与h之间加上“*”号。而且应该是 if (h>0&&f>0),而不是书上写的 if (x>0&&y>0)。

6.实验练习:3.3.3确定坐标的算法描述
1问题的简单描述:

根据平面坐标,输出圆塔的高度。

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;
	printf("该点高度为:%d",h);
}
3问题分析:

首先要有数学的头文件,这是不能缺少的。其次数的平方要用到sqrt、并列条件要用到&&。

三.实验小结

在这次做实验的过程中,我发现有些知识我掌握地不够熟练,在实际操作的时候会忘记。比如,代码中有时要包含数学的头文件、if语句与else的嵌套关系、赋值后的式子位置关系以及用*表示乘号。还有,我写代码的时候不够仔细,会忘记打一些符号,还需要多练习。做过这六个实验之后,我知道了在什么条件下是要用int、float等数据类型以及寻址符&,对书上的内容有了更深的了解。而且,我发现了书上的内容有时候也会有错误,所以不能完全照书上的去写。还有,算法在编写代码的时候可以使问题更简便。当这些程序运行出来的时候,我觉得很开心,有一种自豪感。在接下来的实验过程中,我会更加仔细,争取每次都能有所进步。

posted @ 2019-03-24 09:49  欢夏  阅读(286)  评论(0编辑  收藏  举报