2018级《程序设计基础(B)》期末机考--18计科(1801--1806)

今年是哪年?:

签到 :

#include
using namespace std;
int main()
{
    int n;
    scanf("%d",&n);
    if(n>=2018)printf("What?\n");
    else printf("I know\n");
    return 0;
}

珂朵莉与黄油面包:

打印图形 ,上下折半分别处理,for 循环实现,数一下 每一行的 空格 的数目与 “ * ” 的数目 与对应行的下标之间的规律即可。

#include
using namespace std;
int n;
int main()
{
    scanf("%d",&n);
    for(int i=1; i<=n; i++)
    {
        for(int j=1; j<=n-i; j++)printf(" ");
        printf("*");
        for(int j=1; j<=2*i-3; j++)printf(" ");
        if(i!=1)printf("*");
        printf("\n");
    }
    for(int i=n-1; i>=1; i--)
    {
        for(int j=1; j<=n-i; j++)printf(" ");
        printf("*");
        for(int j=1; j<=2*i-3; j++)printf(" ");
        if(i!=1)printf("*");
        printf("\n");
    }
    return 0;
}

珂朵莉与失忆:

数据 :1 <= l <= r <= 100

可以直接枚举因子判断是否是素数(注意特判 1)。

#include
using namespace std;
int n,m,tp,l,r;
int main()
{
    while(~scanf("%d%d",&l,&r))
    {
        int ans=0;
        for(int i=l; i<=r; i++)
        {
            bool flag=0;
            if(i==1)flag=1;
            for(int j=2; j<=sqrt(i); j++)
                if(i%j==0)flag=1;
            if(!flag)
            {
                tp=i;
                while(tp)
                {
                    ans+=tp%10;
                    tp/=10;
                }
            }
        }
        printf("%d\n",ans);
    }
    return 0;
}

珂朵莉与圣剑

注意数据类型 ,选择自己喜欢的排序实现即可

#include
using namespace std;
struct node
{
    int x,y;
    double z;
    bool operator < (const node &c)const
    {
        return z>c.z;
    }
} a[1234];
int main()
{
    int n,k;
    double c,d;
    scanf("%d%d",&n,&k);
    for(int i=0; i

珂朵莉与斯卡布罗集市

由于数字都不同可以唯一确定 某个数的位置。查找其位置,

坐标(x1, y1)的 i 点与坐标(x2, y2)的 j 点的 曼哈顿距离 为:

d(i,j) = |X1-X2| + |Y1-Y2|.

#include
using namespace std;
int n,m,x,y,a[123][123],xx;
int main()
{
    scanf("%d%d",&n,&m);
    for(int i=1; i<=n; i++)
        for(int j=1; j<=m; j++)
        {
            scanf("%d",&a[i][j]);
            if(a[i][j]==1)x=i,y=j;
        }
    scanf("%d",&xx);
    for(int i=1; i<=n; i++)
        for(int j=1; j<=m; j++)
        {
            if(xx==a[i][j])
            {
                printf("%d\n",abs(i-x)+abs(j-y));
                return 0;
            }
        }
    return 0;
}

珂朵莉与妖精仓库的妖精们

直接预处理存储四个名字 ,遍历统计计数即可。

#include
using namespace std;
int a[5],len;
string s[5]= {"Nephren","Ithea","Rhantolk","Nopht"},str;
int main()
{

    cin>>str;
    len=str.size();
    for(int i=0; i

珂朵莉与圣剑保养

按照题目要求函数实现即可:

#include
using namespace std;
int n,m;
int cal(int x,int y)
{
    if(x*y<=7)return x*y;
    else if(x>=0&&y>=0)return cal(x-2,cal(x-1,y-1));
    else if(m<0||n<0)return 1;
}
int main()
{
    while(~scanf("%d%d",&n,&m))
    {
        printf("%d\n",cal(n,m));
    }
    return 0;
}

最终之战

模拟,可以 循环实现,使用队列方便一点 

#include
using namespace std;
#define maxn 12
int ans;
mapjian;
struct node
{
    string str;
    double xue,gong,fang,su;
    int big;
    bool operator<(const node &c)const
    {
        return bigque;
    priority_queueq;
    for(int i=0; i<4; i++)
    {
        cin>>data[i].ss>>data[i].xue>>data[i].gong>>data[i].fang>>data[i].su>>data[i].dao;
        que.push(data[i]);
    }
    for(int i=6; i>=0; i--)
    {
        cin>>b[i].su;
        b[i].big=i;
    }
    b[6].xue=2333,b[6].gong=100,b[6].fang=7;
    b[5].xue=600,b[5].gong=34,b[5].fang=4;
    b[4].xue=200,b[4].gong=24,b[4].fang=3;
    b[3].xue=400,b[3].gong=43,b[3].fang=9;
    b[2].xue=500,b[2].gong=34,b[2].fang=3;
    b[1].xue=1100,b[1].gong=65,b[1].fang=6;
    b[0].xue=1400,b[0].gong=90,b[0].fang=2;
    for(int i=6; i>=0; i--)
        q.push(b[i]);
    while(1)
    {
        tp=que.front();
        que.pop();
        cp=q.top();
        q.pop();
        if(tp.sucp.su)
        {
            cp.xue-=(tp.gong+jian[tp.dao]-cp.fang)*2;
            tp.xue-=(cp.gong-tp.fang);
        }
        else
        {
            cp.xue-=(tp.gong+jian[tp.dao]-cp.fang);
            tp.xue-=(cp.gong-tp.fang);
        }
        if(cp.xue>0)q.push(cp);
        if(tp.xue>0)que.push(tp);
        ans++;
        if(q.size()==0)
        {
            flag=1;
            break;
        }
        if(que.empty())
        {
            flag=0;
            break;
        }
    }
    if(flag)
        printf("%d\n",ans);
    else printf("BOOM!\n");
    return 0;
}

 

你可能感兴趣的:(思维-模拟)