上海海事大学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

相关文章

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

代码随想录冲冲冲 Day39 动态规划Part7

198. 打家劫舍 dp数组的意义是在第i位的时候偷的最大钱数是多少 如果nums的size为0 总价值当然就是0 如果nums的size为1 总价值是nums[0] 遍历顺序就是从小到大遍历 之后是递推公式 对于dp[i]的最大价值来说有两种可能 1.偷第i个 那么最大价值就是dp[i-2]+nums[i] 2.不偷第i个 那么价值就是dp[i-1] 之后取这两个的最大值就是d

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip

D4代码AC集

贪心问题解决的步骤: (局部贪心能导致全局贪心)    1.确定贪心策略    2.验证贪心策略是否正确 排队接水 #include<bits/stdc++.h>using namespace std;int main(){int w,n,a[32000];cin>>w>>n;for(int i=1;i<=n;i++){cin>>a[i];}sort(a+1,a+n+1);int i=1

C语言 | Leetcode C语言题解之第393题UTF-8编码验证

题目: 题解: static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num & MASK1) == 0) {return

MiniGPT-3D, 首个高效的3D点云大语言模型,仅需一张RTX3090显卡,训练一天时间,已开源

项目主页:https://tangyuan96.github.io/minigpt_3d_project_page/ 代码:https://github.com/TangYuan96/MiniGPT-3D 论文:https://arxiv.org/pdf/2405.01413 MiniGPT-3D在多个任务上取得了SoTA,被ACM MM2024接收,只拥有47.8M的可训练参数,在一张RTX