zoukankan      html  css  js  c++  java
  • 第二次实验报告

    第二次实验报告

    C语言设计实验报告

    姓名:吕家浩       实验地点:514教室        实验日期:4月3日

    实验项目

    ◆if语句的应用

    ◆switch/case语句的应用

    switch/case语句嵌套if语句的应用

    switch/case结构的嵌套应用

    ◆分析程序

    一、实验目的

    1、实验4.3.1

    ◉掌握C语言逻辑运算和关系运算的规则;

    ◉学会正确地使用关系表达式和逻辑表达式;

    ◉掌握if-else语句的使用方法。

    2、实验4.3.2

    ◉掌握算数运算符和运算规则;

    ◉掌握switch/case语句的使用方法。

    3、实验4.3.3

    学会正确地使用关系表达式和逻辑表达式;

    ◉掌握switch/case语句语法和使用方法。注意switch语句的控制流程,在switch语句中break语句的用法。

    4、实验4.3.4

    ◉switch/case结构的嵌套使用。

    ◉break语句与continue语句的用法。

    5、4.3.5-分析程序

    ◉运行程序,分析输出的结果;

    ◉运行程序,分析错误的原因,修改程序使其输出正确的结果;

    ◉掌握C语言表达式与数学表达式的区别。

    二、实验内容

    实验4.3.1

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

    实验代码

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

    问题分析:基本无问题

    实验4.3.2

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

    实验代码:

    #include<stdio.h>
    #include<math.h>
    main()
    {
    	int a,b,c;
    	double x,y;
    	printf("请输入打印纸,墨盒,光盘的数量:
    ");
    	scanf("%d%d%d",&a,&b,&c);
        x==a*18+b*132+c*4.5;
    	if(x<100)
           y=x;
        else 
    	    if(x>=100&&x<200)
    	y=x*0.95;
    	else 
    	    if(x>=200&&x<300)
    	y=x*0.94;
    	else 
    	    if(x>=300&&x<400)
    	y=x*0.93;
    	else 
    	    if(x>=400&&x<500)
    	y=x*0.92;
    	else 
    	    if(x>=500)
    	y=x*0.90;
    	printf("应付款数=%.2f",&y);				
    }最后输出的结果
    

      问题分析:此代码运行结果不对,运行结果一直都是o

           问题解决:原因是最后的输出里面y前面加了一个&,其实是不用的

    实验4.3.3

    问题描述:输入某一年月,输出该月的天数。

    实验代码:

     

    #include<stdio.h>
    int main()
    {
    int year,month,days;
    printf("please enter years and month: ");
    scanf("%d%d",&year,&month);
    switch(month)
    {
    case 2: if(year%4==0||(year%400==0&&year%100!=0))
    days=29;
    else
    days=28;
    break;
    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);
    return 0;
    }

    问题分析:判断闰年的条件语句写错了,导致运行不了

    解决方法:通过问同学已解决

    实验4.3.4

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

    实验代码

    #include<stdio.h>
    int main()
    {
    	int x,n,y;
    	float sum=0.0;
    	printf("请选择:1.日常用品 2.文具 3.食品
    ");
    	scanf("%d",&x);
    	switch(x)
    	{
    		case 1:printf("请选择:1.牙刷(3.5元支) 2.牙膏(6.2元支)
    ");
    		       printf("3.肥皂(2元块) 4.毛巾(8.6元条)
    ");
    		       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元本)
    ");
    		       printf("3.文件夹(12元个) 4.文具盒(8.6元个)
    ");
    		       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元包)
    ");
    		       printf("3.饼(2元个) 4.方便面(3.6元个)
    ");
    		       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);
    	return 0;
    	
    }
    

      问题分析:基本无问题

    4.3.5--分析程序

    实验代码:

    复制代码
     1 #include<stdio.h>
     2 int main(){
     3             double x=1000/3.0;
     4             double y=x-333.0;
     5             double z=3*y-1.0;
     6             printf("x=%lf
    ",x);
     7             printf("y=%lf
    ",y);
     8             printf("z=%lf
    ",z);
     9             if (z==0) printf("z==0.
    ");
    10                     else printf("z不等于0.
    ");
    11             return 0;
    12           }
    复制代码

    运行结果:

    问题分析:出现此结果的原因:经过运算,实际结果是0.00000.......1,后面接了无限个0,但由于精度差距,只能显示小数点后6位的数,故显示z的结果是-0.000000,后面的z却显示不等于0.

    实验代码:

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

      运行结果:

    问题分析:判断20大小的区间的语句有问题,写法错误,应该写成num>5&&num<10

    1 #include<stdio.h>
    2 int main(){
    3             int num=20;
    4             if(num>5&&num<10)
    5                 printf("%d in range (5,10)!
    ",num);
    6             else 
    7                 printf("%d out range (5,10)!
    ",num);
    8           }
    

      运行结果:

    实验小结:本次实验问题着重出现在细节方面和语句书写方面,有些代码运行不出来,找问题也要找很长时间,

    可能只是一个很小的错误,一个小细节,系统也不会提示,有时候真的会找很久,在条件语句的编写里,要注意

    书写的规范性,不然很有可能运行不出来。

  • 相关阅读:
    基于Metaweblog API 接口一键发布到国内外主流博客平台
    uva144 Student Grants
    Uva 10452
    Uva 439 Knight Moves
    Uva 352 The Seasonal War
    switch语句
    java——基础知识
    我的lua学习2
    codeforces 431 D. Random Task 组合数学
    codeforces 285 D. Permutation Sum 状压 dfs打表
  • 原文地址:https://www.cnblogs.com/ljh26/p/10667864.html
Copyright © 2011-2022 走看看