《C语言程序设计》实验报告
学 号 160809206 姓 名 吴渴楨 专业、班 计科16-2班
学 期 2016-2017 第1学期 指导教师 黄俊莲 吴喆
实验地点 C05 机 器 号
上课时间 2016年 10 月 8 日 5 周 周六 1-4 节
截止时间 2016年 10 月 13 日 6 周 周三 晚
实验任务清单 1. 实验2-6 猜数字游戏。
2. 实验2-7 判断能否成为三角形
3. 实验2-8 个人所得税计算器
教师评语
成绩
实验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(void)
{
int myNumber,yourNumber,count=0;
char c;
do{
//指定种子值为现在的时间
srand((unsigned)time(NULL));
//产生[1,100]之间的随机数
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("您在第%d次就猜对了!\n",count);
printf("您真是天才!\n");
}
if(count>=3&&count<8)
{
printf("您在第%d次猜对了!\n",count);
printf("智商正常!\n");
}
if(count>8)
{
printf("您在第%d次猜对了!\n",count);
printf("真是太笨了!\n");
}
printf("继续请按Y/y,退出请按N/n");
getchar();
c=getchar();
system("cls");
}while(c=='Y'||c=='y');
return 0;
运行结果抓图

实验2-7判断能否成为三角形
实验要求:
(1) 输入三角形的三条边,判断能否构成三角形,输出其能否成为三角形。
(2) 若为三角形,请计算出周长和面积并输出。
源码:#include <stdio.h>
#include <math.h>
int main()
{
float a,b,c,D,s,S;
printf("请输入三个数字");
scanf("%f%f%f",&a,&b,&c);
if(a+b>c&&a+c>b&&b+c>a){
D=a+b+c;
s=(a+b+c)/2;
S=sqrt( s*(s-a)*(s-b)*(s-c) );
printf("三角形周长为%.2f",D);
printf("三角形面积为%.2f",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>
#include <math.h>
int main ( )
{
float salary,tax,afterTaxIncome;
printf("请输入您本月的收入总额(元):");
scanf("%f", &salary);
if(3500<salary&&salary<=4500) {
tax=(salary-3500)*0.03-0;
afterTaxIncome=salary-tax;
printf("您本月应缴个人所和税 %.2f 元,税后收入是 %.2f 元。\n", tax, afterTaxIncome);
}
else if(4500<salary&&salary<=8000) {
tax=(salary-3500)*0.1-105;
afterTaxIncome=salary-tax;
printf("您本月应缴个人所和税 %.2f 元,税后收入是 %.2f 元。\n", tax, afterTaxIncome);
}
else if(8000<salary&&salary<=12500) {
tax=(salary-3500)*0.2-555;
afterTaxIncome=salary-tax;
printf("您本月应缴个人所和税 %.2f 元,税后收入是 %.2f 元。\n", tax, afterTaxIncome);
}
else if(12500<salary&&salary<=38500) {
tax=(salary-3500)*0.25-1005;
afterTaxIncome=salary-tax;
printf("您本月应缴个人所和税 %.2f 元,税后收入是 %.2f 元。\n", tax, afterTaxIncome);
}
else if(38500<salary&&salary<=58500) {
tax=(salary-3500)*0.3-2755;
afterTaxIncome=salary-tax;
printf("您本月应缴个人所和税 %.2f 元,税后收入是 %.2f 元。\n", tax, afterTaxIncome);
}
else if(58500<salary&&salary<=835000) {
tax=(salary-3500)*0.35-5505;
afterTaxIncome=salary-tax;
printf("您本月应缴个人所和税 %.2f 元,税后收入是 %.2f 元。\n", tax, afterTaxIncome);
}
else{
tax=(salary-3500)*0.45-13505;
afterTaxIncome=salary-tax;
printf("您本月应缴个人所和税 %.2f 元,税后收入是 %.2f 元。\n", tax, afterTaxIncome);
}
return 0;
源码(使用switch语句完成):
#include <stdio.h>
int main ( )
{
float salary,tax,afterTaxIncome,s,d;
int a;
printf("请输入您本月的收入总额(元):");
scanf("%f", &salary);
if(salary<=4500) {
a=1;
}
else if(4500<salary&&salary<=8000){
a=2;
}
else if(8000<salary&&salary<=12500){
a=3;
}
else if(12500<salary&&salary<=38500){
a=4;
}
else if(38500<salary&&salary<=58500){
a=5;
}
else if(585000<salary&&salary<=83500){
a=6;
}
else {
a=7;
}
printf("您所输入的工资所需要的税收%d级\n",a);
switch(a){
case 1:s=0.03,d=0;break;
case 2:s=0.1,d=105;break;
case 3:s=0.2,d=555;break;
case 4:s=0.25,d=1005;break;
case 5:s=0.3,d=2755;break;
case 6:s=0.35,d=5505;break;
case 7:s=0.45,d=13505;break;
}
tax=(salary-3500)*s-d;
afterTaxIncome=salary-tax;
printf("您本月应缴个人所和税 %.2f 元,税后收入是 %.2f 元。\n", tax, afterTaxIncome);
return 0;
}
运行结果抓图

实验心得
难度还是有的 中途询问了老师 也是磕磕绊绊做完了 上课还是要好好听课 才能顺利的写完作业