上海海事大学自动化专业C语言课程代码参考(第五周)
由于一些事情耽误了上周的作业,这周补上
非常抱歉第五周的作业拖到了第六周才写,因为第五周有电赛,耽误了不少时间,非常抱歉。
目录
上机实验
教材P72四、1
这次把题目截图摆上了(赞赏
与之前的题一样,是对ASCII码的考察。通过翻阅ASCII码表可以知道,数字的ASCII码在0x30~0x39之间,并且对应0~9。那么这题就很简单了,只需要判断是否处于这个区间并减去0x30就是转换成的数字。如下:
if(c >= 30 && c <= 39) c -= 0x30;
这里出现了新的运算符&&,这是逻辑运算符,可以查看这里。简单来说&&就是只有左右条件都为真则结果为真。
在此最好换行,不过原题目没换行,我也就不换行了
教材P72四、2
这一题在于对数据位数的判断。有两种思路,一种是除100、10后判断结果是否为0;另一种是直接与100、10比较。都可以判断,在此我选择了后者。如下:
if(a > 100)
else if(a > 10)
else
3-1 及格了吗
本题要求编写程序, 判定一个百分制成绩是否及格了。判定规则:
- 大于等于60为“及格”;
输入格式:
输入在一行中给出一个整数的百分制成绩。
输出格式:
在一行中输出对应的判定结果。
输入样例1:
85
输出样例1:
及格
简单的if判断,直接看代码吧
#include <stdio.h>
int main()
{
int a;
scanf("%d", &a);
if(a >= 60)
printf("及格");
return 0;
}
3-2 及格还是不及格
本题要求编写程序,判定一个百分制成绩是否及格。判定规则:
- 大于等于60为“及格”;
- 小于60为“不及格” 。
输入格式:
输入在一行中给出一个整数的百分制成绩。
输出格式:
在一行中输出对应的判定结果。
输入样例1:
85
输出样例1:
及格
输入样例2:
51
输出样例2:
不及格
啊……好像就比上一题多了一点点(比划,直接看代码吧
#include <stdio.h>
int main()
{
int a;
scanf("%d", &a);
if(a >= 60)
printf("及格");
else
printf("不及格");
return 0;
}
3-3 计算绝对值
本题目要求编程,计算下列分段函数 y=|x|的值,其中x与y都保留1位小数。
输入格式:
输入在一行中给出实数x。
输出格式:
在一行中按“|x| = y”的格式输出,
输入样例1:
7
输出样例1:
|7.0| = 7.0
输入样例2:
-3
输出样例2:
|-3.0|
=
3.0
简单的判断,直接看代码
#include <stdio.h>
int main()
{
float a;
scanf("%f", &a);
if(a >= 0)
printf("|%.1f| = %.1f", a, a);
else
printf("|%.1f| = %.1f", a, -a);
return 0;
}
3-4 计算分段函数(一)
本题要求编程,计算下列分段函数f(x)的值:
输入格式:
输入在一行中给出实数x。
输出格式:
在一行中按“f(x) = result”的格式输出,其中x与result都保留一位小数。
输入样例1:
10
输出样例1:
f(10.0) = 0.1
输入样例2:
0
输出样例2:
f(0.0)
=
0.0
注意,在C里面分母为0是会出错的。咱来尝试一下,输出了这个
所以要规避这种情况,得判断是否输入为0。直接看代码吧
#include <stdio.h>
int main()
{
float a;
scanf("%f", &a);
if(a == 0)
printf("f(%.1f) = %.1f", a, 0);
else
printf("f(%.1f) = %.1f", a, 1/a);
return 0;
}
3-5 计算分段函数(二)
本题要求编程,计算下列分段函数f(x)的值:
注:可在头文件中包含math.h
,并调用sqrt
函数求平方根,调用pow
函数求幂。
输入格式:
输入在一行中给出实数x。
输出格式:
在一行中按“f(x) = result”的格式输出,其中x与result都保留两位小数。
输入样例1:
10
输出样例1:
f(10.00) = 3.16
输入样例2:
-0.5
输出样例2:
f(-0.50) = -2.75
和前几题一样。直接看代码
#include <stdio.h>
#include <math.h>
int main()
{
float a;
scanf("%f", &a);
if (a >= 0)
printf("f(%.2f) = %.2f", a, sqrt(a));
else
printf("f(%.2f) = %.2f", a, (pow((a + 1), 2) + 2 * a + 1 / a));
return 0;
}
3-6 成绩转换(一)
本题要求编写程序,将一个百分制成绩转换为二分制成绩。转换规则:
- 大于等于60分为A;
- 小于60为B。
输入格式:
输入在一行中给出一个整数的百分制成绩。
输出格式:
在一行中输出对应的二分制成绩。
输入样例:
82
输出样例:
A
在3-2的基础上改改就好了。看代码
#include <stdio.h>
int main()
{
int a;
scanf("%d", &a);
if(a >= 60)
printf("A");
else
printf("B");
return 0;
}
3-7 分段计算居民水费
本题要求编写程序,为鼓励居民节约用水,自来水公司采取按用水量阶梯式计价的办法,居民应交水费y(元)与月用水量x(吨)相关:当x不超过15吨时,y=4x/3;超过后,y=2.5x−17.5。请编写程序实现水费的计算。
输入格式:
输入在一行中给出非负实数x。
输出格式:
在一行输出应交的水费,精确到小数点后2位。
输入样例1:
12
输出样例1:
16.00
输入样例2:
16
输出样例2:
22.50
和上面的分段函数一样。拿过来改改就好了
#include <stdio.h>
int main()
{
float a;
scanf("%f", &a);
if (a > 15)
printf("%.2f", a * 4 / 3);
else
printf("%.2f", 2.5 * a - 17.5);
return 0;
}
3-8 超速判断
本题要求编写程序,模拟交通警察的雷达测速仪。输入汽车速度,如果速度超出60 mph,则显示“Speeding”,否则显示“OK”。
输入格式:
输入在一行中给出1个不超过500的非负整数,即雷达测到的车速。
输出格式:
在一行中输出测速仪显示结果,格式为:Speed: V - S
,其中V
是车速,S
或者是Speeding
、或者是OK
。
输入样例1:
40
输出样例1:
Speed: 40 - OK
输入样例2:
75
输出样例2:
Speed:75-Speeding
和判断成绩一样。见代码
#include <stdio.h>
int main()
{
int a;
scanf("%d", &a);
if(a > 60)
printf("speed:%d - Speeding", a);
else
printf("speed:%d - OK", a);
return 0;
}
3-9 符号函数
本题要求编写程序, 对于任一整数n,符号函数sign(n)的定义如下:
计算该函数对任一输入整数的值。
输入格式:
输入在一行中给出整数n。
输出格式:
在一行中按照格式“sign(n) = 函数值”输出该整数n对应的函数值。
输入样例1:
64
输出样例1:
sign(64) = 1
输入样例2:
0
输出样例2:
sign(0) = 0
输入样例3:
-82
输出样例3:
sign(-82)
= -
1
多了一个else if的判断,本质并没有改变。见代码:
#include <stdio.h>
int main()
{
int a;
scanf("%d", &a);
printf("sign(%d) = ", a);
if(a > 0)
printf("1");
else if(a < 0)
printf("-1");
else
printf("0");
return 0;
}
3-10 成绩转换(二)
本题要求编写程序将一个百分制成绩转换为五分制成绩。转换规则:
- 大于等于90分为A;
- 小于90且大于等于80为B;
- 小于80且大于等于70为C;
- 小于70且大于等于60为D;
- 小于60为E。
输入格式:
输入在一行中给出一个整数的百分制成绩。
输出格式:
在一行中输出对应的五分制成绩。
输入样例:
95
输出样例:
A
这一题有多种思路,可以if else if判断,但是代码的时间复杂度会比较高。也可以switch case判断。相对来说,switch判断会更加好,故在此采用switch。
但是if更加直观,直接判断大小即可。switch则最好对数据进行预处理。
#include <stdio.h>
int main()
{
int a;
scanf("%d", &a);
a /= 10;
switch (a)
{
case 9:
printf("A");
break;
case 8:
printf("B");
break;
case 7:
printf("C");
break;
case 6:
printf("D");
break;
default:
printf("E");
break;
}
return 0;
}
结语
这周的题目好多啊,整整12题!看在这么辛苦的份上要个赞不过分吧 [星星眼]
(不对,好像是上周的题目
更多推荐
所有评论(0)