南开高级语言程序设计2-1

news/2024/11/16 16:16:02/文章来源:https://www.cnblogs.com/AuroraKelsey/p/18549429

南开高级语言程序设计2-1的oj题目答案,本人亲测AC,供大家参考。
2-2的见主页

字符串旋转

题目描述
定义字符串的旋转操作为:

左旋转 L :把字符串前面的若干个字符移动到字符串的尾部,如把字符串abcdef左旋转2位得到字符串cdefab。

右旋转 R :把字符串后面的若干个字符移动到字符串的头部,如把字符串abcdef右旋转2位得到字符串efabcd

输入格式
第一行一个整数N(1<=N<=20)表示有N组测试数据。

接下来的N行,每行有一个字符串S(长度1<S<=15); 操作M; 旋转的位数n(0<=n<=20)。当操作M为L时,代表将字符串左旋转n 位,M为R时,代表将字符串右旋转n位,M为除了R和L的其它无效操作时,按要求输出。

输出格式
相应操作(包括无效操作)之后的字符串,按照顺序输出奇数位置的字符。

样例
输入样例

2
abcdef L 2
abcdef R 2
输出样例

cea
eac
提示
字符串由大小写字母组成,无空格及标点符号。 如果移动的位数大于字符的长度,移动一圈后还要继续移动。

#include <iostream>
#include <string>
using namespace std;
int main(){int n,bit;string s,m;cin>>n;for(int i=1;i<=n;i++) {cin>>s>>m>>bit;int len=s.length();bit%=len;s+=s;if(m[0]=='L') {for(int j=bit;j<bit+len;j+=2)printf("%c",s[j]);}else if(m[0]=='R'){for(int j=len-bit;j<len-bit+len;j+=2)printf("%c",s[j]);}else {for(int j=0;j<len;j+=2)printf("%c",s[j]);}printf("\n");}return 0;
}

学生结构体

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
struct Student {string id, name;double math, chi, eng;
} s[105];bool cmp1(Student a,Student b) {if(a.math!=b.math) return a.math>b.math;else return a.id<b.id;
}
bool cmp2(Student a,Student b) {if(a.chi!=b.chi) return a.chi>b.chi;else return a.id<b.id;
}
bool cmp3(Student a,Student b) {if(a.eng!=b.eng) return a.eng>b.eng;else return a.id<b.id;
}
int main() {int n,m;cin >> n;for (int i = 1; i <= n; i++)cin >> s[i].id >> s[i].name >> s[i].math >> s[i].chi >> s[i].eng;cin>>m;switch (m) {case 1:sort(s+1,s+1+n,cmp1);break;case 2:sort(s+1,s+1+n,cmp2);break;case 3:sort(s+1,s+1+n,cmp3);break;default:printf("ERROR");return 0;}for (int i = 1; i <= n; i++)cout<<s[i].id<<" "<<s[i].name<<endl;return 0;
}

数组合并

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;int a[205];
int main() {int n,m;cin>>m>>n;for(int i=1;i<=n+m;i++)cin>>a[i];sort(a+1,a+1+n+m);int len= unique(a+1,a+1+n+m)-a-1;for(int i=1;i<len;i++)printf("%d ",a[i]);printf("%d\n",a[len]);return 0;
}

矩阵运算

#include <iostream>
#include <string>
#include <algorithm>using namespace std;int a[20][20];
int n, m;
bool row_flag[20], column_flag[20];void print_rows(int row, int head, int tail, bool minus) {if (head > tail || row_flag[row] || head <= 0 || tail > m) return;if(row==1) {printf("%d",a[1][1]);head++;}switch (minus) {case true:for (int i = tail; i >= head; i--)printf(" %d", a[row][i]);break;case false:for (int i = head; i <= tail; i++)printf(" %d", a[row][i]);break;}row_flag[row] = true;
}void print_columns(int column, int head, int tail, bool minus) {if (head > tail || column_flag[column] || head <= 0 || tail > n) return;switch (minus) {case true:for (int i = tail; i >= head; i--)printf(" %d", a[i][column]);break;case false:for (int i = head; i <= tail; i++)printf(" %d", a[i][column]);break;}column_flag[column] = true;
}int main() {cin >> n >> m;for (int i = 1; i <= n; i++)for (int j = 1; j <= m; j++)cin >> a[i][j];//蛇形printf("%d", a[1][1]);for (int i = 1; i <= n; i++) {int j;if (i % 2) {//奇数行正序j = 1;if (i == 1) j = 2;for (; j <= m; j++)printf(" %d", a[i][j]);} else {j = m;for (; j > 0; j--)printf(" %d", a[i][j]);}}printf("\n");//回转输出int up, down;int left = 0, right;bool minus = true;for (int i = 1; i <= (n + 1) / 2; i++) {up = i;down = n - i + 1;left++;right = m - left + 1;print_rows(up, left, right, !minus);print_columns(right, up + 1, down - 1, !minus);print_rows(down, left, right, minus);print_columns(left, up + 1, down - 1, minus);if (left >= right) break;}return 0;
}

距离最近的素数

#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
bool judge(int x) {for(int i=2;i<=sqrt(x);i++)if(x%i==0)return false;return true;
}
int main() {int n,m;cin>>n;for(int i=1;i<=n;i++) {cin>>m;if(m>=1000000||m<=0) {printf("INCORRECT INPUT!\n");continue;}if(m==1) {printf("2 1\n");continue;}if(judge(m)) {printf("%d 0\n",m);continue;}int left,right,ldis=10000000,rdis=10000000;for(int j=1+m;;j++) {if(judge(j)) {right=j;rdis=j-m;break;}}for(int j=m-1;j>0;j--) {if(judge(j)) {left=j;ldis=m-j;break;}}if(ldis>rdis) {printf("%d %d\n",right,rdis);} else {printf("%d %d\n",left,ldis);}}return 0;
}

重载函数

#include <iostream>
#include <algorithm>
#include <vector>using namespace std;void OddFilter(int a[], int size) {sort(a + 1, a + 1 + size);for (int i = 1; i < size; i++)printf("%d ", a[i]);printf("%d\n", a[size]);
}void OddFilter(char a[], int size) {sort(a + 1, a + 1 + size);for (int i = 1; i < size; i++)printf("%c ", a[i]);printf("%c\n", a[size]);
}int trans(string x) {//判断是否为奇数int ans = 0;for (int i = 0; i < x.length(); i++) {if (x[i] == '.') {if (x[i + 1] > '4')ans += 1;break;}ans *= 10;ans += x[i] - '0';}return ans;
}int main() {int n, m;cin >> n >> m;int a[1005];int b[1005];string str;int x, siz = 0;for (int i = 1; i <= n; i++) {cin >> x;if (x % 2) a[++siz] = x;}if (!siz) printf("No Odd!\n");else OddFilter(a, siz);siz = 0;int y;for (int i = 1; i <= m; i++) {cin >> str;y = trans(str);if (y % 2) b[++siz] = y;}if (!siz) printf("No Odd!\n");else OddFilter(b, siz);int cnt[1000];char c[1005];bool flag[1005];siz = 0;cin >> str;for (int i = 0; i < str.length(); i++)cnt[str[i] - '0']++;for (int i = 0; i < str.length(); i++)if (cnt[str[i] - '0'] % 2 && !flag[str[i] - '0']) {c[++siz] = str[i];flag[str[i] - '0'] = true;}if (!siz) printf("No Odd!\n");else OddFilter(c, siz);return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

KBPC3510-ASEMI整流桥KBPC3510参数、封装、尺寸

KBPC3510-ASEMI整流桥KBPC3510参数、封装、尺寸编辑:ll KBPC3510-ASEMI整流桥KBPC3510参数、封装、尺寸 型号:KBPC3510 品牌:ASEMI 封装:KBPC-4 正向电流:35A 反向电压:1000V 引脚数量:4 芯片个数:4 芯片尺寸:50MIL 漏电流:>10ua 恢复时间:>2000ns 浪涌电流:…

IDEA中操作表

Navicat中创建的表,同时也可以在IDEA中打开。 IDEA中侧边可以创建架构 可以选择相应排序规则以及创建新的表,但不如navicat方便

使用while循环分别对两个vector进行赋值,该怎么做

问题 在写程序的时候遇到了这样一个问题,见代码 #include <iostream> #include <vector>using namespace std;bool isequal(vector<int> vshort, vector<int> vlong) {for (int index = 0; index != vshort.size(); index++)if (vshort[index] != vlo…

合并具有文本框的Word文档:VBA代码批量操作

本文介绍基于VBA语言,对大量含有图片、文本框与表格的Word文档加以批量自动合并,并在每一次合并时添加分页符的方法~本文介绍基于VBA语言,对大量含有图片、文本框与表格的Word文档加以批量自动合并,并在每一次合并时添加分页符的方法。在我们之前的文章中,介绍过基于Pytho…

streamstring类介绍

std::stringstream 是 C++ 标准库中提供的一个类,定义在头文件 <sstream> 中。它是基于字符串的流(stream),允许像操作输入流(std::cin)或输出流(std::cout)那样,操作字符串内容。 std::stringstream 是 std::iostream 的派生类,支持同时进行字符串解析(输入)…

爬虫

程序示例: import java.util.regex.Matcher; import java.util.regex.Pattern;public class RegexDemo6 {public static void main(String[] args) {/** 有如下文本, 请按照要求爬取数据. * Java 自从 95 年问世以来, 经历了很多版本, 目前企业中用的最多的是 Java8 和 Java11,…

将数值转换为字符串的函数

在 C++ 中,itoa 和 sprintf 是用于将数值转换为字符串的经典函数。然而,它们有一定的局限性或者安全性问题,现代 C++ 更倾向于使用标准库的解决方案,如 std::to_string 和 std::stringstream,来代替这些函数。 1. itoa 的替代 itoa 是一种将整数转换为字符串的函数,但它不…

20222406 2024-2025-1 《网络与系统攻防技术》实验五实验报告

20222406 2024-2025-1 《网络与系统攻防技术》实验五实验报告 1.实验内容对网站进行 DNS 域名查询,包括注册人、IP 地址等信息,还通过相关命令查询 IP 地址注册人及地理位置。尝试获取 QQ 好友 IP 地址并查询其地理位置。使用 nmap 对靶机环境扫描,获取靶机 IP 活跃状态、开…

delphi 新版内存表 FDMemTable

c++builder XE 官方demo最全60多个 http://community.embarcadero.com/blogs?view=entry&id=8761FireDAC.Comp.Client用好FDMemTable代替之前的ClientDataSet,以前ClientDataSet内存表转换太繁琐了步骤。TClientDataSet *cds = new TClientDataSet(this); DataSetProvid…

理想雪 - 翠鸟协会

写在前面3844 字 | 小说 | 热爱 | 思考 | 表达 | 坚定 | 证明 | 坚守《理想雪》系列故事均为架空世界观,所有人名、地名等与现实世界无任何关联。该系列只且仅只为了说明,小说作者在该情境下会诞生的想法和采取的行动,以及背后的世界观、价值观和人生观。因此将具有强烈的个…

专题课:综合案例5

评委打分解答: 1.首先肯定要键盘录入6个评委的分数6个评委的分数,即6个变量,我们肯定用数组更加方便,因为后面求和求最大值之类的,用数组都更简单 遍历数组,我们每键盘打出一个元素就将其放入数组中 . 2.然后定义求和变量,将6个分数求和3.for循环搭配if筛选求最大、最小…

# 20222403 2024-2025-1 《网络与系统攻防技术》实验六实验报告

1.实验内容 本实践目标是掌握metasploit的用法。 指导书参考Rapid7官网的指导教程。 https://docs.rapid7.com/metasploit/metasploitable-2-exploitability-guide/ 下载官方靶机Metasploitable2,完成下面实验内容。 (1)前期渗透 ①主机发现(可用Aux中的arp_sweep,search一…