首页 > 编程语言 >南开高级语言程序设计2-1

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

时间:2024-11-16 16:08:32浏览次数:1  
标签:return 南开 int siz 高级 str printf 程序设计 include

南开高级语言程序设计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;
}

标签:return,南开,int,siz,高级,str,printf,程序设计,include
From: https://www.cnblogs.com/AuroraKelsey/p/18549429

相关文章

  • Python 实验五 面向对象程序设计
    实验五面向对象程序设计一、实验学时:2学时二、实验目的掌握:Python类的定义,class关键字,创建对象的方法,访问对象中的成员。掌握:私有成员与公有成员,数据成员与成员方法,类方法与静态方法,属性的定义与使用,混入机制。掌握:继承的作用与Python实现。掌握:构造函数__init__()......
  • Openlayers的多边形高级交互
    概述本文主要介绍Openlayers中,两个(或多个)多边形的高级交互,包括:并集,交集和差集运算.概念理解并集(Union):并集指的是将两个几何对象的所有区域合并在一起。即,结果是包含了两个对象所有区域的集合。如果两个几何形状有重叠部分,合并时不会重复这些部分。几何......
  • 深入探索LangChain的高级功能
    在当今的AI开发领域,LangChain以其独特的模块化设计和强大的功能集,成为大语言模型开发者的重要工具。本文将深入探讨LangChain的高级功能,展示其在复杂应用场景中的应用潜力。###LangChain的架构优势LangChain的设计理念是通过模块化和可扩展性,简化大语言模型的集成与管理。其核......
  • 2024-2025-1 20241318 《计算机基础与程序设计》第八周学习总结
    这个作业属于哪个课程https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP(如[2024-2025-1-计算机基础与程序设计])这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK08这个作业的目标加入云班课,参考本周学习资源自学教材计算机科学概......
  • 【SSM框架-毕业程序设计】-196-基于ssm驾校预约管理系统
    系列文章【SSM框架-毕业程序设计】196-基于ssm驾校预约管理系统文章目录系列文章【SSM框架-毕业程序设计】一、项目描述二、运行环境三、项目技术四、主要功能五、项目截图六、获取源码一、项目描述驾校预约管理系统是基于java编程语言,ssm框架,mysql数据库开发,本......
  • [Tricks-00003]CF1989F 套路叠加,高级分治
    先说一个简单问题:给定一个\(n\timesm\)的黑白网格图,每次可以将一行或者一列染成同一种色,判断是否能到达?经典做法:倒过来考虑,每次将颜色全相同或为*的一行全染成*,判断是否可以将这张图染成全*。经典网格图转二分图,如果\(s_{i,j}='W'\)则将\(i\)向\(j'\)连一条有向边,否......
  • 2024-2025-1 20241305 《计算机基础与程序设计》第八周学习总结
    作业信息这个作业属于哪个课程2024-2025-1-计算机基础与程序设计这个作业要求在哪里2024-2025-1计算机基础与程序设计第八周作业这个作业的目标1、功能设计与面向对象设计2、面向对象设计过程3、面向对象语言三要素4、汇编、编译、解释、执行作业正文本博客......
  • 2024-2025-1 20241320 《计算机基础与程序设计》第8周学习总结
    2024-2025-120241320《计算机基础与程序设计》第8周学习总结作业信息|这个作业属于哪个课程|https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP|这个作业要求在哪里|https://www.cnblogs.com/rocedu/p/9577842.html#WEEK08|这个作业的目标|功能设计与面向对象设计......
  • Windows程序设计指南
    “到Petzold的书中找找”——仍然是解决Windows程式开发各种疑难杂症时的灵丹妙药。在第五版的《Windows程式开发设计指南》中,作者身为倍受敬重的WindowsPioneerAward(Windows开路先锋奖)得主,依据最新版本Windows作业系统,以可靠的取材资料校定这一本经典之作——再一次深入探索了Wi......
  • Windows高级调试
    文档摘要:本书《Windows高级调试》主要讲解Windows高级调试技术和工具,包括调试器简介、调试器揭密、符号文件与源文件的管理、栈内存破坏、堆内存破坏、安全、进程间通信、资源泄漏、同步、编写定制的调试扩展、64位调试、事后调试、WindowsVista基础以及应用程序验证器的测试设......