第三章 作业

This commit is contained in:
xtaodada 2021-10-30 00:05:32 +08:00
parent 02faf4462e
commit 2a6c52c460
No known key found for this signature in database
GPG Key ID: EE4DC37B55E24736
10 changed files with 291 additions and 0 deletions

24
03-1/1/1.c Normal file
View File

@ -0,0 +1,24 @@
#include<stdio.h>
int month2day(int year,int month){
int tmp[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
if (year % 4 == 0)tmp[1]++;
return tmp[month-1];
}
int main(){
int year,month,day;
printf("Input year, month, day: \n");
scanf("%d %d %d",&year,&month,&day);
for(;month>1;month--){
day += month2day(year,month);
}
printf("Days of year: %d",day);
return 0;
}

33
03-1/1/README.md Normal file
View File

@ -0,0 +1,33 @@
【问题描述】
输入日期(年、月、日),输出它是该年的第几天。
【输入形式】
从键盘输入一个日期。
【输入输出样例1】下划线部分表示输入
Input year, month, day: 1981 3 1
Days of year: 60
【样例说明】
输入提示符后要加一个空格。例如"Input n: ",其中":"后要加一个且只能一个空格。
英文字母区分大小写。必须严格按样例输入输出。
# 运行结果
成功通过编译, 且无编译警告
共有测试数据:3
平均占用内存:1.946K
平均CPU时间:0.00606S
平均墙钟时间:0.00607S
测试数据 评判结果
测试数据1 完全正确
测试数据2 完全正确
测试数据3 完全正确

24
03-1/2/2.c Normal file
View File

@ -0,0 +1,24 @@
#include<stdio.h>
int main()
{
int deduction;
float salary,tax,rate;
scanf("%f",&salary);
if(salary<=3500){rate=0;deduction=0;}
else if(salary<=5000){rate=0.03;deduction=0;}
else if(salary<=8000){rate=0.1;deduction=105;}
else if(salary<=12500){rate=0.2;deduction=555;}
else if(salary<=38500){rate=0.25;deduction=1005;}
else if(salary<=58500){rate=0.3;deduction=2755;}
else if(salary<=83500){rate=0.35;deduction=5505;}
else {rate=0.45;deduction=13505;}
tax = rate * salary - rate * 3500 - deduction;
printf("%.2f",tax);
return 0;
}

64
03-1/2/README.md Normal file
View File

@ -0,0 +1,64 @@
【问题描述】 2011年开始实行新个人所得税法要求输入月薪salary输出应交的个人所得税 tax (保留两位小数)。
```
新税法方案如下:
tax=rate*(salary-3500) - deduction
当 salary<=3500时rate=0、deduction=0;
当 3500<salary<=5000时,rate=3%、deduction=0;
当 5000<salary<=8000时,rate=10%、deduction=105;
当 8000<salary<=12500时,rate=20% deduction=555;
当 12500<salary<=38500时, rate=25% deduction=1005;
当 38500<salary<=58500时, rate=30% deduction=2755;
当 58500<salary<=83500时, rate=35% deduction=5505;
当 83500<salary时, rate=45% deduction=13505;
```
【输入输出样例1】下划线部分表示输入
Enter the salary: <u>5010.87</u>
tax=46.09
【输入输出样例2】下划线部分表示输入
Enter the salary: <u>32098.76</u>
tax=6144.09
【输入输出样例3】下划线部分表示输入
Enter the salary: <u>3000</u>
tax=0.00
【输入输出样例4】下划线部分表示输入
Enter the salary: <u>59000</u>
tax=13920.00
【输入输出样例5】下划线部分表示输入
Enter the salary: <u>84500</u>
tax=22945.00
【样例说明】
输入提示符后要加一个空格。例如`Enter the salary : ` ,其中:后要加一个且只能一个空格。
输出语句的=两边无空格。
英文字母区分大小写。必须严格按样例输入输出。
# 运行结果
成功通过编译, 且无编译警告
共有测试数据:5
平均占用内存:1.996K
平均CPU时间:0.00632S
平均墙钟时间:0.00632S
测试数据 评判结果
测试数据1 完全正确
测试数据2 完全正确
测试数据3 完全正确
测试数据4 完全正确
测试数据5 完全正确

14
03-1/3/3.c Normal file
View File

@ -0,0 +1,14 @@
#include<stdio.h>
int main(){
float a,b,c;
scanf("%f %f %f",&a,&b,&c);
if(a==b && a==c ){printf("equilateral triangle");return 0;}
if(a==b || a==c){printf("isoceles triangle");return 0;}
if(a*a+b*b == c*c || a*a+c*c == b*b || b*b+c*c == a*a){printf("right-angled triangle");return 0;}
if(a+b>c && a+c>b && b+c>a){printf("arbitrary triangle");return 0;}
printf("It isn't triangle");
return 0;
}

53
03-1/3/README.md Normal file
View File

@ -0,0 +1,53 @@
【问题描述】 从键盘输入三角形的三条边长,判断能否构成三角形,如能构成三角形,则判断是哪一种类型:等腰三角形(等腰直角算作等腰)、等边三角形、直角三角形、任意三角形。输出要求如下:
不是三角形,则输出: It isn't triangle.
等腰三角形,则输出: isoceles triangle
等边三角形,则输出: equilateral triangle
直角三角形,则输出: right-angled triangle
任意三角形,则输出: arbitrary triangle
【输入形式】
从键盘输入三角形的三条边长(实数)。
【输出形式】
不是三角形,则输出: It isn't triangle.
等腰三角形,则输出: isoceles triangle
等边三角形,则输出: equilateral triangle
直角三角形,则输出: right-angled triangle
任意三角形,则输出: arbitrary triangle
【样例输入1】 1 2 3
【样例输出1】 It isn't triangle
【样例输入2】 3.3 4.4 5.5
【样例输出2】 right-angled triangle
【样例输入3】 9.8995 14 9.8995
【样例输出3】 isoceles triangle
# 运行结果
成功通过编译, 且无编译警告
共有测试数据:5
平均占用内存:1.965K 平均CPU时间:0.00551S 平均墙钟时间:0.00553S
测试数据 评判结果
测试数据1 完全正确
测试数据2 完全正确
测试数据3 完全正确
测试数据4 完全正确
测试数据5 完全正确

22
03-1/4/4.c Normal file
View File

@ -0,0 +1,22 @@
#include<stdio.h>
int main(){
int choice;
char *names[] = {"apples", "pears", "oranges", "grapes"};
float price[4] = {3.0,2.5,4.1,10.2};
printf("[1] apples\n[2] pears\n[3] oranges\n[4] grapes\n[0] exit\n");
for(int i=0;i<5;i++){
printf("Enter choice: \n");
scanf("%d",&choice);
if(choice==0){break;}
else if(choice > 0 && choice < 5){printf("[%d] %s price=%.1f\n",choice,names[choice-1],price[choice-1]);}
else {printf("other price=0.0\n");}
}
printf("Thanks");
return 0;
}

49
03-1/4/README.md Normal file
View File

@ -0,0 +1,49 @@
【问题描述】
查询水果的单价?有4 种水果,苹果(apple)?梨(pear)?橘子(orange)
和葡萄(grape),单价分别为3.00 元/千克,2.50 元/千克,4.10 元/千克
和10.20 元/千克?在屏幕上显示以下菜单(编号和选项),用户可以连续
查询水果的单价,当查询次数超过5 次时,自动退出查询;不到5次时,
用户可以选择退出?当用户输入编号1 ~4,显示相应水果的单价
(保留1 位小数);输入0,退出查询;输入0 ~4 之外的其他编号,显示
价格为0 最后退出时显示Thanks。
【输入形式】
输入水果编号。
【输入输出样例】(下划线部分表示输入)
```
[1] apples
[2] pears
[3] oranges
[4] grapes
[0] exit
Enter choice: <u>1</u>
[1] apples price=3.0
Enter choice: <u>5</u>
other price=0.0
Enter choice: <u>4</u>
[4] grapes price=10.2
Enter choice: <u>0</u>
Thanks
```
【样例说明】
输入提示符后要加一个空格。例如Enter choice: ,其中:后要加一个且只能一个空格。
输出语句的=两边无空格。
英文字母区分大小写。必须严格按样例输入输出。
# 运行结果
成功通过编译, 且无编译警告
共有测试数据:1
平均占用内存:1.945K
平均CPU时间:0.00717S
平均墙钟时间:0.00719S
测试数据 评判结果
测试数据1 完全正确

3
03-1/README.md Normal file
View File

@ -0,0 +1,3 @@
# 第三章 作业
> 作业时间: 2021-10-27 21:04:00 至 2021-11-07 23:55:00

View File

@ -28,3 +28,8 @@ A repo to record my study life.
- [1. 求分段函数的值](https://github.com/xtaodada/C-study/tree/master/03/1)
- [2. 求解四则运算表达式](https://github.com/xtaodada/C-study/tree/master/03/2)
- [3. 能否被3,5,7整除](https://github.com/xtaodada/C-study/tree/master/03/3)
- [第三章 作业](https://github.com/xtaodada/C-study/tree/master/03-1)
- [1. 输出某日期为该年的第几天](https://github.com/xtaodada/C-study/tree/master/03-1/1)
- [2. 计算个人所得税](https://github.com/xtaodada/C-study/tree/master/03-1/2)
- [3. 判断三角形](https://github.com/xtaodada/C-study/tree/master/03-1/3)
- [4. 查询水果单价](https://github.com/xtaodada/C-study/tree/master/03-1/4)