本周没有什么难点内容,只是新学了几个函数
注意:建议大家先自己做一遍,如果实在解决不了在对照答案找问题
对于上海海事大学的同学,C语言程序设计课程中的实验课程环节的作业基本与本课程的题目相同或类似,可以先自行查找题目,本校使用的编译软件为 Visual C++ 6.0 ,建议有条件的同学使用较新的编译软件,大家可以自行选择比较顺手的编译软件。
对于刚入门的同学,我推荐使用 VS 2022 ,并附上入门教程:教程链接
对于非本校的同学,可以通过本教程自行练习,在吃透本课程后,我相信期末考试取得高分也不是很大的问题,如果只是自学,也可以参考我校的学习进度,自行调整学习计划。
VC 6.0 是1998年所诞生的软件,目前早已停止更新,并且只支持32位的电脑,现如今大家所使用的电脑一般都是64位,大部分人会无法正常使用,并且报错也不智能,所以对于初学者没必要浪费太多的时间在不必要的麻烦上
这种题是让大家自己手打一遍,自行练习的,大家可以尝试一下使用 ASCII码的方式在实现以下本题
代码实现:
#include
void main()
{
putchar(getchar()-32);
}
" getchar(); " 函数的作用与 **" printf(); "**函数的作用类似,它是读取一个字符,它返回的是ASCII码,所以只要是ASCII码表里有的字符它都能读取出来。在调用 " getchar(); " 函数时,编译器会依次读取用户键入缓存区的一个字符(注意这里只读取一个字符,如果缓存区有多个字符,他会按顺序挨个读取。
注意回车键也是会被读取的,如果缓存区没有输入值,它会等待用户随意输入一个字符,然后继续运行,同样如果希望让程序暂停在某一行,也可以使用这个函数。
对于如何暂停函数,如果大家感兴趣,看我的另外一篇文章
:文章链接
大家一定要知道常用的转义字符的使用,例如换行(\n)、输出双引号(")等
本体主要考察大家对各替换变量以及数据类型的知识考察,这种东西很容易踩坑
代码实现:
#include
void main()
{
int i=-2;
float x=457.898;
printf("i=%5d,%o,%3x,%u,%c\n",i,i,i,i,i+'E');
printf("x=%10f,%10.2f,%-10.4f,%.2f,%f\n",x,x,x,x,x);
}
这道题我想大家已经非常熟悉了,大家自己尝试一下吧。
代码实现:
#include
void main()
{
int a,b;
printf("输入一个数x=");
scanf("%d",&a);
b=(a%10)*100+(a/10%10)*10+a/100;
printf("反序为:%d\n",b);
}
本题使用数学运算函数进行计算,注意函数是否被定义
log()函数需要满足变量的数据类型为double
代码实现:
#include
#include
void main()
{
double x,y;
printf("输入x=");
scanf("%lf",&x);
y=sqrt(log(x));
printf("y=%f\n",y);
}
本题使用了海伦公式,又是重复的题目
代码实现:
#include
#include
void main()
{
double a,b,c,l,s;
scanf("%lf%lf%lf",&a,&b,&c);
l=(a+b+c)/2;
s=sqrt(l*(l-a)*(l-b)*(l-c));
printf("%.3f",s);
}
本题要求编写程序,对于输入的两个整数,按照要求输出其和差积商。
输入格式:
在一行内输入两个不超过100的非负整数a和b,中间以一个空格间隔,且保证b不为0。
输出格式:
共四行,格式是:
[a] + [b] = [a+b]
[a] - [b] = [a-b]
[a] * [b] = [a*b]
[a] / [b] = [a/b]
其中,带有方括号的内容(如[a]、[b]、[a+b]等)表示相应整数或运算结果的值,在输出时要用实际的值代替。
并且:如果a能够被b整除,那么a/b应输出为整数格式,否则a/b输出为带两位小数的格式。
提示:注意表达式中的空格。
输入样例1:
6 3
输出样例1:
6 + 3 = 9
6 - 3 = 3
6 * 3 = 18
6 / 3 = 2
输入样例2:
8 6
输出样例2:
8 + 6 = 14
8 - 6 = 2
8 * 6 = 48
8 / 6 = 1.33
本题无非多定义几个变量就能够实现
代码实现:
有没有 if() 语句对于本题都无关紧要,因为学校进度还没到,大家可以根据自己老师要求进行(添加提示语或者条件判断会让整个程序更加完整)
#include
int main()
{
int a, b;
scanf("%d %d", &a, &b);
if (a >= 0 && a <= 100 && b >= 0 && b <= 100 && b != 0) {
if (a % b == 0)
{
printf("%d + %d = %d\n", a, b, a + b);
printf("%d - %d = %d\n", a, b, a - b);
printf("%d * %d = %d\n", a, b, a * b);
printf("%d / %d = %d\n",a, b,a / b);
}
else {
printf("%d + %d = %d\n", a, b, a + b);
printf("%d - %d = %d\n", a, b, a - b);
printf("%d * %d = %d\n", a, b, a * b);
printf("%d / %d = %.2f\n",a, b,(float) a / b);
}
}
else
{
printf("输入不符合要求:a和b必须在0到100之间,且b不能为0\n");
}
return 0;
}
题目要求计算存款利息,计算公式为interest=money×(1+rate)year−money,其中interest为存款到期时的利息(税前),money是存款金额,year是存期,rate是年利率。
输入格式:
输入在一行中顺序给出三个正实数money、year和rate,以空格分隔。
输出格式:
在一行中按“interest = 利息”的格式输出,其中利息保留两位小数。
输入样例:
1000 3 0.025
输出样例:
interest = 76.89
本题使用了指数函数 " pow(); ",本函数的作用就是进行幂运算,例如 pow(a,b); 中 a 为底数,b 为幂,也就是 a 的 b 次方,注意调用
代码实现:
#include
#include
int main()
{
float money,year,rate,interest;
scanf("%f %f %f",&money,&year,&rate);
interest=money*pow(1+rate,year)-money;
printf("interest = %.2f\n",interest);
return 0;
}
本题要求编写程序,有时候人们用四位数字表示一个时间,比如1106表示11点零6分。现在,你的程序要根据起始时间和流逝的时间计算出终止时间。
读入两个数字,第一个数字以这样的四位数字表示当前时间,第二个数字表示分钟数,计算当前时间经过那么多分钟后是几点,结果也表示为四位数字。当小时为个位数时,没有前导的零,即5点30分表示为530。注意,第二个数字表示的分钟数可能超过60,也可能是负数。
输入格式:
输入在一行中给出2个整数,分别是四位数字表示的起始时间、以及流逝的分钟数,其间以空格分隔。注意:在起始时间中,当小时为个位数时,没有前导的零,即5点30分表示为530;流逝的分钟数可能超过60,也可能是负数。
输出格式:
输出四位数字表示的终止时间,当小时为个位数时,没有前导的零。题目保证起始时间和终止时间在同一天内。
输入样例:
1120 110
输出样例:
1310
本题原理很简单,就是别被带入到歧途
代码实现:
#include
int main()
{
int hours, minutes, addMin, time;
scanf("%d%d", &time, &addMin);
hours = addMin / 60 + time / 100;
minutes = addMin % 60 + time % 100 % 60;
hours += minutes / 60;
minutes = minutes % 60;
if (minutes < 0)
{
hours -= 1;
minutes += 60;
}
time = hours * 100 + minutes;
printf("%d\n", time);
return 0;
}
没错有时候求余运算也是很巧妙地,这种题只要见过一次,后面遇到也不会怕
本课程为64学时的课程,其中包括32学时的课堂教学和32学时的实验课程,并且本教程为2023年后半学期的经验分享(即最新课程),课堂教学环节为学习,老师一般会教新课和复习,实验课程则为实践,老师会布置练习题,题目一般与本课程题目相同或类似,但还是建议大家自行完成练习题,在参考我的代码找错。
一般一周会有两节课,第一节是课堂教学,第二节为实验课程,共有16周,课后练习一般只持续至14周,最后两周的实验课程会设置成自行练习。前14周的实验课程包括:自行完成作业、测试题以及期中考试,一般内容与期末考试有关,大家可以自己归纳,我也会在最后发布上海海事大学C语言题库(基本为原题),期末考试为机考,所以大家一定要提前熟悉环境。
老师一般会将本周的其中两道题作为课后作业,其要求为:完成题目并且在作业后写100字左右的学习心得,题目只需将自己的程序抄在本子上即可,对于小结,大家可以写学习的体会(例如:在本周遇到什么错误等等),也可以是学习总结(例如:当作每周的学习归纳写)。
我会在每周附上我自己的作业照片,以供大家参考
期末考试内容主要是C语言的基础,例如:数据类型、条件语句(if 与 switch)、循环语句(while、for、do-while以及goto等)、数组(一维数组与多维数组)。而其他篇章考题比例极少,一般每章最少会有一道题,大家要自行把握,不要做无意义的复习。
期末考试的体型包括填空、选择、判断、程序改错(2题)、程序补写(2题)和程序写作题(1题)。
本课程的题目主要是基础知识内容,对于进阶指针、结构体和文件的知识较少,并且指针和结构体是较难的内容,所以希望大家可以自己专门去学习这些内容,一般学校也不会着重考察这部分内容,本人后续也会更新C语言的入门教程,敬请期待。
本文上方资源绑定的文件夹内包括本周的作业参考以及题目的word文件
如果是手机用户或者无法看到此绑定文件,可以进入我的主页自行寻找
C语言的学习是循序渐进的,只有不断积累才能提高,而只学习概念不去动手实践是无法学好C语言的,学好一门程序语言最重要的便是多动手实践,不断地实现新的功能,其所带来的正反馈会让大家逐渐爱上编程,喜欢编程。在学习并完成本课程后,大家基本也就入门了C语言,未来可期,也请大家继续努力。
感谢大家的观看,如果对本系列文章感兴趣的朋友也请多多点赞分享,收藏关注不迷路,如有疑问可以在文章下方评论或者直接私聊我,我会在第一时间回复大家,如果出现题目或程序出错,我会第一时间更改,大家的支持也是我第一动力,谢谢大家。