简单算法& 分支结构实验
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语句掌握地更全面了,对出现的错误有基本的方向去检查,学会了调试的方法对于寻找问题更加快捷。