zoukankan      html  css  js  c++  java
  • 《C语言程序设计》实验报告(三)

    C语言程序设计报告

    实验项目:课堂练习4-3-1,4-3-2,4-3-3,4-3-4,4-3-4

    姓名:余永祥 实验地点:家 实验时间:2020年3月25日

    一、实验目的与要求

    1.掌握c语言逻辑值的表示方法,0为假,1为真;

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

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

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

    二、实验内容

    1.实验练习:

    实验4-3-1

    实验代码:

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

    出现问题:由于“lwh”错误判断

    解决方法:改为“lw&&lh&&w==h”

    2.实验练习:

    实验4-3-2

    实验代码:

    #include<stdio.h>
    main()
    {
    	int a,b,c;
    	double x,y;
    	printf("请输入打印纸、墨盒、光盘的数量:");
    	scanf("%d,%d,%d",&a,&b,&c);
    	x=18*a+132*b+4.5*c;
    	switch(x>500)
    	{
    		case 1:y=0.9*x;
    		printf("应付款数=%.2f",y);
    		break;
    		case 0:switch(x>400)
    		{
    			case 1:y=0.92*x;
    			break;
    			case 0:switch(x>300)
    			{
    				case 1:y=0.93*x;
    				break; 
    				case 0:switch(x>200)
    				{
    					case 1:y=0.94*x;
    					break;
    					case 0:switch(x>100)
    					{
    						case 1:y=0.95*x;
    						break;
    						case 0:y=x;
    						break;
    					}
    				}
    			}
    		}
    	}
    	 return 0;
    }
    

    出现问题:switch语句后面只能跟整形

    解决方法:调整

    另一个代码:

    #include<stdio.h>
    #include<limits.h>
    main()
    {
    	int a,b,c;
    	double x,y;
    	printf("请输入打印纸、墨盒、光盘的数量:");
    	scanf("%d,%d,%d",&a,&b,&c);
    	x=18*a+132*b+4.5*c;
    	switch((int)x)
    	{
    		case 500 ... INT_MAX:y=0.9*x;
    		break;
    		case 400 ... 499:y=0.92*x;
    		break;
    		case 300 ... 399:y=0.93*x;
    		break;
    		case 200 ... 299:y=0.94*x;
    		break;
    		case 100 ... 199:y=0.95*x;
    		break;
    		default:printf("输入错误。"); 
    	 } 
    	if(x>0)
    	printf("应付款数=%.2f",y);
    	return 0;
    }
    

    3.实验练习:

    实验4-3-3

    实验代码:

    #include<stdio.h>
    int main()
    {
    	int year,month,days;
    	printf("Please enter year and mmonth:
    ");
    	scanf("%d %d",&year,&month);
    	switch(month)
    	{
    		case 2:if(year%400==0||(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;
    		case 4:
    		case 6:
    		case 9:
    		case 11:days=30;
    	}
    	printf("%d年%d月有%d天。",year,month,days);
    	return 0;
    }
    

    出现问题:频繁的出现语法错误

    解决方法:熟练在中文和英文输入法间及时的切换

    4.实验练习:

    实验4-3-4

    实验代码:

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

    出现问题:break遗漏

    解决方法:熟练

    5.实验练习:

    4-3-5

    实验代码:

    #include<stdio.h>
    int main()
    {
    	
    	int num=20;
    	//出错5<num<10的原因是运算符优先级,先计算5<num的值为1 ,原式变为1<10 
    	printf("%d",5<num<10) ;
    	if(5<num&&num<10)
    		printf("%d in range(5,10)!
    ",num);
    	else
    		printf("%d out range(5,10)!
    ",num);
    		
    	
    	double x=1000/3.0;
    	double y=x-333.0;
    	double z=3*y-1.0;
    	printf("x=%.64lf
    ",x);
    	printf("y=%.64lf
    ",y);
    	printf("z=%.64lf
    ",z);
    	if(z==0) printf("z==0
    ");
    		else printf("z不等于0
    ");
    		
    	
    	return 0;
    	
    }
    

    出现问题:无

    解决方法:无

    三、计算机设计

    第一版

    #include<stdio.h>
    main()
    {
    	float x,y,z;
    	char c,f;
    	do
    	{
    	printf("请输入依次数字、符号、数字:
    ");
    	scanf("%f%c%f",&x,&c,&y);
    	switch(c)
    	{
    		case'+':z=x+y;
    		printf("计算结果为:%f
    ",z);
    		break;
    		case'-':z=x-y;
    		printf("计算结果为:%f
    ",z);
    		break;
    		case'/':z=x/y;
    		printf("计算结果为:%f
    ",z);
    		break;
    		case'*':z=x*y;
    		printf("计算结果为:%f
    ",z);
    		break;
    		default:printf("输入错误.
    ");
    	}
    	printf("输入r继续,其他退出
    ");
    	scanf("%c",&f);
    }while(f='r')
    }
    

    问题:难以循环

    第二版

    #include<stdio.h>
    #include<conio.h>
    int main()
    {
    	float x,y,z;
    	char c,f;
    	do
    	{
    		cxks:printf("请输入依次数字、符号、数字:
    ");
    		scanf("%f%c%f",&x,&c,&y);
    		switch(c)
    		{
    			case'+':z=x+y;
    			printf("计算结果为:%f
    ",z);
    			break;
    			case'-':z=x-y;
    			printf("计算结果为:%f
    ",z);
    			break;
    			case'/':z=x/y;
    			printf("计算结果为:%f
    ",z);
    			break;
    			case'*':z=x*y;
    			printf("计算结果为:%f
    ",z);
    			break;
    			default:printf("输入错误.
    ");
    		}
    		printf("按下任意键继续,Esc退出:
    ");
    		while(getchar()!='
    ');
    		//scanf("%c",&f);
    		f=getch();
    	}while(f!=27);
    	
    
    	return 0;
    }
    

    四、实验小结

    收获:

    1.对选择的语句更熟悉了,对switch的了解加深;

    2.学会了对付一些不同的递进选择的程序;

    3.学会了分析一点的差错,比如,实验4-3-2中,如果输入错误,应该不输出y的值,所以加了if(x>0)这句,来调整输出,更加严谨;

    4.对C语言更加熟悉了。

    不足:

    1.一开始时常忘记switch()中为整形数据;

    2.break时常遗漏,导致程序出错;

    3.对case后跟的数据不了解,应该为常数。

  • 相关阅读:
    较新版FlowPortal BPM不能回车登录
    数据库 master拒绝了 create database 权限
    (FFOS Gecko & Gaia) OTA
    (FFOS Gecko & Gaia) OTA
    (FFOS Gecko & Gaia) OTA
    (FFOS Gecko & Gaia) OTA
    (FFOS Gecko & Gaia) OTA
    (FFOS Gecko & Gaia) OTA
    (FFOS Gecko & Gaia) IPC
    (FFOS Gecko) Telemetry
  • 原文地址:https://www.cnblogs.com/GZ-1128-XZ/p/12595667.html
Copyright © 2011-2022 走看看