上海海事大学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循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

Spring Boot 3.4.3 基于 Spring WebFlux 实现 SSE 功能(代码示例)

《SpringBoot3.4.3基于SpringWebFlux实现SSE功能(代码示例)》SpringBoot3.4.3结合SpringWebFlux实现SSE功能,为实时数据推送提供... 目录1. SSE 简介1.1 什么是 SSE?1.2 SSE 的优点1.3 适用场景2. Spring WebFlu

java之Objects.nonNull用法代码解读

《java之Objects.nonNull用法代码解读》:本文主要介绍java之Objects.nonNull用法代码,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录Java之Objects.nonwww.chinasem.cnNull用法代码Objects.nonN

SpringBoot实现MD5加盐算法的示例代码

《SpringBoot实现MD5加盐算法的示例代码》加盐算法是一种用于增强密码安全性的技术,本文主要介绍了SpringBoot实现MD5加盐算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习... 目录一、什么是加盐算法二、如何实现加盐算法2.1 加盐算法代码实现2.2 注册页面中进行密码加盐2.

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤

在C#中调用Python代码的两种实现方式

《在C#中调用Python代码的两种实现方式》:本文主要介绍在C#中调用Python代码的两种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#调用python代码的方式1. 使用 Python.NET2. 使用外部进程调用 Python 脚本总结C#调

Java时间轮调度算法的代码实现

《Java时间轮调度算法的代码实现》时间轮是一种高效的定时调度算法,主要用于管理延时任务或周期性任务,它通过一个环形数组(时间轮)和指针来实现,将大量定时任务分摊到固定的时间槽中,极大地降低了时间复杂... 目录1、简述2、时间轮的原理3. 时间轮的实现步骤3.1 定义时间槽3.2 定义时间轮3.3 使用时