作业3 李想 160809217
《C语言程序设计》实验报告
学 号 |
160809217 |
姓 名 |
李想 |
专业、班 |
计科16-2班 |
|
学 期 |
2016-2017 第1学期 |
指导教师 |
黄俊莲 吴喆 |
|||
实验地点 |
C05 |
机 器 号 |
|
|||
上课时间 |
2016年 10 月 8 日 5 周 周六 1-4 节 |
|||||
截止时间 |
2016年 10 月 13 日 6 周 周三 晚 |
|||||
实验任务清单 |
|
|||||
教师评语
|
成绩 |
|||||
|
||||||
实验2 选择结构程序设计进阶
实验2-6 猜数字游戏
实验要求:
编写一个C程序实现一个[1-100]以内的猜数字游戏。
(1) 系统随机产生一个[1-100]之间的随机数。
(2) 输入任意一个数字。数字的要求是1—100的自然数即可。
(3) 系统对您输入的数字进行判断。如果玩家输入的数字与计算机随机生成数相比较, 输入的数字比随机生成数小,系统将提示您,数字太小请您重新输入。如果玩家输入的数字与计算机随机生成数相比较,如果输入的数字比随机生成数大,系统将提示您,数字太大请您重新输入。如果玩家输入的字符不是合法字符,系统将提示您,您输入的数字不合法,请重新输入。 如果两个数字相同,输出“恭喜您,猜对了!”。
(4) 每猜测一次,系统会记录下来,游戏结束后,显示共猜测多少次。
(5) 游戏结束后,根据所猜次数,给出评语(3次内猜出来的,天才!,4-7次猜出来的,智力正常,8次以上猜出来的,笨)。
(6) 可以在下面程序的基本框架基础上完成,如需其他变量自行增加源码
参考:
#include <stdio.h>
#include <stdlib.h>
//猜数字游戏
int main()
{
int myNumber,yourNumber,count=0;
char c;
do{
//指定种子值为现在的时间
srand((unsigned)time(NULL));
//产生[1,100]这间的随机数
myNumber = (rand() % (101 - 1)) + 1;
do{
printf("请输入您猜想的数值:");
scanf("%d",&yourNumber);
//请在此输入代码,猜数字,并给予提示,同时记录次数
//……
}while(yourNumber!=myNumber);
printf("您一共猜了%d次\n",count);
//请在此输入代码,根据用户猜的次数给予评价
//……
printf("继续请按Y/y,退出请按N/n:");
getchar();
c=getchar();
system("cls"); //清屏函数
}while(c=='Y' || c=='y');
return 0;
}
源码:
#include<stdio.h> #include<stdlib.h> #include<time.h> int main() { int yournumber,mynumber,count=0; char c; do { srand((unsigned)time(NULL)); mynumber=(rand()%(101-1)+1); do { printf("请输入您所猜的数字:"); scanf("%d",&yournumber); count++; if(yournumber>mynumber) printf("对不起,您猜大了,请重新输入\n"); else if (yournumber<mynumber) printf("对不起,您猜小了,请重新输入\n"); else if(yournumber==mynumber) printf("恭喜您,猜对了:\n"); else printf("您输入的数字不合法,请重新输入:\n"); }while(yournumber!=mynumber); printf("您一共猜了:%d次\n",count); if(count<=3) printf("太棒了!您太厉害了!\n"); else if(count>4 && count<=7) printf("您已经很厉害了呦\n"); else printf("不要灰心,还是可以的\n"); printf("继续请按y/Y,退出请按n/N"); getwchar(); c=getwchar(); system("cls"); } while(c=='y'||c=='Y'); return 0; }
运行结果抓图
实验2-7判断能否成为三角形
实验要求:
(1) 输入三角形的三条边,判断能否构成三角形,输出其能否成为三角形。
(2) 若为三角形,请计算出周长和面积并输出。
源码:
#include<stdio.h> #include<math.h> int main() { int a,b,c,o,p,s; printf("请输入三个数:\n"); scanf("%d%d%d",&a,&b,&c); if(a+b>c&&a-b<c) { o=a+b+c; p=(a+b+c)/2; s=sqrt(p*(p-a)*(p-b)*(p-c)); printf("您输入的三个数构成的三边可以形成三角形\n"); printf("此三角形的周长为:%d\n面积为:%d",o,s); } else printf("您输入的三个数构成的三边不可以形成三角形\n"); return 0; }
运行结果抓图
实验2-8 个人所得税计算器
实验要求:
编写选择结构程序,输入个人月收入总额,计算出他本月应缴税款和税后收入(计算办法见附:个人税率表)。
(1) 分别用if语句和switch语句完成;
(2) 可以在下面程序的基本框架基础上完成,如需其他变量自行增加源码:
#include <stdio.h>
int main ( )
{
float salary,tax=0,afterTaxIncome=0;
printf("请输入您本月的收入总额(元):");
scanf("%f", &salary);
// 下面求解应缴个人所和税tax和税后收入afterTaxIncome
printf("您本月应缴个人所和税 %.2f 元,税后收入是 %.2f 元。\n", tax, afterTaxIncome);
return 0;
}
附:个人税率表
2011年9月1日起调整后,也就是2012年实行的7级超额累进个人所得税税率表
应纳个人所得税税额= 应纳税所得额× 适用税率- 速算扣除数
扣除标准3500元/月(2011年9月1日起正式执行)(工资、薪金所得适用)
个税免征额3500元 (工资薪金所得适用)
级数 |
全月应纳税所得额(含税级距)【税率资讯网提供】 |
全月应纳税所得额(不含税级距) |
税率(%) |
速算扣除数 |
1 |
不超过1,500元 |
不超过1455元的 |
3 |
0 |
2 |
超过1,500元至4,500元的部分 |
超过1455元至4155元的部分 |
10 |
105 |
3 |
超过4,500元至9,000元的部分 |
超过4155元至7755元的部分 |
20 |
555 |
4 |
超过9,000元至35,000元的部分 |
超过7755元至27255元的部分 |
25 |
1,005 |
5 |
超过35,000元至55,000元的部分 |
超过27255元至41255元的部分 |
30 |
2,755 |
6 |
超过55,000元至80,000元的部分 |
超过41255元至57505元的部分 |
35 |
5,505 |
7 |
超过80,000元的部分 |
超过57505元的部分 |
45 |
13,505 |
注:
例如:某人某月工资减去社保个人缴纳金额和住房公积金个人缴纳金额后为5500 元,个税计算:(5500-3500)*10%-105=95元
源码(使用if语句完成):
#include<stdio.h> int main() { float salary,tax=0,TaxIncome=0; printf("请输入您的工资(元):"); scanf("%f",&salary); if(salary<=1455) { tax=(salary-3500)*0.03-0; TaxIncome=salary-tax; } else if(salary>1455 || salary<=4155) { tax=(salary-3500)*0.1-105; TaxIncome=salary-tax; } else if(salary>4155 || salary<=7755) { tax=(salary-3500)*0.2-555; TaxIncome=salary-tax; } else if(salary<7755 || salary<=27255) { tax=(salary-3500)*0.25-1005; TaxIncome=salary-tax; } else if(salary>27255 || salary<=41255) { tax=(salary-3500)*0.3-2755; TaxIncome=salary-tax; } else if(salary>41255 || salary<=57505) { tax=(salary-3500)*0.35-5505; TaxIncome=salary-tax; } else { tax=(salary-3500)*0.45-13505; TaxIncome=salary-tax; } printf("您本月应缴税为:%f\n您本月应的税后收入为:%f\n",tax,TaxIncome); return 0; }
源码(使用switch语句完成):
#include<stdio.h> int main() { float s,tax=0,TaxIncome=0; int a; printf("请输入您的工资(元):\n"); scanf("%f",&s); if(s<=1455) a=1; else if(s>1455&&s<=4155) a=2; else if(s>4155&&s<=7755) a=3; else if(s>7755&&s<=27255) a=4; else if(s>27255&&s<=41255) a=5; else if(s>41255&&s<=57505) a=6; else a=7; switch(a) { case 1:printf("tax=(s-3500)*0.03 TaxIncome=s-tax\n"); break; case 2:printf("tax=(s-3500)*0.1 TaxIncome=s-tax\n");break; case 3: printf("tax=(s-3500)*0.2 TaxIncome=s-tax\n");break; case 4:printf("tax=(s-3500)*0.25 TaxIncome=s-tax\n"); break; case 5:printf("tax=(s-3500)*0.3 TaxIncome=s-tax\n");break; case 6: printf("tax=(s-3500)*0.35 TaxIncome=s-tax\n");break; default:printf("tax=(s-3500)*0.45 TaxIncome=s-tax\n");break; } printf("您本月应交税:%f\n交税后您的收入为:%f\n"); return 0; }
运行结果抓图
实验心得
这次作业让我更加体会到的是c语言的连贯性,看着自己不知不觉从几行打到十几行再到几十行,可能用到的知识技巧不多,但当把很多点融汇在一起的时候。还是有小小的骄傲感。
所以不断温故知新,综合以前的知识方法到新的情景,完成新的任务才是良方。
问题:作业最后一题的switch语句还是存在问题找不出来。。。
先把作业上传,再看看书吧。。