当前位置: 首页 > news >正文

2025级C语言第四次周测题解 - 教程

7-1-1 你该努力了

分数 30

作者 岳金戈

单位 金陵科技学院

本学期软件工程学院,软件工程专业已经考了4次周测了,但是大部分同学成绩并不理想。那么,有些同学,你是不是该努力了。

输入格式:

以字符串形式,输入一个名字XXX。(名字皆为简写,字符串长度不超过10)

输出格式:

输出“XXX, you should study hard!”

输入样例:

在这里给出一组输入。例如:

YJG

输出样例:

在这里给出相应的输出。例如:

YJG, you should study hard!

参考答案:

#include 
int main (void) {char name[15];gets(name);printf("%s, you should study hard!", name);return 0;
}

7-2-1 藏头诗

分数 20

作者 张泳

单位 浙江大学

本题要求编写一个解密藏头诗的程序。

注:在 2022 年 7 月 14 日 16 点 50 分以后,该题数据修改为 UTF-8 编码。

输入格式:

输入为一首中文藏头诗,一共四句,每句一行。注意:一个汉字占三个字节。

输出格式:

取出每句的第一个汉字并连接在一起形成一个字符串并输出。同时在末尾输入一个换行符。

输入样例:

一叶轻舟向东流
帆稍轻握杨柳手
风纤碧波微起舞
顺水任从雅客流

输出样例:

一帆风顺

参考答案:

#include 
int main (void) {char words[5][100];for(int i=0; i<4; i++){scanf("%s", words[i]);}for(int i=0; i<4; i++){printf("%c%c%c", words[i][0], words[i][1], words[i][2]);}return 0;
}

7-2-2 藏尾诗

分数 20

作者 C课程组

单位 浙江大学

本题要求编写一个解密藏尾诗的程序。

注:在 2023 年 1 月 17 日 15 点 14 分以后,该题数据修改为 UTF-8 编码。

输入格式:

输入为一首中文藏尾诗,一共四句。每句一行,但句子不一定是等长的,最短一个汉字,最长九个汉字。注意:一个汉字占三个字节。

输出格式:

取出每句的最后一个汉字并连接在一起形成一个字符串并输出。同时在末尾输入一个换行符。

输入样例:

悠悠田园风
然而心难平
兰花轻涌浪
兰香愈幽静

输出样例:

风平浪静

参考答案:

#include 
int main (void) {char words[4][100];for(int i=0; i<4; i++){scanf("%s", words[i]);}for(int i=0; i<4; i++){int len = strlen(words[i]);printf("%c%c%c", words[i][len-3], words[i][len-2], words[i][len-1]);}return 0;
}

7-3-1 字符串替换

分数 20

作者 C课程组

单位 浙江大学

本题要求编写程序,将给定字符串中的大写英文字母按以下对应规则替换:

原字母对应字母
AZ
BY
CX
DW
XC
YB
ZA

输入格式:

输入在一行中给出一个不超过80个字符、并以回车结束的字符串。

输出格式:

输出在一行中给出替换完成后的字符串。

输入样例:

Only the 11 CAPItaL LeTtERS are replaced.

输出样例:

Lnly the 11 XZKRtaO OeGtVIH are replaced.

参考答案:

#include 
int main (void) {char str[100];gets(str);for(int i = 0; i < strlen(str); i++){if(str[i] >= 'A' && str[i] <= 'Z'){str[i] = 'A' + 'Z' - str[i];}}puts(str);return 0;
}

7-3-2 字符串查找

分数 20

作者 郭奇展

单位 金陵科技学院

给定两个字符串A和B,请判断B是否是A的子串。如果是,输出B在A中第一次出现的位置(从0开始计数),否则输出-1.

输入格式:

给定两行输入:

第一行输入字符串A

第二行输入字符串B
两字符串的长度都不超过 10000,并且保证每个字符串都是由可见的ASCII码和空白字符组成。

输出格式:

输出一个整数,表示字符串B在字符串A中首次出现的位置或者-1

输入样例:

在这里给出一组输入。例如:

Hello World!
ll

输出样例:

在这里给出相应的输出。例如:

2

参考答案:

#include 
#include 
int main (void) {char A[10000], B[10000];gets(A);gets(B);int lenA = strlen(A), lenB = strlen(B);for(int i = 0; i <= lenA - lenB; i++){int index = 0;for(index = 0; index < lenB; index++){if(A[i + index] != B[index]){break;}}if(index == lenB){printf("%d", i);return 0;}}printf("-1");return 0;
}

7-4-1 猴子选大王

分数 15

作者 徐镜春

单位 浙江大学

一群猴子要选新猴王。新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1~N号。从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧邻的下一只猴子开始同样的报数。如此不断循环,最后剩下的一只猴子就选为猴王。请问是原来第几号猴子当选猴王?

输入格式:

输入在一行中给一个正整数N(≤1000)。

输出格式:

在一行中输出当选猴王的编号。

输入样例:

11

输出样例:

7

参考答案:

#include 
int main (void) {int n;scanf("%d", &n);int monkey[1005] = {0}, count = 0, cnt = 0;while(1){for(int i = 0; i < n; i++){if(monkey[i] == 0){cnt++;}if(cnt == 3){monkey[i] = 1;count++;cnt = 0;}}if(count == n-1){for(int i = 0; i < n; i++){if(monkey[i] == 0){printf("%d", i + 1);return 0;}}}}return 0;
}

7-4-2 约瑟夫问题

分数 15

作者 孙振晢

单位 上海大学

n 个人围成一圈,从第一个人开始报数,数到 m 的人出列,再由下一个人重新从 1 开始报数,数到 m 的人再出圈,依次类推,直到所有的人都出圈,请输出依次出圈人的编号。

输入格式:

输入两个整数 n,m。

输出格式:

输出一行 n 个整数,按顺序输出每个出圈人的编号。


说明/提示

1<=n,m<=100

输入样例:

10 3

输出样例:

3 6 9 2 7 1 8 5 10 4

参考答案:

#include 
int main (void) {int n, m;;scanf("%d %d", &n, &m);int flag[105] = {0};int count, cnt;count = cnt = 0;// cnt : 表示报数// count : 表示总出圈人数while(1){for(int i = 0; i < n; i++){// flag[i] = 0, 表示未出圈的人if(flag[i] == 0){// 报数cnt++;}// 报数报到 m 的人出圈if(cnt == m){// flag[i] = 1, 标记该人出圈flag[i] = 1;// 报数清零cnt = 0;// 总出圈人数++count++;printf("%d ", i+1);}}// 还剩最后一个人if(count == n-1){// for循环遍历flag数组 找到未出圈(flag[i]=0)的人for(int j = 0; j < n; j++){if(flag[j] == 0){// 输出printf("%d", j+1);return 0;}}}}return 0;
}

7-5-1 感染人数

分数 15

作者 黄龙军

单位 绍兴文理学院

设某住宿区域是一个n×n的方阵,方阵中的每个小方格为一个房间,房间里可能住一个人,也可能空着。第一天,某些房间中住着的人得了一种高传染性的流感,以后每一天,得流感的人会使其邻居(住在其上、下、左、右方向存在的房间里面的人)传染上流感,请问:第m天总共有多少人得流感?

输入格式:

第一行输入两个整数n,m(1<n≤20,1≤m≤100),含义如上述;接着输入n行,每行n个字符,表示住宿区域第一天的房间情况,其中,@表示当天该房间住着得流感的人,.表示该房间住着健康的人,#表示该房间是空的。

输出格式:

输出一个整数,表示第m天得了流感的人数。

输入样例1:

5 3
#....
.....
...##
.#.@.
@.#..

输出样例1:

10

输入样例2:

5 4
....#
.#.@.
.#@..
#....
.....

输出样例2:

16

参考答案:

#include 
int main (void) {int n, m;scanf("%d %d", &n, &m);getchar();char map[25][25];for(int i = 1; i <= n; i++){for(int j = 1; j <= n; j++){scanf("%c", &map[i][j]);}getchar();}int total = 0;for(int i = 1; i <= n; i++){for(int j = 1; j <= n; j++){if(map[i][j] == '@'){total++;}}}for(int day = 1; day < m; day++){for(int i = 1; i <= n; i++){for(int j = 1; j<= n; j++){if(map[i][j] == '.'){if(map[i+1][j] == '@' || map[i-1][j] == '@' ||map[i][j+1] == '@' || map[i][j-1] == '@'){map[i][j] = '*';total++;}}}}for (int i = 1; i <= n; i++) {for (int j = 1; j <= n; j++) {if (map[i][j] == '*') {map[i][j] = '@';}}}}printf("%d", total);return 0;
}

http://www.jsqmd.com/news/106272/

相关文章:

  • AI CRM系统线索打分,原圈科技引爆销售增长
  • 学生评价标准与示例,AI生成评价新方式
  • 【详解】基于Kubernetes部署Kafka集群
  • Airflow - How to enable the test connection feature?
  • Cam350新手入门:从零开始掌握PCB设计工具
  • Item38--通过复合 (Composition) 塑模出 has-a
  • 零基础学会Vue二维码扫描:5分钟快速上手
  • 高效监控利器:vmagent全面解析
  • Vue3中动态样式数组的后项覆盖规则如何与计算属性结合实现复杂状态样式管理?
  • RGBA处理效率对比:传统方法vsAI工具
  • 东方博宜OJ 1222:经典递归问题 —— 汉诺塔
  • 石油化工实验室LIMS系统,石油化工实验室管理系统,LIMS系统实现从原油评价、馏分分析到成品油出厂的全流程质控!
  • Day17 C++提高 之 类模板案例
  • 比手动快10倍!自动化处理Schannel错误的方法
  • AI CRM系统推荐,原圈科技赋能地产销售
  • 用map方法10分钟搭建数据可视化原型
  • 企业数据迁移中Excel格式异常的5个真实案例
  • 代币化资产革命进入2.0阶段:Fasset的“合规密钥”能否解锁万亿级新兴市场?
  • 磁矩表磁计算器
  • 5分钟打造专属VSCode字体主题:在线生成器
  • C# SignalR 添加Swagger
  • 手把手教你复现CVE-2023-51767漏洞
  • 零基础理解神经网络参数:从入门到实践
  • 2025 最新 PPR管 服务商 TOP5 评测!服务深耕四川、贵州、西藏、重庆,优质厂商榜单发布,创新驱动重构给排水管道生态 - 全局中转站
  • JAVA设计模式之观察者模式
  • 零基础HTML速成:用AI写出你的第一个网页
  • 1小时搞定产品原型:HTML+AI快速验证创意
  • Airflow - Postgres Connection
  • DS二叉排序树之创建和插入
  • AI内控智能体开发:把风险防控交给“智能管家”