上海海事大学C语言程序设计上机实验代码参考【第九周实验】

本文主要是介绍上海海事大学C语言程序设计上机实验代码参考【第九周实验】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

C语言学习系列课程之练习专项(第九周)

本周主要考察函数的基本使用,函数的使用原则是一个函数实现一个常用的小功能是最好的,避免为不常用的功能设置函数


文章目录

  • C语言学习系列课程之练习专项(第九周)
  • 一、本系列教程的使用方法
  • 二、习题部分
    • 1、找完数 (20分)
    • 2、求e的近似值 (15分)
    • 3、作品评分 (10分)
    • 4、特殊a串数列求和 (20分)
    • 5、打印菱形图案 (15分)
    • 6、打印九九口诀表 (15分)
    • 7、素数和(20分)
    • 8、念数字 (20分)
  • 三、经验分享
    • 1、对于本校生
    • 2、对于非本校的同学
  • 总结


注意:建议大家先自己做一遍,如果实在解决不了在对照答案找问题

一、本系列教程的使用方法

对于上海海事大学的同学,C语言程序设计课程中的实验课程环节的作业基本与本课程的题目相同或类似,可以先自行查找题目,本校使用的编译软件为 Visual C++ 6.0 ,建议有条件的同学使用较新的编译软件,大家可以自行选择比较顺手的编译软件。

对于刚入门的同学,我推荐使用 VS 2022 ,并附上入门教程:教程链接

对于非本校的同学,可以通过本教程自行练习,在吃透本课程后,我相信期末考试取得高分也不是很大的问题,如果只是自学,也可以参考我校的学习进度,自行调整学习计划。

VC 6.0 是1998年所诞生的软件,目前早已停止更新,并且只支持32位的电脑,现如今大家所使用的电脑一般都是64位,大部分人会无法正常使用,并且报错也不智能,所以对于初学者没必要浪费太多的时间在不必要的麻烦上

二、习题部分

C语言的练习题前期一般都以计算题或者逻辑题为主,这是为了编程打好基础,只有清楚的逻辑思维才能够使代码变得即简洁又完美

1、找完数 (20分)

本题要求编写程序,找出任意两正整数m和n之间的所有完数。所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。
输入格式:
输入在一行中给出2个正整数m和n(1<m≤n≤10000),中间以空格分隔。
输出格式:
逐行输出给定范围内每个完数的因子累加形式的分解式,每个完数占一行,格式为“完数 = 因子1 + 因子2 + … + 因子k”,其中完数和因子均按递增顺序给出。若区间内没有完数,则输出“None”。

输入样例:
2 30
输出样例:
6 = 1 + 2 + 3
28 = 1 + 2 + 4 + 7 + 14

代码展示:

#include <stdio.h>int FindFullNum(int num);
void PrintFullNum(int num);int main()
{int numMin, numMax;int i;scanf("%d%d", &numMin, &numMax);for (i = numMin; i <= numMax; i++){if(FindFullNum(i)){PrintFullNum(i);}}return 0;
}int FindFullNum(int num)
{int sum = 0;int i;for (i = 1; i < num; i++){if(num % i == 0){sum += i;}}if(sum == num){return 1;}else{return 0;}
}void PrintFullNum(int num)
{int i = 1;printf("%d = ", num);for (; i < num; i++){if(num % i == 0){printf("%d + ", i);}}printf("\b\b  \n");
}

2、求e的近似值 (15分)

本题要求编写程序,计算自然常数 e。e 可以用级数 1+1/1!+1/2!+⋯+1/n!+⋯ 来近似计算。本题要求对给定的非负整数 n,求该级数的前 n+1项和。
输入格式:
输入第一行中给出非负整数 n(≤1000)。
输出格式:
在一行中输出部分和的值,保留小数点后八位。

输入样例:
10
输出样例:
2.71828180

代码展示:

#include<stdio.h>
int main()
{int i, j, n;double m, sum;sum=1;scanf("%d", &n);for(i=1; i<=n; i++){m=1;for(j=1; j<=i; j++){m=m*j;//阶乘}m=1.0/m;sum=sum+m;}printf("%.8f\n", sum);return 0;
}

3、作品评分 (10分)

本题要求编写程序,全国中小学生Scratch作品大赛拉开了序幕。每个参赛选手可以通过网络直接上传作品。本次比赛人人可做评委。每个网络评委可以通过网络对每一件作品进行打分。评分系统也是请程序高手设计的,能自动去掉一个最高分和一个最低分,求出平均分。
输入格式:
输入数据包括两行: 第一行为n,表示n个评委,n>2。第二行是n个评委的打分,分数之间有一个空格。打分是可以带有小数部分的。
输出格式:
输出平均分,结果保留两位小数。

输入样例:
6
10 9 8 7.9 9 9.5
输出样例:
8.88

代码展示:

#include <stdio.h>float maxNum(float a, float b);
float minNum(float a, float b);int main()
{int num;int i = 0;float val, sum = 0, max = 0, min = 10;scanf("%d", &num);for (; i < num; i++){scanf("%f", &val);sum += val;max = maxNum(max, val);min = minNum(min, val);}printf("%.2f\n", (sum - max - min) / (num - 2));return 0;
}float maxNum(float a, float b)
{if(a > b)return a;elsereturn b;
}float minNum(float a, float b)
{if(a > b)return b;elsereturn a;
}

4、特殊a串数列求和 (20分)

本题要求编写程序,给定两个均不超过9的正整数a和n,要求编写程序求a+aa+aaa++⋯+aa⋯a(n个a)之和。
输入格式:
输入在一行中给出不超过9的正整数a和n。
输出格式:
在一行中按照“s = 对应的和”的格式输出。

输入样例:
2 3
输出样例:
s = 246

代码展示:

#include <stdio.h>
#include <math.h>int CyclesNum(int a, int b);int main()
{int num, powNum, sum = 0;int i = 0;scanf("%d%d", &num, &powNum);for (; i < powNum; i++){sum += CyclesNum(num, i + 1);}printf("s = %d\n", sum);return 0;
}int CyclesNum(int a, int b)
{int sum = 0;int i = 0;for (; i < b; i++){sum += a * (int)pow(10, i);}return sum;
}

5、打印菱形图案 (15分)

本题要求编写程序,打印一个高度为n的、由“”组成的正菱形图案。
输入格式:
输入在一行中给出一个正的奇数n。
输出格式:
输出由n行星号“
”组成的菱形,如样例所示。每个星号后跟一个空格。
输入样例:
7

输出样例:* * * * * * * * * 
* * * * * * * * * * * * * * * *

代码展示:

#include <stdio.h>int main()
{int num;int j;int i;scanf("%d", &num);for (i = 1; i <= num; i++){for (j = 1; j <= num; j++){if(i <= (num + 1) / 2){if (j > (num + 1) / 2 - i && j <= (num + 1) / 2 + i - 1)printf("*");elseprintf(" ");}else{if (j >= (num + 1) / 2 - (num - i) && j <= (num + 1) / 2 + (num - i))printf("*");elseprintf(" ");}}printf("\n");}return 0;
}

6、打印九九口诀表 (15分)

本题要求编写程序,输出一个完整的下三角九九口诀表:
1 * 1 = 1
1 * 2 = 2 2 * 2 = 4
1 * 3 = 3 2 * 3 = 6 3 * 3 = 9
1 * 4 = 4 2 * 4 = 8 3 * 4 = 12 4 * 4 = 16
1 * 5 = 5 2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25 
1 * 6 = 6 2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30 6 * 6 = 36
1 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49
1 * 8 = 8 2 * 8 = 16 3 * 8=24 4 * 8 = 325 * 8 = 40 6 * 8 = 48 7 * 8 = 56 8 * 8 = 64 
1 * 9 = 9 2 * 9 = 18 3 * 9 = 27 4 * 9 = 36 5 * 9 = 45 6 * 9 = 54 7 * 9 = 63 8 * 9 = 72 9 * 9 = 81

本题要求对任意给定的一位正整数N,输出从11到NN的部分口诀表。
输入格式:
输入在一行中给出一个正整数N(1≤N≤9)。
输出格式:
输出下三角N*N部分口诀表,其中等号右边数字占4位、左对齐。

输入样例:
4
输出样例:
1 * 1 = 1
1 * 2 = 2 2 * 2 = 4
1 * 3 = 3 2 * 3 = 6 3 * 3 = 9
1 * 4 = 4 2 * 4 = 8 3 * 4 = 12 4 * 4 = 16

代码展示:

#include <stdio.h>int main()
{int num;int i,j;scanf("%d", &num);for (i = 1; i <= num; i++){for (j = 1; j <= i; j++){printf("%d * %d = %d\t", i, j, i * j);}printf("\n");}return 0;
}

7、素数和(20分)

本题要求编写程序,现在,给定两个整数n和m,0<n<=m<=200,计算第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推。
输入格式:
两个整数,第一个表示n,第二个表示m。
输出格式:
一个整数,表示第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。

输入样例:
2 4
输出样例:
15

代码展示:

#include <stdio.h>int IsPrimeNum(int num);int main()
{int num = 0, min, max, sum = 0;int i;scanf("%d%d", &min, &max);for (i = 2;; i++){if (IsPrimeNum(i)){num++;if (num >= min && num <= max){sum += i;}else if (num > max){break;}}}printf("%d\n", sum);return 0;
}int IsPrimeNum(int num)
{int i;for (i = 2; i < num; i++){if (num % i == 0)return 0;}return 1;
}

8、念数字 (20分)

输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出fu字。十个数字对应的拼音如下:
0: ling
1: yi
2: er
3: san
4: si
5: wu
6: liu
7: qi
8: ba
9: jiu
输入格式:
输入在一行中给出一个整数,如:1234。
提示:整数包括负数、零和正数。
输出格式:
在一行中输出这个整数对应的拼音,每个数字的拼音之间用空格分开,行末没有最后的空格。如 yier san si。

输入样例:
-600
输出样例:
fuliu ling ling

代码展示:

#include <stdio.h>
#include <math.h>void PrintNumString(int num);
int NumOrder(int num);
int SingleNum(int num, int No);int main()
{int num;int i;scanf("%d", &num);if (num < 0){printf("fu");num *= -1;}for (i = NumOrder(num); i > 0; i--){PrintNumString(SingleNum(num, i));if(i != 1)printf(" ");}printf("\n");return 0;
}int NumOrder(int num)
{int order = 0;int i;for (i = 0;; i++){if (num / (int)pow(10, i))order++;elsebreak;}return order;
}int SingleNum(int num, int No)
{num/=(int)pow(10, No - 1);return num % 10;
}void PrintNumString(int num)
{switch (num){case 0:printf("lin");break;case 1:printf("yi");break;case 2:printf("er");break;case 3:printf("san");break;case 4:printf("si");break;case 5:printf("wu");break;case 6:printf("liu");break;case 7:printf("qi");break;case 8:printf("ba");break;case 9:printf("jiu");break;default:break;}
}

本题使用到了 switch 语句的使用,如果不熟悉的朋友可以去自行学习一下

三、经验分享

1、对于本校生

本课程为64学时的课程,其中包括32学时的课堂教学和32学时的实验课程,并且本教程为2023年后半学期的经验分享(即最新课程),课堂教学环节为学习,老师一般会教新课和复习,实验课程则为实践,老师会布置练习题,题目一般与本课程题目相同或类似,但还是建议大家自行完成练习题,在参考我的代码找错。

一般一周会有两节课,第一节是课堂教学,第二节为实验课程,共有16周,课后练习一般只持续至14周,最后两周的实验课程会设置成自行练习。前14周的实验课程包括:自行完成作业、测试题以及期中考试,一般内容与期末考试有关,大家可以自己归纳,我也会在最后发布上海海事大学C语言题库(基本为原题),期末考试为机考,所以大家一定要提前熟悉环境。

老师一般会将本周的其中两道题作为课后作业,其要求为:完成题目并且在作业后写100字左右的学习心得,题目只需将自己的程序抄在本子上即可,对于小结,大家可以写学习的体会(例如:在本周遇到什么错误等等),也可以是学习总结(例如:当作每周的学习归纳写)。

我会在每周附上我自己的作业照片,以供大家参考

期末考试内容主要是C语言的基础,例如:数据类型、条件语句(ifswitch)、循环语句(whilefordo-while以及goto等)、数组(一维数组与多维数组)。而其他篇章考题比例极少,一般每章最少会有一道题,大家要自行把握,不要做无意义的复习。

期末考试的体型包括填空、选择、判断、程序改错(2题)、程序补写(2题)和程序写作题(1题)。

2、对于非本校的同学

本课程的题目主要是基础知识内容,对于进阶指针、结构体和文件的知识较少,并且指针和结构体是较难的内容,所以希望大家可以自己专门去学习这些内容,一般学校也不会着重考察这部分内容,本人后续也会更新C语言的入门教程,敬请期待。


本文上方资源绑定的文件夹内包括本周的作业参考以及题目的word文件

如果是手机用户或者无法看到此绑定文件,可以进入我的主页自行寻找

总结

C语言的学习是循序渐进的,只有不断积累才能提高,而只学习概念不去动手实践是无法学好C语言的,学好一门程序语言最重要的便是多动手实践,不断地实现新的功能,其所带来的正反馈会让大家逐渐爱上编程,喜欢编程。在学习并完成本课程后,大家基本也就入门了C语言,未来可期,也请大家继续努力。

感谢大家的观看,如果对本系列文章感兴趣的朋友也请多多点赞分享,收藏关注不迷路,如有疑问可以在文章下方评论或者直接私聊我,我会在第一时间回复大家,如果出现题目或程序出错,我会第一时间更改,大家的支持也是我第一动力,谢谢大家。

这篇关于上海海事大学C语言程序设计上机实验代码参考【第九周实验】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/745982

相关文章

SpringBoot+RustFS 实现文件切片极速上传的实例代码

《SpringBoot+RustFS实现文件切片极速上传的实例代码》本文介绍利用SpringBoot和RustFS构建高性能文件切片上传系统,实现大文件秒传、断点续传和分片上传等功能,具有一定的参考... 目录一、为什么选择 RustFS + SpringBoot?二、环境准备与部署2.1 安装 RustF

Python实现Excel批量样式修改器(附完整代码)

《Python实现Excel批量样式修改器(附完整代码)》这篇文章主要为大家详细介绍了如何使用Python实现一个Excel批量样式修改器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录前言功能特性核心功能界面特性系统要求安装说明使用指南基本操作流程高级功能技术实现核心技术栈关键函

Redis实现高效内存管理的示例代码

《Redis实现高效内存管理的示例代码》Redis内存管理是其核心功能之一,为了高效地利用内存,Redis采用了多种技术和策略,如优化的数据结构、内存分配策略、内存回收、数据压缩等,下面就来详细的介绍... 目录1. 内存分配策略jemalloc 的使用2. 数据压缩和编码ziplist示例代码3. 优化的

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

GO语言短变量声明的实现示例

《GO语言短变量声明的实现示例》在Go语言中,短变量声明是一种简洁的变量声明方式,使用:=运算符,可以自动推断变量类型,下面就来具体介绍一下如何使用,感兴趣的可以了解一下... 目录基本语法功能特点与var的区别适用场景注意事项基本语法variableName := value功能特点1、自动类型推

GO语言中函数命名返回值的使用

《GO语言中函数命名返回值的使用》在Go语言中,函数可以为其返回值指定名称,这被称为命名返回值或命名返回参数,这种特性可以使代码更清晰,特别是在返回多个值时,感兴趣的可以了解一下... 目录基本语法函数命名返回特点代码示例命名特点基本语法func functionName(parameters) (nam

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

使用Spring Cache本地缓存示例代码

《使用SpringCache本地缓存示例代码》缓存是提高应用程序性能的重要手段,通过将频繁访问的数据存储在内存中,可以减少数据库访问次数,从而加速数据读取,:本文主要介绍使用SpringCac... 目录一、Spring Cache简介核心特点:二、基础配置1. 添加依赖2. 启用缓存3. 缓存配置方案方案

MySQL的配置文件详解及实例代码

《MySQL的配置文件详解及实例代码》MySQL的配置文件是服务器运行的重要组成部分,用于设置服务器操作的各种参数,下面:本文主要介绍MySQL配置文件的相关资料,文中通过代码介绍的非常详细,需要... 目录前言一、配置文件结构1.[mysqld]2.[client]3.[mysql]4.[mysqldum

Python多线程实现大文件快速下载的代码实现

《Python多线程实现大文件快速下载的代码实现》在互联网时代,文件下载是日常操作之一,尤其是大文件,然而,网络条件不稳定或带宽有限时,下载速度会变得很慢,本文将介绍如何使用Python实现多线程下载... 目录引言一、多线程下载原理二、python实现多线程下载代码说明:三、实战案例四、注意事项五、总结引