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

相关文章

深入理解Go语言中二维切片的使用

《深入理解Go语言中二维切片的使用》本文深入讲解了Go语言中二维切片的概念与应用,用于表示矩阵、表格等二维数据结构,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录引言二维切片的基本概念定义创建二维切片二维切片的操作访问元素修改元素遍历二维切片二维切片的动态调整追加行动态

Go语言中make和new的区别及说明

《Go语言中make和new的区别及说明》:本文主要介绍Go语言中make和new的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1 概述2 new 函数2.1 功能2.2 语法2.3 初始化案例3 make 函数3.1 功能3.2 语法3.3 初始化

Go语言中nil判断的注意事项(最新推荐)

《Go语言中nil判断的注意事项(最新推荐)》本文给大家介绍Go语言中nil判断的注意事项,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.接口变量的特殊行为2.nil的合法类型3.nil值的实用行为4.自定义类型与nil5.反射判断nil6.函数返回的

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN

Java实现自定义table宽高的示例代码

《Java实现自定义table宽高的示例代码》在桌面应用、管理系统乃至报表工具中,表格(JTable)作为最常用的数据展示组件,不仅承载对数据的增删改查,还需要配合布局与视觉需求,而JavaSwing... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

Go语言代码格式化的技巧分享

《Go语言代码格式化的技巧分享》在Go语言的开发过程中,代码格式化是一个看似细微却至关重要的环节,良好的代码格式化不仅能提升代码的可读性,还能促进团队协作,减少因代码风格差异引发的问题,Go在代码格式... 目录一、Go 语言代码格式化的重要性二、Go 语言代码格式化工具:gofmt 与 go fmt(一)

HTML5实现的移动端购物车自动结算功能示例代码

《HTML5实现的移动端购物车自动结算功能示例代码》本文介绍HTML5实现移动端购物车自动结算,通过WebStorage、事件监听、DOM操作等技术,确保实时更新与数据同步,优化性能及无障碍性,提升用... 目录1. 移动端购物车自动结算概述2. 数据存储与状态保存机制2.1 浏览器端的数据存储方式2.1.