C language lab report three

C Programming Experiment Report III

Pilot project: Application 4-3-1if statement ; 4-3-2switch-Case of application ; application 4-3-3switch-case nested if statements ; 4-3-4switch-Case structure nested applications ;

4-3-5 analytical procedures ; calculator implementation

Name: Wei Lai

Experimental Location: home

Experiment time: 2020.03.29

1, experimental purposes and requirements

1. Master the C language representation of a logical value (0 for "false" and 1 for "true").
2, learn the proper use of the relationship and logical expressions.
3, to master all forms of if statement syntax and usage matching relationship if and else statements .if methods, and nested if statements.
4, master switch statement syntax and usage, nested note break in a switch statement in usage and switch statements.

Second, the experimental content

1, lab exercises: application example_4_3_1if statement

①、问题的简单描述:无
②、实验代码:
#include<stdio.h>
int main()
{
    int l,w,h;
    printf("请输入箱子的长,宽,高;\n");
    scanf("%d%d%d",&l,&w,&h);
    if(l==w&&l==h&&w==h)
    printf("该箱子是正方体:\n");
    else
    printf("该箱子是长方体:\n");
    return 0;
 } 
③、问题分析:无

2, exercises: example_4_3_2switch-Case

①、问题的简单描述:不进行对变量的注释会让人看不懂代码想表达什么
②、实验代码:
#include<stdio.h>
main()
{
    int a,b,c;/*a表示打印纸的数量,b表示墨盒的数量,c表示光盒的数量*/
    float d,m;/*d表示总额 ,m表示应付款*/ 
    printf("请输入打印纸,墨盒,光盒的数量:");
    scanf("%d%d%d",&a,&b,&c);
    d=18*a+132*b+4.5*c;
    if(d>500)
    {
    m=(1-0.1)*d;
    printf("应付款:%.2f",m);
    }
    else if(d>400&&d<=500)
    {
       m=(1-0.08)*d;
       printf("应付款:%.2f",m); 	
    } 
    else if(d>300&&d<=400)
    {
	    m=(1-0.07)*d;
	    printf("应付款:%.2f",m); 
    }
    else if(d>200&&d<=300)
    {
	    m=(1-0.06)*d;
	    printf("应付款:%.2f",m); 
    }
    else if(d>100&&d<=200)
    {
	    m=(1-0.05)*d;
	    printf("应付款:%.2f",m); 
    }
    else
    {
    m=d;
    printf("应付款:%.2f",m); 
    }
}
③、问题分析:对变量进行适量的注释

3, lab exercises: Application example_4_3_3switch-case nested if statements

①、问题的简单描述:闰年的表达.
②、实验代码:
#include<stdio.h>
int 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:
		    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);
}
③、问题分析:通过查阅资料得出能被4整除不能被一百整除或者能被400整除的为闰年.

4, exercises: example_4_3_4 nested structure of the application

①、问题的简单描述:无
②、实验代码:
#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);
}
③、问题分析:无

5, lab exercises: example_4_3_5 analysis program

①、问题的简单描述:第一个实验结果不是0
②、实验代码Ⅰ:
#include<stdio.h>
int main()
{
    double x=1000/3.0;
    double y=x-333.0;
    double z=3*y-1.0;
    printf("x=%.2lf\n",x);
    printf("y=%.2lf\n",y);
    printf("z=%.2lf\n",z);
    if(z==0)
    printf("z==0.\n");
    else
    printf("z不等于0.\n");
    return 0; 
}
实验代码Ⅱ:
#include<stdio.h>
int 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); 
}
③、问题分析:double是占八个字节,也就是64位,由于小数位数有限,所以得出的结果并不会是0,而是一个十分接近0的小数.

Third, the training project: to achieve calculator

1, design: Compiling a simple computer program can be implemented jointly by the if statement and the statement is addition, subtraction selection switch, thereby achieving the four operations.
2 flowchart:

3. Problems encountered during the design and improvement of methods

第一次实验发现的问题:编译的代码只能够进行一次运算,而不能根据计算器使用者的意愿进行多次计算.
实验代码:
#include<stdio.h>
int main() 
{ 
    int m;
    float x,y,z; 
    char c;
    printf("请输入一个数字\n");
    printf("**输入数字1表示加法运算**\n");
    printf("**输入数字2表示减法运算**\n");
    printf("**输入数字3表示乘法运算**\n");
    printf("**输入数字4表示除法运算**\n");
    scanf("%d,",&m);
    switch(m>=1&&m<=4)
    {
	    case 1:switch (m) 
	    {
	    case 1: c='+'; break;
	    case 2: c='-'; break;
	    case 3: c='*'; break;
	    case 4: c='/'; break;
	    default: printf("you are wrong\n"); break;
	    }
	    printf("请输入两个数x,y\n");
	    scanf("%f%f",&x,&y);
	    switch ( c )
 	    {
	    case '+': z=x+y; break;
	    case '-': z=x-y; break;
	    case '*': z=x*y; break;
	    case '/': z=( y==0 )?(0):(x/y); break;
	    default: z=0; break;
	    }
	    printf("%f%c%f=%f\n",x,c,y,z);break;
	    default:printf("you are wrong\n");
    } 
}
解决方法:可以通过使用for语句或者do,while语句对中心语句进行循环或者停止循环.

4, the code

#include<stdio.h>
int main() 
{ 
    int i,m;
    float x,y,z; 
    char c;
do{
    printf("请输入一个数字\n");
    printf("**输入数字1表示加法运算**\n");
    printf("**输入数字2表示减法运算**\n");
    printf("**输入数字3表示乘法运算**\n");
    printf("**输入数字4表示除法运算**\n");
    scanf("%d,",&m);
    switch(m>=1&&m<=4)
    {
	    case 1:switch (m) 
	    {
	    case 1: c='+'; break;
	    case 2: c='-'; break;
	    case 3: c='*'; break;
	    case 4: c='/'; break;
	    default: printf("you are wrong\n"); break;
	    }
	    printf("请输入两个数x,y\n");
	    scanf("%f%f",&x,&y);
	    switch ( c )
 	    {
	    case '+': z=x+y; break;
	    case '-': z=x-y; break;
	    case '*': z=x*y; break;
	    case '/': z=( y==0 )?(0):(x/y); break;
	    default: z=0; break;
	    }
	    printf("%f%c%f=%f\n",x,c,y,z);break;
	    default:printf("you are wrong\n");
    } 
    printf("是否继续计算,继续请输入1,退出请输入不为1的整数:\n");
    scanf("%d",&i);
  }while(i==1);
}

Fourth, test summary

Gains and losses in this experiment, I learned some basic usage rules for and do, while loop statement, review and consolidate the if statement structure, once again deepen the understanding of logical relationships. Drawback is there are many, for example, when four operations, the divisor can not forget to 0. often distracted when writing code.

Guess you like

Origin www.cnblogs.com/l-w-8-5-7/p/12591746.html