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

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

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

本周主要考察数组的使用使用,本周是练习题的最后一周,后续指针与结构体以及文件的练习我会在未来继续更新以及对其他内容进行扩展,C语言零基础的教学工作正在筹备中,还请大家敬请期待


文章目录

  • C语言学习系列课程之练习专项(第十三周)
  • 一、本系列教程的使用方法
  • 二、习题部分
    • 1、统计字符出现次数 (20分)
    • 2、字符串逆序 (15分)
    • 3、字符串逆序 (15分)
    • 4、矩阵各行元素之和 (15分)
    • 5、阵运算 (20分)
    • 6、找鞍点 (20分)
    • 7、找鞍点 (20分)
    • 8、选择法排序 (20分)
    • 9、找出不是两个数组共有的元素 (20分)
    • 10、印杨辉三角 (20分)
  • 三、经验分享
    • 1、对于本校生
    • 2、对于非本校的同学
    • 3、对于期末考试
    • 4、对于额外资料
  • 总结


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

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

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

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

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

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

二、习题部分

1、统计字符出现次数 (20分)

输入格式:
输入第一行给出一个以回车结束的字符串(少于80个字符);第二行输入一个字符。
输出格式:
在一行中输出给定字符在给定字符串中出现的次数。
输入样例:
programming is More fun!
m
输出样例:
2

代码展示:

#include <stdio.h>
int main()
{char serious[80];char same;int i;int x=0,y=0;//for(i = 0;i < 80;i++){scanf("%c",&serious[i]);if(serious[i] == '\n')break;elsex++;}	//scanf(" %c",&same);for(i = 0;i < x;i++){if(serious[i] == same)y++;}//printf("%d\n",y);return 0;
}

2、字符串逆序 (15分)

本题要求编写程序,输入一个字符串,对该字符串进行逆序,输出逆序后的字符串。
输入格式:
输入在一行中给出一个不超过80个字符长度的、以回车结束的非空字符串。
输出格式:
在一行中输出逆序后的字符串。
输入样例:
Hello World!
输出样例:
!dlroWolleH

代码展示:

#include <stdio.h>
int main()
{char a[100];int i,x;for(i = 0,x = 0;i < 100;i++){scanf("%c",&a[i]);if(a[i] == '\n')break;elsex++;}for(i = --x; i >= 0;i--)printf("%c", a[i]);printf("\n");return 0;
}

3、字符串逆序 (15分)

本题要求编写程序,对一个以“#”结束的字符串,将其小写字母全部转换成大写字母,把大写字母全部转换成小写字母,其他字符不变输出。
输入格式:
输入为一个以“#”结束的字符串(不超过50个字符)。
输出格式:
在一行中输出大小写转换后的结果字符串。
输入样例:
Hello World! 123#
输出样例:
hELLOwORLD! 123

代码展示:

#include <stdio.h>
#include <string.h>int main()
{char a[100];int i;gets(a);for (i = 0; i < strlen(a) && a[i] != '#'; i++){if (a[i] >= 'a' && a[i] <= 'z')printf("%c", a[i] - 32);else if (a[i] >= 'A' && a[i] <= 'Z')printf("%c", a[i] + 32);elseprintf("%c", a[i]);}printf("\n");return 0;
}

4、矩阵各行元素之和 (15分)

本题要求编写程序,求一个给定的m×n矩阵各行元素之和。
输入格式:
输入第一行给出两个正整数m和n(1≤m,n≤6)。随后m行,每行给出n个整数,其间以空格分隔。
输出格式:
每行输出对应矩阵行元素之和。

输入样例:
3 2
6 3
1 -8
3 12
输出样例:
9
-7
15

代码展示:

#include <stdio.h>int main()
{int m, n, i, j, a[10][10], sum;scanf("%d%d", &m, &n);for (i = 0; i < m; i++){sum = 0;for (j = 0; j < n; j++){scanf("%d", &a[i][j]);sum = sum + a[i][j];}printf("  %d  ", sum);}printf("\n");return 0;
}

5、阵运算 (20分)

本题要求编写程序,给定一个n×n的方阵,计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。
输入格式:
输入第一行给出正整数n(1<n≤10);随后n行,每行给出n个整数,其间以空格分隔。
输出格式:
在一行中给出该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。

输入样例:
4
2 3 4 1
5 6 1 1
7 1 8 1
1 1 1 1
输出样例:
35

代码展示:

#include <stdio.h>
int main()
{int a[11][11], n, i, j, sum = 0;scanf("%d", &n);for (i = 1; i <= n; i++)for (j = 1; j <= n; j++)scanf("%d", &a[i][j]);for (i = 1; i <= n; i++)for (j = 1; j <= n; j++){if (i != n && j != n && j != n - i + 1)sum += a[i][j];}printf("%d", sum);printf("\n");return 0;
}

6、找鞍点 (20分)

本题要求编写程序,求一个给定的n阶方阵的鞍点。一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。
输入格式:
输入第一行给出一个正整数n(1≤n≤6)。随后n行,每行给出n个整数,其间以空格分隔。
输出格式:
输出在一行中按照“行下标列下标”(下标从0开始)的格式输出鞍点的位置。如果鞍点不存在,则输出“NONE”。题目保证给出的矩阵至多存在一个鞍点。

输入样例1:
4
1 7 4 1
4 8 3 6
1 6 1 2
0 7 8 9
输出样例1:
2 1

输入样例2:
2
1 7
4 1
输出样例2:
NONE

代码展示:

#include <stdio.h>int main()
{int a[10][10], n, i, j, max, k, flag = 0;//scanf("%d", &n);for (i = 0; i < n; i++)for (j = 0; j < n; j++)scanf("%d", &a[i][j]);//for (i = 0; i < n; i++){max = a[i][0];k = 0;for (j = 1; j < n; j++)if (a[i][j] > max){max = a[i][j];k = j;}for (j = 0; j < n; j++)if (a[j][k] < max)break;if (j == n){printf("%d %d", i, k);flag = 1;break;}}//if (flag == 0)printf("NONE");printf("\n");return 0;
}

7、找鞍点 (20分)

本题要求编写程序,考试结束了,全班同学的分数都出来了。老师需要对分数做一次排序,看看从高到低,分数的排列是怎样的。
输入格式:
第一行是一个n,表示班级同学的人数,1<=n<=5000。第二行开始有n个分数,0<=分数<=100,分数都是整数,没有零点五分。
输出格式:
输出排序后的分数,按照从大到小排列,相同的分数排在一起,每两个分数之间间隔一个空格。

输入样例:
10
0 60 73 60 82 90 100 18 55 84
输出样例:
100 90 84 82 73 60 60 55 18 0

代码展示:

冒泡排序是个非常重要的算法思想,大家一定要理解透

#include <stdio.h>#define SWAP(a, b) \do { \int temp = a; \a = b; \b = temp; \} while(0)int main() {int a[5000], n, i, j;scanf("%d", &n);for (i = 1; i <= n; i++)scanf("%d", &a[i]);//-------------------------------------------------//冒泡排序本体for (i = 1; i <= n; i++)for (j = 1; j <= n - i; j++)if (a[j] < a[j + 1])SWAP(a[j], a[j + 1]);
//--------------------------------------------------//冒泡排序本体for (i = 1; i <= n; i++)printf("%d%c", a[i], i == n ? '\n' : ' ');return 0;
}

8、选择法排序 (20分)

本题要求编写程序,将给定的n个整数从大到小排序后输出。
输入格式:
输入第一行给出一个不超过100的正整数n。第二行给出n个整数,其间以空格分隔。
输出格式:
在一行中输出从大到小有序的数列,相邻数字间有一个空格,行末不得有多余空格。

输入样例:
4
5 1 7 6
输出样例:
7 6 5 1

代码展示:

#include <stdio.h>#define SWAP(a, b)    \{                 \int temp = a; \a = b;        \b = temp;     \}int main()
{int a[100], n, i, j, k;scanf("%d", &n);for (i = 0; i < n; i++)scanf("%d", &a[i]);for (i = 0; i < n; i++){k = i;for (j = i; j < n; j++)if (a[j] > a[k])k = j;//找出最大的SWAP(a[i], a[k]);}for (i = 0; i < n; i++)printf("%d%c", a[i], i == n ? '\n' : ' ');printf("\n");return 0;
}

9、找出不是两个数组共有的元素 (20分)

本题要求编写程序,给定两个整型数组,找出不是两者共有的元素。
输入格式:
输入分别在两行中给出两个整型数组,每行先给出正整数N(≤20),随后是N个整数,其间以空格分隔。
输出格式:
在一行中按照数字给出的顺序输出不是两数组共有的元素,数字间以空格分隔,但行末不得有多余的空格。题目保证至少存在一个这样的数字。同一数字不重复输出。

输入样例:
10 3 -5 2 8 0 3 5 -15 9 100
11 6 4 8 2 6 -5 9 0 100 8 1
输出样例:
3 5 -15 6 4 1

代码展示:

#include <stdio.h>
int main()
{int a[20],b[20],c[40],i,j,k,n,m,num=0,f=0;scanf("%d",&n);for(i=0;i<n;i++)scanf("%d",&a[i]);scanf("%d",&m);for(i=0;i<m;i++)scanf("%d",&b[i]);for(i=0;i<n;i++)//找出数组a在在数组b中不存在的 {	for(j=0;j<m;j++)if(a[i]==b[j])break;if (j==m)c[num++]=a[i];//存储在数组c }for(i=0;i<m;i++){	//找出数组b在在数组a中不存在的 for(j=0;j<n;j++)if(b[i]==a[j])break;if (j==n)c[num++]=b[i];}f=0;for(i=0;i<num;i++){	//排除相同的数值 for(j=0;j<i;j++)if(c[i]==c[j]) break;if(j==i){if(f!=0) printf(" ");printf("%d",c[i]);f++;}}printf("\n");return 0;
}

10、印杨辉三角 (20分)

本题要求编写程序,按照规定格式打印前n行杨辉三角。
输入格式:
输入在一行中给出n(1≤n≤10)。
输出格式:
以正三角形的格式输出前n行杨辉三角。每个数字占固定4位。

输入样例:
6
输出样例:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1

代码展示:

#include <stdio.h>int main()
{int n, a[10][10];int i,j,k;scanf("%d", &n);a[0][0] = 1;for (i = 1; i < n; i++){a[i][0] = 1;for (j = 1; j < i; j++){a[i][j] = a[i - 1][j] + a[i - 1][j - 1];}a[i][i] = 1;}for (i = 0; i < n; i++){for (j = 0; j <= i; j++){printf("%d	", a[i][j]);}printf("\n");}return 0;
}
//上方代码为三角形
//下方为金字塔型
/*#include <stdio.h>int main()
{int n, a[10][10];int i,j,k;scanf("%d", &n);a[0][0] = 1;for (i = 1; i < n; i++){a[i][0] = 1;for (j = 1; j < i; j++){a[i][j] = a[i - 1][j] + a[i - 1][j - 1];}a[i][i] = 1;}for (i = 0; i < n; i++){for (k = 0; k < n - i - 1; k++){printf("  ");}for (j = 0; j <= i; j++){printf("%4d", a[i][j]);}printf("\n");}return 0;
}*/

后面注释掉的是另外一种写法

三、经验分享

1、对于本校生

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

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

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

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

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

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

2、对于非本校的同学

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

3、对于期末考试

如果只是应付期末考试,这里我推荐一位 b站UP主的期末速通课程【C语言】c程序设计3小时期末考试不挂科,赠资料!

对于期末考试我建议在考试前两周开始复习计划,可以通过速通课程来查漏补缺,但是如果你想要学习C语言并且希望在未来用来找工作,那么这点基础还是远远不够的,需要更多的练习和训练,并且我也不建议使用速通课程来学习,因为考试毕竟是考试,应试技巧还是大于大量知识积累的,C语言在大学课程中一般会叫做C语言程序设计,这个性质也明确了在大学不会讲的太深奥 (此观点仅代表个人看法,并不起决定性作用)

4、对于额外资料

我会在发布一个资源,其中包括上海海事大学的题库以及代码的汇总版(只需批量重命名将ID改为自己的学号就可以直接上交)


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

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

总结

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

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

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


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/784360

相关文章

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实现多线程下载代码说明:三、实战案例四、注意事项五、总结引

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

IDEA与MyEclipse代码量统计方式

《IDEA与MyEclipse代码量统计方式》文章介绍在项目中不安装第三方工具统计代码行数的方法,分别说明MyEclipse通过正则搜索(排除空行和注释)及IDEA使用Statistic插件或调整搜索... 目录项目场景MyEclipse代码量统计IDEA代码量统计总结项目场景在项目中,有时候我们需要统计