C程序设计实验报告

实验项目

  • 3.3.1
  • 3.3.2
  • 3.3.3
  • 4.3.0(计算器1)
  • 4.3.0(计算器2)
  • 4.3.1
  • 4.3.2
  • 4.3.3

姓名:王新媛 实验地点:一教522 实验时间:2021.4.15

一、实验目的与要求

  1. 掌握结构化程序的算法描述方法。
  2. 了解C语言的基本语法要素,能熟练的将算法描述转化为C语言程序。
  3. 熟练掌握C语言运算符的优先级、结合性、运算规则、运算对象类型等。
  4. 用if语句根据条件的真假进行判断的方法。
  5. 正确使用运算符。
  6. 掌握C语言逻辑值的表示方法(0代表“假”,1代表“真”)。
  7. 学会正确的使用关系表达式和逻辑表达式。
  8. 掌握各种形式的if语句语法和使用方法。注意if语句中的if和else的匹配关系,以及if语句的嵌套
  9. 掌握switch语句和语法的使用方法。注意在switch语句中break语句的语法及switch语句的嵌套。
  10. 能独立编写分支结构程序并调试通过。
  11. 用if语句、switch语句解决简单的应用问题并上机实现。
  12. 正确的使用C语言逻辑运算和关系运算。
  13. 正确的使用关系表达式和逻辑表达式。
  14. if···else语句的使用方法。
  15. 正确使用算术运算符和运算规则。
  16. switch···case语句的使用方法。
  17. 会正确使用switch中的表达式。
  18. switch···case语句的语法及使用方法。注意switch语句的控制流程,在switch语句中break语句的用法

二、实验内容

1、实验练习

实验3.3.1

(1)问题的简单描述:输入x值,输出满足函数关系的y值,并与C语言编写程序进行检验。
(2)实验代码:

#include<stdio.h>
void main()
{
	float x,y;
	printf("请输入x的值:");
	scanf("%f",&x);
	if(x>=1)
		 if(x>=10)
			 y=3*x-1; 
	     else
		     y=2*x-1;
	else
	    y=x;
	printf("y的值为%.2f\n",y);	 
}

(3)问题分析

在输入y=3*x-1时运用了中文思维把乘号输入为x,运行时代码报错,后来仔细观察后改正。

2、实验练习

实验3.3.2

(1)问题的简单描述:用算法流程图描述求鸡兔同笼问题的算法,已知鸡兔同笼总头数为h,总脚数为f。
(2)实验代码:

#include<stdio.h>
void 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",x,y); 
	}
	else
	printf("输入错误!\n");
}

(3)问题分析

无问题。

3、实验练习

实验3.3.3

(1)问题的简单描述:有四个圆塔,圆心已知,现输入任意坐标,若出现在圆塔内,则输出塔高,否则输出0。
(2)实验代码:

#include<stdio.h>
#include<math.h>
void 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((x1-x)*(x1-x)+(y1-y)*(y1-y));
	d2=sqrt((x2-x)*(x2-x)+(y2-y)*(y2-y));
	d3=sqrt((x3-x)*(x3-x)+(y3-y)*(y3-y));
	d4=sqrt((x4-x)*(x4-x)+(y4-y)*(y4-y));
	if(d1>1&&d2>1&&d3>1&&d4>1)
	{
	    h=0;
	    printf("该塔高度为%d",h); 	
	}
	else
	{
		printf("该塔高度为%d\n",h);
	}
	
}

(3)问题分析

输入
d1=sqrt((x1-x)*(x1-x)+(y1-y)*(y1-y));

d2=sqrt((x2-x)*(x2-x)+(y2-y)*(y2-y));

d3=sqrt((x3-x)*(x3-x)+(y3-y)*(y3-y));

d4=sqrt((x4-x)*(x4-x)+(y4-y)*(y4-y));

时把x1放在了x的后面所以当输入非书上规定的坐标时,即使坐标在塔内也显示为0,后来经同学帮助修正过来后能正确显示。

4、实验练习

实验4.3.0(计算器1、2)

(1)问题的简单描述:模拟一个简单的计算器,进行两个数的加、减、乘、除四则运算。
(2)实验代码:

int main()
{
   float x,y;
   char ch;
   int i;
   for( i=0;i<10;)
   {
    printf("请输入要计算的表达式:");
    scanf("%f%c%f",&x,&ch,&y);
    switch(ch)
    {
    	case'+':printf("%.2f\n",x+y);break;
    	case'-':printf("%.2f\n",x-y);break;
    	case'*':printf("%.2f\n",x*y);break;
    	case'/':printf("%.2f\n",x/y);break;
	}
    }	
}
#include<stdio.h>
int main()
{
   float x,y;
   char ch;
   int i;
   for( i=0;i<10;)
   {
    printf("请输入要计算的表达式:");
    scanf("%f%c%f",&x,&ch,&y);
    if(ch=='+')
    {
	printf("%.2f\n",x+y);
	}
	else 	
		{
			if(ch=='-')
			{
			printf("%.2f\n",x-y);
			}
		
			else
			{
				if(ch=='*')
				{
					printf("%.2f\n",x*y);
				}
				else
				{
					if(ch=='/')
					{
						printf("%.2f\n",x/y);
					}
				}
			}
		}
	}

}

(3)问题分析

if和else下面需要加入大括号否则运算时就会出现错误,经同学帮助后改正。

5、实验练习

实验4.3.1

(1)问题的简单描述:输入三个表示箱子长、宽、高的整数值,判断并输出该箱子是正方体还是长方体。
(2)实验代码:

#include<stdio.h>
int main()
{
	int l,w,h;
	printf("请输入箱子的长、宽、高:\n");
	scanf("%d%d%d",&l,&w,&h);
	if(l==w&&l==h&&w==h)
	    printf("该箱子是正方体。");
	else
	    printf("该箱子是长方体。");
	return 0;    
}

(3)问题分析

if后不加分号否则会匹配不到相应的else。

6、实验练习

实验4.3.2

(1)问题的简单描述:编写程序实现如下功能:商店有打印纸(18元/本)、墨盒(132元/个)、光盘(4.5元/片)出售,商店进行优惠酬宾活动。具体规则如下:顾客购买商品的总额超过100元,优惠%5;超过200元,优惠%6;超过300元,优惠%7;超过400元,优惠%8;超过500元,优惠%10。根据不同的购买量,计算应付货款。
(2)实验代码:

#include <stdio.h>
void main()
{
		float x,y,z,sum;
		int m;
		printf("请输入打印纸,墨盒,光盘的数量:");
		scanf("%f,%f,%f",&x,&y,&z);
		sum=18*x+132*y+4.5*z;
		m=sum/100;
		switch(m)
		{
			case 1:printf("应付款:%.2f",sum*0.95);break;
			case 2:printf("应付款:%.2f",sum*0.94);break;
			case 3:printf("应付款:%.2f",sum*0.93);break;
			case 4:printf("应付款:%.2f",sum*0.92);break;
			default :if(m==0)
					{
						printf("应付款:%.2f",sum);
			 		} 
			 		else
			 		{
			 			printf("应付款:%.2f",sum*0.90);
					}
					
		} 
} 
 

(3)问题分析

对于该问题的相关的sum函数不熟悉,在同学的指导下完成的有关sum函数的相关问题。

7、实验练习

实验4.3.3

(1)问题的简单描述:输入某一年、月的数值,输出该月的天数。
(2)实验代码:

#include <stdio.h>
void main()
{
	int year,month,days;
	printf("请输入年份和月份:");
	scanf("%d,%d",&year,&month);
	switch(month)
	{
		case 2:
			if((year%4==0&&year%100!=0)||year%400==0)
			{
				days=29;
			}
			else
			{
				days=28;
			}
			break;
		case 1:	
		case 3:
		case 5:
		case 7:
		case 8:
		case 10:
		case 12:days=31;break;
		case 4:
		case 6:
		case 9:
		case 11:days=30;break;	
	} 
	printf("%d年%d月有%d天",year,month,days);
}

(3)问题分析

对此段代码中的算法不了解,求助了同学。

if((year%4==0&&year%100!=0)||year%400==0)

三、实验小结

(1)总结所学内容,归纳知识点。

  • 学习了简单算法& 分支结构及流程图的画法和使用。
  • 用if语句根据条件的真假进行判断的方法。掌握C语言逻辑值的表示方法(0代表“假”,1代表“真”)。
  • 掌握各种形式的if语句语法和使用方法。注意if语句中的if和else的匹配关系,以及if语句的嵌套,掌握switch语句和语法的使用方法。
  • 注意在switch语句中break语句的语法及switch语句的嵌套。
  • if···else语句的使用方法。
  • switch···case语句的使用方法。
  • switch···case语句的语法及使用方法。注意switch语句的控制流程,在switch语句中break语句的用法
  • 对sum函数的算法不熟练,对一些算法的掌握还不完全

(2)查看你的学习伙伴的作业,并对他的作业提出建议。
作业很全很认真可以看出来十分用心,重点部分用高亮标出就更好了。

四、预习第四章

posted on 2021-04-18 16:10  WANGXINYUAN  阅读(169)  评论(0编辑  收藏  举报