夏季短学期实践———day3

基础题目(题目来源PTA)


夏季短学期实践———day3
代码如下:

#include<cstdio>
#include<iostream>
using namespace std;
int main()
{
    int n,k;
    cin>>n>>k;
    int f=n;
    int a[1005];
    for(int i=0;i<n;++i)
    {
        cin>>a[i];
    }
    for(int i=1;i<=k;++i)
    {
        int max=0;
        for(int j=1;j<n;++j)
        {
            if(a[max] > a[j])
            {
                int item=0;
                item = a[max];
                a[max] = a[j];
                a[j] = item;
                max =j;
            }
            if(a[max] <= a[j])
            {
                max = j;
            }
        }
        --n;
    }
    for(int i=0;i<f-1;++i)
       cout<<a[i]<<" ";
    cout<<a[f-1]<<endl;
    return 0;
}

总结:1.冒泡排序是本题解题关键,只需将冒泡次数改变就行。
夏季短学期实践———day3
代码如下:

#include <stdio.h>
#include <string.h>
int main()
{
    char s1[100];
    gets(s1);
    char s2[100];
    gets(s2);//输入字符串,可输入空格
    char a[105];//用于储存字符串   
    char *m;    //指向子串首字符
    while((m=strstr(s1,s2))!=NULL)//多次处理,直至s2不再为s1的子串
    {
        strcpy(a,m+strlen(s2));//保存从返回地址开始,去除子串后的余部
        *m = '\0';             //保存父串中返回地址前的部分
        strcat(s1,a);          //将改变的字符串拼接,即得到目标串
    }
    puts(s1);
    return 0;
}

总结:1.该题难点,输入与输出,运用c语言中的gets()和puts(),而c++语言则可以选择使用 string s;getline(cin,s); ( getline() 可以读取空格)
   2.本题运用多中头文件string.h中的函数,让解题变得更简便。

string.h头文件中 常见函数 简介

函数 功能简述
strcpy 复制字符串
strlen 返回字符串长度
strcat 把一个字符串添加到另一字符串后
strcmp 比较两个字符串
strchr 在字符串中查找另一个字符串首字符出现的位置
strerror 解释错误代码
strstr str(str1,str2)判断str2是否是str1的子串,如果是则返回str2在str1中首次出现的地址(指针),否则则返回NULL

夏季短学期实践———day3
夏季短学期实践———day3
代码如下:

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int main()
{
    int n,m;
    cin>>n>>m;
    string s[105];
    for(int i=0;i<n;++i)
    {
        cin>>s[i];
    }
    int k=n;
    for(int i=1;i<=m;++i)
    {
        int max=0;
        for(int j=1;j<n;++j)
        {
            if(s[max]>s[j])
            {
                string item;
                item = s[max];
                s[max] = s[j];
                s[j] = item;
            }
            max++;
        }
        --n;
    }
    for(int i=0;i<k;++i)
    {
        cout<<s[i]<<endl;
    }

    return 0;
}

总结:依旧是冒泡排序
夏季短学期实践———day3
代码示例:

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int main()
{
    string s;
    getline(cin,s);
    int n;
    cin>>n;
    int m=s.size();
    n = n%m;
    for(int i=n;i<m;++i)
         cout<<s[i];
    for(int i=0;i<n;++i)
         cout<<s[i];
    return 0;
}

总结:1.本题需要注意输入方法getline的使用和 取余的运用。
夏季短学期实践———day3
代码如下:

#include <iostream>
using namespace std;
int main()
{
    string s;
    getline(cin,s);
    int length = s.size();
    int m=0;
    if(s[0]==' ')
    {
        while(1)
        {
            ++m;
            if(s[m]!=' ')
            break;
        }
    }
    if(m==length-1)
    {
        cout<<s[m]<<endl;
        return 0;
    }
    if(m==length)
    {
        cout<<s[m]<<endl;
        return 0;
    }
    if(length==0)
    {
        return 0;
    }
    int x=length-1,y=length-1;
    while(1)
    {
        if(y==x && s[x]==' ')
        {
            while(1)
            {
                --x;
                --y;
                if(s[x]!=' ')
                    break;
            }
        }
        if(y==x && s[x]!=' ')
        {
            while(1)
            {
                if(s[x]!=' ')
                   x--;
                if(s[x]==' ')
                   break;
                if(x==m)
                {
                    for(int i=m;i<=y;++i)
                       cout<<s[i];
                    return 0;
                }
            }
            for(int i=x+1;i<=y;++i)
                cout<<s[i];
            if(x>m)
            cout<<" ";
            y=x;
        }
    }
    return 0;
}

夏季短学期实践———day3

上一篇:2021NUAA暑假集训 Day3 题解


下一篇:day3