ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

第二次实验报告

2021-04-19 19:04:15  阅读:117  来源: 互联网

标签:case 语句 int else break printf 第二次 实验报告


C程序设计实验报告

姓名:陈中笑 实验地点:一教524 实验时间:2021.4.15

一、实验目的与要求

1、掌握结构化程序的算法描述方法。
2、了解C语言的基本语法要素,能熟练地将算法描述转化为C语言程序。
3、熟练掌握C语言运算符的优先级、结合性、运算规则、运算对象类型等。
4、掌握C语言逻辑值的表示方法
5、学会正确地使用关系表达式和逻辑表达式。
6、掌握各种形式的if语句语法和使用方法。注意if语句中if和else的匹配关系,以及if语句的嵌套。
7、掌握switch语句的语法和使用方法。注意在switch语句中break语句的用法及switch语句的嵌套。
8、能独立编写分支机构程序并调试通过。
9、用if语句、switch语句解决简单的应用问题并上机实现。

二、实验内容

1.实验练习:3.3.1

实验代码:

#include <stdio.h>
int 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); 
 } 


问题分析:

  • 一开始在x<1那里忘了加个y=x把x的值赋给y,后面通过看书上的提示才解决。

2.实验练习:3.3.2

实验代码:

#include <stdio.h>
int 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");
}

问题分析:

  • 4*h一开始写成4h导致一直报错,后来才反应过来不能像数学那样省略不写。

3.实验练习:3.3.3

实验代码:

#include <stdio.h>
#include <math.h>
int 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);

}

问题分析:

  • 在用到平方根sqrt函数时要加上math.h头文件。
  • 要记住两点之间的距离公式,及判断点是否在塔内的方法。

4.实验练习:4.2.4

实验代码:

#include <stdio.h>
int main()
{
	float x,y;
	char op;
	printf("输入表达式:");
	scanf("%f%c%f",&x,&op,&y);
	switch(op)
	{
		case'+':/*匹配加法*/
		        printf("%.2f%c%.2f=%.2f\n",x,op,y,x+y);break;
		case'-':/*匹配减法*/
		        printf("%.2f%c%.2f=%.2f\n",x,op,y,x-y);break;
		case'*':/*匹配乘法*/
		        printf("%.2f%c%.2f=%.2f\n",x,op,y,x*y);break;
		case'/':/*匹配除法*/
		        if (y!=0)
		        {printf("%.2f%c%.2f=%.2f\n",x,op,y,x/y);break;}
				else {printf("除数为零!\n");break;}
		default:printf("输入表达式有错!\n");
	}
	return 0;
 } 

问题分析:

  • 要考虑除法时除数不能为零。

5.实验练习:4.3.1

实验代码:

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

问题分析:

  • “=”是赋值运算符,“==”才是关系运算符。
  • 不能直接用l= =w= =h来判断长宽高相等,否则在运行时会出现问题。

6.实验练习:4.3.2

实验代码:

//用switch结构实现//
#include <stdio.h>
int main()
{
	double d,m,g,s;
    int y;
    printf("请输入打印纸、墨盒、光盘的数量:");
    scanf("%lf%lf%lf",&d,&m,&g);
    s=18*d+132*m+4.5*g;
    y=s/100;
    switch (y)
    {
    	case 0:s=s;break;
    	case 1:s=0.95*s;break;
        case 2:s=0.94*s;break;
        case 3:s=0.93*s;break;
        case 4:s=0.92*s;break;
        default :s=0.90*s;break;
    }
    printf("应付款数=%.2f",s);
}

//用if...else结构实现//
#include <stdio.h>
int main()
{
	double d,m,g;
	float s;
	printf("请输入打印纸、墨盒、光盘的数量:\n");
	scanf("%lf%lf%lf",&d,&m,&g);
	s=18*d+132*m+4.5*g;
	if(s>500)
	s=0.90*s;
	else if(s>400)
	s=0.92*s;
	else if(s>300)
	s=0.93*s;
	else if(s>200)
	s=0.94*s;
	else if(s>100)
	s=0.95*s;
	else
	s=s;
	printf("应付款数=%.2f\n",s);
}

问题分析:

  • case后面的数值不能重复。
  • switch语句中不能忘了加break,否则程序会一直执行。

7.实验练习:4.3.3

实验代码:

#include <stdio.h>
int main()
{
	int year,month,days;
	printf("Please enter year and month:\n");
	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天\n",year,month,days);
	return 0;
}

问题分析:

  • 判断闰年的条件较多,其中与是“&&”,或是“||”,各关系之间的括号要准确,否则会报错。

三、实验小结

1、程序设计的依据是算法。
2、if只管后面一个语句,要管多个要用大括号。
3、if...else语句中,if后面的单个语句有分号,但复合语句后没括号。当if...else语句有嵌套时,要注意其搭配关系,else总是与它前面最近的尚未配对的if对应。
4、switch后一对括号中的“表达式”,只要其值为整型即可;case后的表达式必须是常量表达式,不能包含变量。

  • <学习伙伴王曼霖的作业> 实验报告写的清晰明了,有认真在分析自己所遇到的问题。

四、预习第四章

标签:case,语句,int,else,break,printf,第二次,实验报告
来源: https://www.cnblogs.com/NINE0406/p/14678194.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有