首页 > 编程语言 > 详细

C语言实验报告三

时间:2020-03-29 13:24:27      阅读:49      评论:0      收藏:0      [点我收藏+]

C语言实验报告三

实验项目:4.3.1 if语句的应用;4.3.2 switch...case语句的应用;4.3.3 switch...case语句嵌套if语句;4.3.4 switch...case结构嵌套;4.3.5 分析程序;4.3.5(1)分析程序并改错

姓名:张思勇 地点:家中 时间:2020.3.25

一、实验目的与要求

1、掌握C语言逻辑值的表示方法(0代表“假” ,1代表“真”)。
2、学会正确使用关系表达式和逻辑表达式。
3、掌握各种形式的if语句语法和使用方法。注意if语句中if和else的匹配关系,以及if语句的嵌套。
4、掌握switch语句的语法和使用方法。注意在switch语句中break语句的用法及switch语句的嵌套。
5、能独立编写分支结构程序并调试通过。
6、用if语句、switch语句解决简单的应用问题并上机实现。

二、实验内容

(一)4.3.1 If语句的应用

1.问题描述:读入3个表示箱子长、宽、高的整数值,判断并输出该箱子是正方形还是长方形。

2.实验代码:

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

3.问题分析:在判断的时候,不能写成l=w=h,需写成上面那种形式

(二)4.3.2 switch-case语句的应用

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

2.实验代码:

#include<stdio.h>
main()
{
int a,b,c,d,e;
float x;
printf("请输入打印纸、墨盒、光盘的数量:");
scanf("%d,%d,%d",&a,&b,&c);
d=a*18+b*132+c*4.5;
e=d/100;
switch(e)
{
case 0:x=d;break;
case 1:x=d*(1-0.05);break;
case 2:x=d*(1-0.06);break;
case 3:x=d*(1-0.07);break;
case 4:x=d*(1-0.08);break;
default:x=d*(1-0.1);break;
}
printf("应付款数=%.2f",x);
}

3.问题分析:在case后面一定要敲一个空行,不然输出结果是错误的

(三))4.3.3 switch-case嵌套if语句的应用

1.问题描述:人某一年、月的数值,输出该月的天数。

2.实验代码:

int main()
{
int year,month,days;
printf("input year and month:\n");
scanf("%d%d",&year,&month);
switch(month)
{
	case 2:if("year%100!=0&&year%4==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",days);
return 0;
}

3.问题分析:要注意闰年的判断方法

(四)4.3.4 switch-case结构嵌套的应用

1.问题描述:编写一个自动售货机的程序。该程序应具有如下功能:有两级菜单,一级菜单是商品类型的选择;二级菜单是具体商品的选择(商品价格和品种可以自拟)。顾客先选择商品类型,然后选择具体商品,输入购买数量。自动售货机根据选择的商品和输入的数量,计算并显示所选商品的总金额。

2.实验代码:

#include<stdio.h>
int main()
{
int x,n,y;
float sum=0.0;
printf("请选择:1、日用品 2、文具 3、食品\n");
scanf("%d",&x);
switch(x)
{
	case 1:printf("请选择:1、牙刷(3.5元/只)2、牙膏(6.2元/只)\n");
	      printf("         3、肥皂(2元/块)4、毛巾(8.6元/条)\n");
	     scanf("%d",&y);
	     printf("数量?");
	     scanf("%d",&n) ;
	     switch(y)
   	    {
		    case 1:sum=3.5*n;break;
		    case 2:sum=6.2*n;break;
		    case 3:sum=2*n;break;
		    case 4:sum=8.6*n;break;
	    }
	break;
	case 2:printf("请选择:1、笔(3元/只)2、笔记本(1.2元/个)\n");
	      printf("        3、文件夹(12/个)4、文具盒(8.6元/个)\n");
	      scanf("%d",&y);
	      printf("数量?");
	      scanf("%d",&n) ;
	      switch(y)
	    {
	    	case 1:sum=3*n;break;
		    case 2:sum=1.2*n;break;
		    case 3:sum=12*n;break;
		    case 4:sum=8.6*n;break;
	    }
	break;
	case 3:printf("请选择:1、白糖(3。6元/包)2、盐(1元/包)\n");
	      printf("        3、饼(2/个)4、方便面(3.6元/条)\n");
	      scanf("%d",&y);
	      printf("数量?");
	      scanf("%d",&n) ;
	      switch(y)
		  {		  	    
		    case 1:sum=3.6*n;break;
		    case 2:sum=1*n;break;
		    case 3:sum=2*n;break;
		    case 4:sum=3.6*n;break;
		   } 
		   break;
}
printf("总计:%.2f元\n",sum);
return;
}

3.问题分析:注意中英文切换

(五)4.3.5 分析程序

1.问题描述:

2.原代码:

#include<stdio.h>
int main()
{
    int num=20;
    if(5<num<10) 
        printf("%d in range (5,10)!\n",num);
    else
        printf("%d out of range (5,10)!\n",num);
}

3.改正代码:

#include<stdio.h>
int main()
{
int num=20;
if(num<5&&num<10)
    printf("%d in range (5,10)!\n",num);
else
    printf("%d out of range (5,10)!\n",num);
}

4.问题分析:在判断是要用逻辑运算连接符连接

三、实验实训

1、设计思路:定义一个可以实现加、减、乘、除的计算函数,需要注意判断除数是否为0

2、流程图

技术分享图片

3、设计过程中遇到的问题及改进方法

问题:
1、开始时输入两个数无法运行
2、没有考虑到除数是0的情况
解决
1、加入一个getchar()函数
2、运用if语句对除数进行一个判断

4、实验代码

#include<stdio.h>
int main()
{
double    x ;  //输入1
    double    y ;  //输入2
    char      ch;        //操作
    double    ret;  //结果  
printf( "输入第一个数:" );
    scanf( "%lf", &x );
    printf( "输入第二个数:" );
    scanf( "%lf", &y );
    printf( "操作[+ - * /]:" );
    getchar();
    scanf( "%c", &ch ); 
switch( ch ) 
    {
        case ‘+‘:
        ret = x + y; break;
        case ‘-‘:
        ret = x - y;break;
        case ‘*‘:
        ret = x * y;break;
        case ‘/‘:
        if(y==0)
	printf("输入错误,除数不能为零!\n");
	else	
            ret = x / y;break;
        default:break;
    } 
    printf( "结果:%.2lf\n", ret );
    return 0;
}

四、实验总结

对一些知识掌握不熟练,还有就是编写程序的速度有点慢,编程的思路窄,尤其是在做计算器程序的时候我认识到了知识的重要性,要有宽的知识面。因为自己的知识面窄,每每自己在做一个新的东西时,就发现自己的狼狈样。然而这个还是其次,最重要的是知识面宽了,解决问题思路的也就不那么狭隘了。

C语言实验报告三

原文:https://www.cnblogs.com/zhangsiyong/p/12591040.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!