一 实验题目,设计思路,实验方法

4-2-4 三天打鱼两天晒网(15 分)

中国有句俗语叫“三天打鱼两天晒网”。假设某人从某天起,开始“三天打鱼两天晒网”,问这个人在以后的第N天中是“打鱼”还是“晒网”?

输入格式:

输入在一行中给出一个不超过1000的正整数N。

输出格式:

在一行中输出此人在第N天中是“Fishing”(即“打鱼”)还是“Drying”(即“晒网”),并且输出“in day N”。

输入样例1:

103

输出样例1:

Fishing in day 103

输入样例2:

34

输出样例2:

Drying in day 34
设计思路:列举出1,2,3,6,7,8..为打鱼,4,5,9,10..为晒网
解决方法:a>=1&&a<=3,并利用if-else语句。
二 源程序

#include<stdio.h>
int main(void)
{
int N,a;
scanf("%d",&N);
a=N%5;
if(a>=1&&a<=3){
printf("Fishing in day %d\n",N);
}
else{
printf("Drying in day %d\n",N);
}
return 0;
}

三 遇到的问题和解决方法:将打鱼的条件表示为(a=1||a=2||a=3),解决方法:a>=1&&a<=3

一 实验题目,设计思路,解决方法

4-2-3 输出三角形面积和周长(15 分)

本题要求编写程序,根据输入的三角形的三条边a、b、c,计算并输出面积和周长。注意:在一个三角形中, 任意两边之和大于第三边。三角形面积计算公式:area=s(sa)(sb)(sc)​​,其中s=(a+b+c)/2。

输入格式:

输入为3个正整数,分别代表三角形的3条边a、b、c。

输出格式:

如果输入的边能构成一个三角形,则在一行内,按照

area = 面积; perimeter = 周长

的格式输出,保留两位小数。否则,输出

These sides do not correspond to a valid triangle

输入样例1:

5 5 3

输出样例1:

area = 7.15; perimeter = 13.00

输入样例2:

1 4 1

输出样例2:

These sides do not correspond to a valid triangle
设计思路:三角形两边之和大于第三遍,有是三角形的也有不是三角形的情况;
解决办法:a<b+c&&b<a+c&&c<a+b,并利用if-else语句。
二 源程序

#include<stdio.h>
#include<math.h>
int main(void)
{
int a,b,c;
double area,perimeter,d;
scanf("%d %d %d",&a,&b,&c);
if(a<b+c&&b<a+c&&c<a+b){
d=(a+b+c)/2;
area=sqrt(d*(d-a)*(d-b)*(d-c));
perimeter=a+b+c;
printf("area = %.2f; perimeter = %.2f\n",area,perimeter);
}
else{
printf("These sides do not correspond to a valid triangle");
}
return 0;
}

三 遇到的问题和解决方法:不明白怎么表示与的逻辑关系和根号的表示方法,看书得知。

一 实验题目,设计思路,解决方案

4-2-2 计算个人所得税(10 分)

假设个人所得税为:税率×(工资−1600)。请编写程序计算应缴的所得税,其中税率定义为:

  • 当工资不超过1600时,税率为0;
  • 当工资在区间(1600, 2500]时,税率为5%;
  • 当工资在区间(2500, 3500]时,税率为10%;
  • 当工资在区间(3500, 4500]时,税率为15%;
  • 当工资超过4500时,税率为20%。

输入格式:

输入在一行中给出非负工资。

输出格式:

在一行输出个人所得税,精确到小数点后2位。

输入样例1:

1600

输出样例1:

0.00

输入样例2:

1601

输出样例2:

0.05

输入样例3:

3000

输出样例3:

140.00

输入样例4:

4000

输出样例4:

360.00

输入样例5:

5000

输出样例5:

680.00
设计思路:用多分支语句将不同情况分开,解决方案:用else-if语句
二 源程序

#include<stdio.h>
int main(void)
{
double a,b;
scanf("%lf",&a);
if (a>=0&&a<=1600){
b=0;
}
else if (a>1600&&a<=2500){
b=0.05*(a-1600);
}
else if (a>2500&&a<=3500){
b=0.1*(a-1600);
}
else if (a>3500&&a<=4500){
b=0.15*(a-1600);
}
else{
b=0.2*(a-1600);
}
printf("%.2lf\n",b);
return 0;
}

三 遇到的问题和解决方法

if,else,else if语句中的关系不正确,没有用到与的逻辑关系符,没有考虑收入为0的情况;

例a>=0&&a<=1600

 心得体会:1遇到不会的要学会利用课本和网上资源;
2注意空格,格式,还有变量的类型,做除法时要注意分母不为零,且注意题目要求输出的格式。