简单算法& 分支结构实验

c语言实验报告

姓名:邓文超 实验地点:宿舍

1. 实验项目3.3.1

代码:

    #include<stdio.h>
    main()
    {
float x,y;
printf("请输入x的值:");
scanf("%f",&x);
if(x<1)
y=x;
else if(x<10)
y=2*x-1;
else
y=3*x-1;
printf("y的值为:%.1f",y);
    }  

问题描述: 每次都会忘记加'&',经常出问题就是这里。
解决办法:多敲代码,代码运行出现问题时检查是否是未加'&'的原因。

2. 实验项目3.3.2

代码:

 #include<stdio.h>
  main()
   {
int h,f,x,y;
printf("鸡兔的总头数为:");
scanf("%d",&h);
printf("鸡兔的总脚数为:");
scanf("%d",&f);
if(h>0&&f>0)
{	
x=(4*h-f)/2;
y=(f-2*h)/2;
printf("鸡的数量为:%d\n",x);
printf("兔的数量为:%d",y);
}
    }

问题描述:会忘记加';',判断语句中的‘且’为'&&'
解决方法:忘记加';'的情况已经很少了,说明自己敲代码更加熟练了,在者判断语句要牢记。

3. 实验项目3.3.3

代码:

  #include<stdio.h>
  #include<math.h>
  main()
  {
int h=10;
float x1=2,y1=2,x2=-2,y2=2,x3=-2,y3=-2,x4=-2,y4=-2,x,y,d1,d2,d3,d4;
printf("请输入一个点(x,y):");
scanf("%.1f,%.1f",&x,&y);
d1=sqrt((x-x1)*(x-x1)+(y-y1)*(y-y1));
d2=sqrt((x-x2)*(x-x2)+(y-y2)*(y-y2));
d3=sqrt((x-x3)*(x-x3)+(y-y3)*(y-y3));
d4=sqrt((x-x4)*(x-x4)+(y-y4)*(y-y4));
if(d1>1&&d2>1&&d3>1&&d4>1)
h=0;
printf("该塔的高度为:%d",h);
   } 

问题描述:敲代码的速度慢,打快了又容易出错。
解决方法:多敲代码寻找感觉。

4. 实验项目 模拟简单计算器

代码:

  #include<stdio.h>
  main()
  {
float x,y;
char op;
printf("请输入表达式:");
scanf("%f%c%f",&x,&op,&y);
switch(op)
  {
     case '+':
           printf("%.2f%c%.2f=%.2f\n",x,op,x+y);break;
 case '-':
           printf("%.2f%c%.2f=%.2f\n",x,op,x-y);break;
 case '*':
           printf("%.2f%c%.2f=%.2f\n",x,op,x*y);break;
 case '/':
 	       if (y!=0)
           {
		   printf("%.2f%c%.2f=%.2f\n",x,op,x/y);break;
		   }
		   else
		   {
		    printf("除数为零!\n");break;
		   }
 default : 
           printf("表达式有错误!");					 
}
  } 

问题描述:switch语句里面会忘记加'break'。
解决方法:多练练switch语句,形成加'break'的习惯。

5. 实验项目4.3.1

代码:

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

问题描述:判断语句中会混淆'=='和'='。
解决方法:打代码时多注意自己以前经常犯的错误,有意识地去纠正。

6. 实验项目4.3.2

代码:

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

问题描述:还不能很好地盲打敲键盘。
解决方法:多用金山打字通练习打字。

7. 实验项目4.3.3

代码:

    #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 :
	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);
    }

问题描述:运行过程中老是出错,检查了很久才发现是前后变量不一致,days写成了day。
解决方法:出现错误时,不能放过一个小的细节。

实验小结

本次实验课中,我对if语句和switch语句掌握地更全面了,对出现的错误有基本的方向去检查,学会了调试的方法对于寻找问题更加快捷。

思维导图

posted @ 2021-04-20 23:21  nswz  阅读(108)  评论(1编辑  收藏  举报