C程序设计实验报告三

C语言程序设计实验报告

姓名:周曼洁

实验地点:家

实验时间:2020.3.26

实验项目:

  • 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、实验练习: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");
 } 

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 x,y,a,b,c,temp;    /*x,y分别为打印纸、墨盒的单价,a,b,c分别为购买的数量*/ 
	double z,sum,t;          /*z为光盘的单价,sum为实际付款数,t为应付款数*/ 
	printf("请输入打印纸,墨盒,光盘的数量:\n");
	scanf("%d,%d,%d",&a,&b,&c);
	x=18;y=132;z=4.5;
	sum=a*x+b*y+c*z;
	if(sum<=100)
	temp=0;
	else if(100<sum&&sum<=200)
	temp=1;
	else if(200<sum&&sum<=300)
	temp=2;
	else if(300<sum&&sum<=400)
	temp=3;
	else if(400<sum&&sum<=500)
	temp=4;
	else if(sum>500)
	temp=5; 
	switch(temp)
	{
		case 0:t=sum;
		break;
		case 1:t=sum*0.95;
		break;
		case 2:t=sum*0.94;
		break;
		case 3:t=sum*0.93;
		break;
		case 4:t=sum*0.92;
		break;
		case 5:t=sum*0.9;
		break;
	}
	printf("应付款数为:%lf\n",sum);
}

3问题分析:在输入文字后没有及时将输入法切换过来,导致逗号输入错误。百分之几的应该表示成小数。

3、实验练习:switch-case嵌套if语句的应用

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

#include<stdio.h>
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:days=31;break;
		case 3:days=31;break;
		case 5:days=31;break;
		case 7:days=31;break;
		case 8:days=31;break;
		case 10:days=31;break;
		case 12:days=31;break;
		case 4:days=30;break;
		case 6:days=30;break;
		case 9:days=30;break;
		case 11:days=30;break;
	}
	printf("%d",days);
}

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

3问题分析:代码包含文字,要注意中英文半角

5、实验练习:分析程序

1问题的简单描述:修改错误代码
2实验代码:
原代码:

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

修改后代码:

扫描二维码关注公众号,回复: 10195457 查看本文章
#include<stdio.h>
int main()
{
	int num=20;
	if(5<num&&num<10)
	    printf("%d  in  rangd  (5,10)!\n",num);
	else
	    printf("%d  out  of  range (5,10)!\n",num);
}

3问题分析:原代码的条件输入有错误,在原代码的情况下,只会判断是真或是假。而这样输出的结果为0或1,所以错误。应该使用逻辑运算符将其连接起来。

项目实训:计算器的实现

流程图:

代码:

#include<stdio.h> 
main()
{
	int e;
	double a,b,c,d;
	char op;
	for(;c>0;c!=1)
	{
		printf("请输入一个算式:\n");
		scanf("%lf%c%lf",&a,&op,&b);
		getchar();
		switch(op)
		{
			case'+':
				printf("%lf+%lf=%lf\n",a,b,d=a+b);
				break;
				case'-':
					printf("%lf-%lf=%lf\n",a,b,d=a-b);
					break;
					case'*':
						printf("%lf*%lf=%lf\n",a,b,d=a*b);
						break;
						case'/':
							if(b!=0)
							printf("%lf/%lf=%lf\n",a,b,d=a/b);
							else
							printf("除数不能为0!\n");
							break;
		}
		printf("结果为:\n",d);
		printf("继续计算请输入不为1的正数,退出请输入1:\n");
		scanf("%d",&e);
		if(e==1) 
		break;
	}
}

问题分析:在使用for循环的时候遇到了无限循环的问题

实验小结:

在这次实验中,主要是熟悉了if语句和switch语句的使用。主要遇到的问题是在简易计算器的代码部分,特别是循环语句的使用,在同学的帮助下才解决,还是多操作吧!

猜你喜欢

转载自www.cnblogs.com/absolutely-123/p/12573020.html
今日推荐