C语言程序设计实验报告三

C程序设计实验报告

姓   名:赖瑾  

实验地点:家                      

实验时间:2020年3月25日                 

实验项目:4.3.1 If语句的应用

     4.3.2 switch-case的应用

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

     4.3.4 switch-case结构嵌套的应用

     4.3.5 分析程序

     计算器的实现   

       

一、实验目的与要求

1.掌握C语言逻辑值的表示方法(0代表"假”,1代表"真")。

2.学会正确地使用关系表达式和逻辑表达式。

3.掌握各种形式的if语句语法和使用方法,if语句中if和else的匹配关系,以及if语句的嵌套。

4.熟练掌握switch语句的语法和使用方法,注意在switch语句中break语句的用法及switch语句的嵌套。

                

二、实验内容

(1)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==h)
	    printf("该箱子是正方体。\n");
	else
	    printf("该箱子是长方体。\n");
 }

3、问题:运行时输入格式错误

      

4、分析:在编写代码时记得把输入提示写详细,避免输入错误

         

(2)4.3.2 switch-case的应用

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

      

2、实验代码:

float x,y,z,s;
    printf("请按顺序输入打印纸、墨盒、光盘的数量(之间用逗号间隔):\n");
    scanf("%f,%f,%f",&x,&y,&z);
    s=x*18+y*132+z*4.5;
	if(s<=100)
	    printf("应付款数=%.2f\n",s);
	else
	     if(s<=200)
            printf("应付款数=%.2f\n",s*0.95);
	     else
		     if(s<=300)
	            printf("应付款数=%.2f\n",s*0.94);
	         else
			     if(s<=400)
	                printf("应付款数=%.2f\n",s*0.93);
	             else
				     if(s<=500)
	                    printf("应付款数=%.2f\n",s*0.92);
	                 else
	                    printf("应付款数=%.2f\n",s*0.9);

 }

     

3、问题:错误输入的结果分析

     

4、分析:因为输入是输入的是中文输入法的逗号包括了一个逗号和一个空格,这两个作为数值0被读入所以得到这个结果。

        

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

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

      

2、实验代码:

#include<stdio.h>
main()
{
    int year,month, days;
    printf ("请输入年份和月份(中间用逗号隔开):\n ") ;
    scanf ("%d,%d",&year, &month) ;
    switch (month)
   {
   case 2 : if(year/4==0&&year/100!=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、问题:格式不好看

        

4、分析:Shift+Ctrl+A可以优化格式。

         

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

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

       

2、实验代码:

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

3、问题:对switch-case结构嵌套不熟

        

4、分析:多应用

        

(5)4.3.5 分析程序

1、问题的简单描述:改正错误代码

          

2、原代码

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

        

4、问题分析:问题在于这里判断条件格式错误了,5<num<10,这里5<num进行了一次判断,结果为真或者假也就是0或者1,这里0或1都会小于10所以输出的一定会是in range (5,10)!。所以需要用逻辑运算符。

                                

三、项目实训:计算器的实现

1、设计思路

①先定义一个可以实现加、减、乘、除的计算函数

②用for循环结构实现多个数的连续计算

③再通过if语句结束循环

④定义的计算函数要能进行错误判断

2、流程图

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

①优先级问题

通过分开输入每次计算的数字解决

Before

After

②输入提示不清晰

不能只从知道代码内容的自己出发,运行代码的时候要想到多种输入情况。

③没有错误判断

没有基本的错误判断,就算除数是零程序也会运行,所以增加了以下部分用作错误判断

④对缓冲区概念不了解

输入的回车键也会被字符输入函数读取,使用getchar()函数读取一个回车键就可以解决这个问题。

4、代码

#include<stdio.h>
main()
{
	float js(float a,char fh,float b);
	float c,d;
	char f;
	int j;
	printf("请输入第一个数\n");
	scanf("%f",&c);
	for(j=2;;j++)
	{
		getchar();
		printf("请输入运算符号和第%d个数\n或输入=得出计算结果\n",j);
		scanf("%c",&f);
		if(f==‘=‘)
		break;
		scanf("%f",&d);
		c=js(c,f,d);
	}
	printf("%f",c);

 } 

 float js(float a,char fh,float b)
 {
 	float x;
 	switch(fh)
 	{
 		case‘+‘:x=a+b;break;
 		case‘-‘:x=a-b;break;
 		case‘*‘:x=a*b;break;
 		case‘/‘:
 			if(b==0)
 			{
			printf("输入错误,除数不能为零!\n");
 			x=a;
 		        }
 			else
 			x=a/b;break;
 		default:printf("输入错误!\n");
	 }
	 return(x);
 }

     

四、实验小结

  首先是这次实验经常提到的判断条件问题,连续判断要用逻辑运算符。还有对switch-case嵌套结构不熟会打错。看一个问题要先了解他的目的,再将其分解成一个个步骤来达到目的。想不通时要懂得换一个角度思考,要重视基础,多看书,像这次编写计算器代码时不知道字符输入函数会读取回车键导致结果出现了问题也发现不了,还是参考了同学得代码才解决了这个问题,又倒回去看书发现书里其实有说到这个内容。还有就是老师提到的错误判断的问题,不能单纯的从已知代码的自己出发来检查运行代码,要考虑到错误输入的情况,并且作出提示尽量避免错误输入。

 

    回到顶部

原文地址:https://www.cnblogs.com/LaiJin/p/12563453.html

时间: 2024-10-25 07:36:43

C语言程序设计实验报告三的相关文章

C语言程序设计实验报告(三)

C程序设计实验报告 实验项目:第四章实验 4.3.1箱子形状:4.3.2优惠政策:4.3.3计算月份天数:4.3.4自动售货机:4.3.5分析程序 姓名:彭佳乐 实验地点:家 实验时间:2020年3月25日 一.实验目的与要求 1.掌握C语言逻辑值的表示方法(0代表"假",1代表"真"). 2.学会正确的使用关系表达式和逻辑表达式. 3.掌握各种形式的if语句语法和使用方法,if语句if与else的匹配关系,以及if语句的嵌套. 4.熟练掌握switch语句的语法和

C语言程序设计实验报告(二)

C程序设计实验报告 实验项目:2-3-3字符与ASCII码:2-3-4运算符与表达式的应用:2-3-5顺序结构应用程序:3-3-1数学函数的算法描述:3-3-2鸡兔同笼的算法描述:3-3-3确定坐标的算法描述 姓名:彭佳乐 实验地点:家 实验时间:2020.3.12 一.实验目的与要求 1.掌握自增++,自增--运算符的正确使用. 2.掌握基本的输入/输出函数的基本功能.调用方法.输入/输出格式控制规定等. 3.掌握结构化程序的算法描述方法. 4.熟练掌握C语言的运算符,即运算符的优先级和结核性

Python 程序设计 实验报告三

安徽工程大学 Python程序设计 实验报告 班级   物流192   姓名  王跟运 学号3190505204 成绩 日期    2020.  3.30   指导老师       修宇 [实验名称]实验三 分支结构程序设计 [实验目的]   (1)学会正确使用比较运算符与比较表达式.逻辑运算符和逻辑表达式: (2)熟练用if语句设计选择结构程序 [实验条件] PC机或者远程编程环境 [实验内容] 1.完成三个编程题(python123) (1)设计一个货币转换程序 问题描述: 参考温度转换实例

C语言程序设计实验报告四

C程序设计实验报告 姓 名:赖瑾 实验地点:家 实验时间:2020年4月9日 实验项目:5.3.1练习2 求数列的前n项和 5.3.2练习2 求水仙花数 5.3.4 十进制转换 5.3.5练习1 百马百担问题 5.3.5练习2 求等差数列 5.3.5练习3 食品分配问题 九九乘法表的实现 一.实验目的与要求 1.熟练地掌握while,do while及for语句实现循环的方法. 2.了解3种循环语句的区别和转换.各自的适应性.循环嵌套的使用. 3.掌握如何在循环语句种使用break,contin

C语言程序设计实验报告4

C程序设计实验报告 实验项目:5.3.1 练习2,5.3.2练习2,5.3.4, 5.3.5练习1,练习2,练习3,九九乘法表___________________________________________ 姓名:戴智琴_实验地点:家 实验时间:2020.4.12 一.实验目的与要求 1.熟练地掌握while,do-while及for语句实现循环的方法. 2.了解3种循环语句的区别和转换,各自的适应性,循环嵌套的作用. 3.掌握如何在循环语句中使用break,continue语句,改变程序

C语言程序设计实验报告(4)

C程序设计实验报告 实验项目:5.3.1(2).5.3.2(2).5.3.4.5.3.5(1).5.3.5(2).5.3.5(3).九九乘法表 姓名:蔡鹏  实验地点:家里   实验时间:2020年4月9日 一.实验目的与要求: 1.熟练地掌握while,do_while及for语句实现循环的方法. 2.了解3种循环语句的区别和转换.各自的适应性.循环嵌套的使用. 3.掌握如何在循环语句种使用break,continue语句,改变程序流程. 4.掌握在程序设计种用循环的方法实现各种算法. 二.实

Python程序设计实验报告三:分支结构程序设计

实验三   分支结构程序设计 班级:物流191             姓名:倪绍磊              学号:3190505131 指导老师:修宇           日期:2020.4.3          成绩: [实验名称]实验三  分支结构程序设计(设计性实验) [实验目的] (1)学会正确使用比较运算符与比较表达式.逻辑运算符和逻辑表达式 (2)熟练用if语句设计选择结构程序: [实验条件] PC机或者远程编程环境 [实验内容] 1.完成三个编程题.(python123) (1

汇编语言程序设计实验报告三

一.实验目的1. 掌握汇编语言源程序(8086 dos 汇编)编写→汇编→链接→调试的方法2. 加深对 1-4 章基础知识的理解二.实验准备1. 结合第 4 章课件和教材,学习/复习完整汇编源程序编写→汇编→连接→运行→调试的方法2. 复习第 1-3 章以下基础知识:(1)寄存器用法① 通用寄存器 AX, BX,CX, DX: ② 段寄存器 CS, DS, SS 和两个特殊寄存器 IP: (2)内存访问,特别是多字节数据的存.取:(3)汇编指令用法,注意其合法使用形式① 数据传送类指令:mov,

C语言实验报告三

C语言程序设计实验报告 姓名:林顺显 实验地点:家 实验时间:2020.3.29 实验项目: 4.3.1:if语句的应用 4.3.2:switch-case的应用 4.3.3:switch-case嵌套if语句的应用 4.3.4:switch-case结构嵌套的应用 4.3.5:分析程序 项目实训:计算器的实现 一.实验目的与要求 1.掌握C语言逻辑值的表示方法(0代表"假”,1代表"真").2.学会正确地使用关系表达式和逻辑表达式.3.掌握各种形式的if语句语法和使用方法,