目录
一、利润计算
解题思路:
方法一代码如下:
代码理解:
方法二代码如下:
代码理解:
两种解法比较:
优点:
缺点:
二、成绩评定
解题思路:
方法一代码如下:
代码理解:
方法二代码如下:
代码理解:
一、利润计算
解题思路:
- 用判断语句 if () else if () else
- 用switch函数 switch(){case 1: //命令 break; default: //命令}
方法一代码如下:
#include <stdio.h>
int main()
{
double a,p;
scanf("%lf",&a);
if (a>=0 && a<=100000)
p=a*0.1;
else if(a>100000 && a<=200000)
p=100000*0.1+(a-100000)*0.075;
else if(a>200000 && a<=400000)
p=100000*0.175+(a-200000)*0.05;
else if(a>400000 && a<=600000)
p=100000*0.175+200000*0.05+(a-400000)*0.03;
else if(a>600000 && a<=1000000)
p=100000*0.175+200000*0.05+200000*0.03+(a-600000)*0.015;
else
p=100000*0.175+200000*0.05+200000*0.03+400000*0.015+(a-1000000)*0.01;
printf("%.0lf\n",p);
return 0;
}
代码理解:
首先可以根据题意判断出像分段函数一样来进行分类,这时就可以运用“if 、else if、else”结构,这样就可以将情况分开计算,剩下就是简单的输入输出函数,将所需对应的值进行打印出来。
方法二代码如下:
#include<stdio.h>
int main()
{
int a,p;
scanf("%d",&a);
switch(a/100000)
{
case 0:
p=a*0.1;
break;
case 1:
p=100000*0.1+(a-100000)*0.075;
break;
case 2:
case 3:
p=100000*0.1+100000*0.075+(a-200000)*0.05;
break;
case 4:
case 5:
p=100000*0.1+100000*0.075+200000*0.05+(a-400000)*0.03;
break;
case 6:
case 7:
case 8:
case 9:
p=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(a-600000)*0.015;
default:
p=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(a-1000000)*0.01;
}
printf("%d",p);
return 0;
}
代码理解:
运用了switch分支语句,这样我们应该先对输入值进行判断一下属于“case 几”然后直接输入很短的数字即可,可以节省时间以及便于理解。我们可以对于非常大的基数来进行预处理一下,就比如我都是先除十万然后再进行属于哪种情况,最后也是一样的输入输出函数,打印所需值。
两种解法比较:
第一种方法
优点:更加通俗易懂,可以直接进行分类,再进行表达式的运行
缺点:数字较大,容易造成用户输入错误,编写代码时也更加麻烦。
第二种方法
优点:
更加快捷简便,对于输入数值方面都更加的方便
缺点:
运用不好容易出错,有可能会导致整个程序都错误,应该熟练运用break等
二、成绩评定
解题思路:
仍是类似分段函数样式,只不过是符合某个条件就直接进行下面字母的打印,所以只需要写出“if 、else if、else”结构和printf打印函数即可
方法一代码如下:
#include<stdio.h>
int main()
{
int a;
scanf_s("%d", &a);
if (a >= 90)
if (a <= 100)
printf("A\n");
if (a >= 80)
if (a <= 89)
printf("B\n");
if (a >= 70)
if (a <= 79)
printf("C\n");
if (a >= 60)
if (a <= 69)
printf("D\n");
if (a < 60)
printf("E\n");
return 0;
}
代码理解:
对于输入不同数值,让系统通过if语句来判断执行哪个语句,两个if语句是我第一次做这个程序时候用的,可以使用&&来省略一下,使代码变得更加简化,更加直观。
方法二代码如下:
#include<stdio.h>
int main()
{
int a;
scanf("%d",&a);
switch(a/10)
{
case 10:
case 9:
putchar('A');
break;
case 8:
putchar('B');
break;
case 7:
putchar('C');
break;
case 6:
putchar('D');
break;
default:
putchar('E');
}
}
代码理解:
和上一道题原理基本相似,通过满分百分的分数除以十通过判断结果所在范围,从而确定分数所在范围,进而打印相应的等级。
更多推荐
【暑假自学C语言】 --8 练习题详解(分段函数)
发布评论