写博客的第六周

这周我们学校举行了 一个小比赛 里面的一些题和有意思 和大家分享分享

1 小李与小王

题目描述
小李最近喜欢上一个女生,但是这个女生已经有了对象王某,小李很不服气,他想知道他有哪些方面比王某强,现在有语文成绩、数学成绩、英语成绩、身高以及体重五项需要比较。如果小李有三项以上比王某强的地方,那么小李将考虑下一步的计划~
已知现在需要比的有 语文成绩、数学成绩、英语成绩、身高以及体重,在成绩和身高这两方面,只要小李比王某高,那就说明这一项小李比王某强,在比体重时,只要小李比王某轻,那么小李比王某强,所有项目的比较中,如果两个人数值上相等,则王某强。

输入
第一行输入王某的入语文成绩、数学成绩、英语成绩、身高以及体重,均大于0。
第二行输入小李的入语文成绩、数学成绩、英语成绩、身高以及体重,均大于0。
输出
判断小李需不需要安排下一步计划,如果需要则输出“YE5”,不需要则输出“N0”,输出单独占一行。
样例输入
66 77 88 99 100
67 78 89 100 100
样例输出
YE5

{
    double a[2][5];//定义二维数组

    int c=0,d=0,i,j;
    for(i=0;i<2;i++)
    {
        for (j=0;j<5;j++)
        {
            scanf("%lf",&a[i][j]); 
        }
    }
     for(i=0;i<1;i++)//四个for循环 前两个输入 后两个判断
    {
        for (j=0;j<4;j++)
        {
            if(a[i][j]<a[i+1][j])
            {
                c++;
            }
        }
    }
    if(a[0][5]>a[1][5])//第五组是要单独判断的 谁小 谁胜
        c=c+1;
    else
            c=c;

    if(c>=3)
        printf("YE5");
    else
    {
        printf("N0");
    }

    return 0;
}

认真观察题就可以发现 就是五组数据的比较 所以我定义了一个二维数组 进行判断

2 耗子尾汁

友们好啊,我是浑元形意太极门掌门人马保国。
刚才有个朋友问我马老师发生肾磨石了,我说怎么回事,给我发了一几张截图,我一看!嗷!原来是昨天,有两个年轻人,三十多岁,一个体重,九十多公斤,一个体重八十多公斤,他们说,唉…有一个说是我在健身房练功颈椎练坏了,马老师你能不能教教我浑元功法,矮…帮助治疗一下,我的颈椎病。我说可以。我说你在健身房练死劲儿,不好用,他不服气。我说小朋友:你两个手来找我一个手指头,他找不动。他说你这也没用。我说我这个有用,这是化劲儿,传统功夫是讲化劲儿的色狼啵千金。二百多斤的英国大力士,都挝不动我这一个手指头。啊…哈!他非和我试试,我说可以。诶…我一说的 啪!就站起来了,很快啊!
然后上来就是一个左正蹬一个右边腿一个左刺拳,我全部防区,防出去了啊,防出去以后自然是传统功夫点到为止,右拳放到他鼻子上没打他,我笑一下准备收拳,由这时间,欸传统功夫的点到为止他已经输了,如果这一拳发力,一拳就把他鼻子打骨折了,放在鼻子上没有打他,他也承认,我先打到他面部。他不知道拳放在他鼻子上,他承认我先打到他面部,啊,我收拳的时间不打了,他突然袭击左刺拳来打我脸,啊,我大意了啊,没有闪,矮…他的左拳给我眼,啊,右眼,蹭了一下,但没关系啊!他也说,啊他截图也说了,两分多钟以后,当时流眼泪了,捂着眼,我说停停。然后两分钟钟以后,两分多钟以后诶就好了,我说小伙子你不讲武德,你不懂,他说马老师对不对不起,我不懂规矩。啊,我是…他说他是乱打的,他可不是乱打的啊,蹬蹬,边腿,左刺拳,训练有素,后来他说他练过三四年泰拳,啊,看来是有备而来!
这两个年轻人不讲武德,来骗,来偷袭,我六十九岁的老同志,这好吗?这不好,我劝这位年轻人耗子尾汁,好好反思,以后不要再犯这样的聪明,小聪明,啊,呃…武林要以核为贵,要讲武德,不要搞窝里斗,谢谢朋友们!
输入
输入为两行,
第一行表示双方交手次数为n次;
下面n行每行2个整数,自然数表示马老师防御点数,负数表示对方攻击点数,若攻击点数大于防御点数则马老师将会受到伤害(若马老师先手防御则判定为防御过早,没有成功阻挡攻击,马老师血量为100)
输出
输出马老师的剩余血量
样例输入
5
-2 5
3 -4
-5 2
-1 0
-2 2
样例输出
92
题目很有意思 也很简单 看清楚条件就可以啦

第一次交手攻击为2,防御为5,即完全防御; 

第二次交手马老师先手防御,即防御过早,所以受到伤害4点; 

第三次交手攻击为5,防御为2,受到3点伤害; 

第四次交手攻击为1,防御为0,受到1点伤害; 

第五次交手攻击为2,防御为2,完美防御,不受伤害; 

即马老师最终受到8点伤害,剩余血量为92。 
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int s=100;
    int n,i,a,b;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d%d",&a,&b);
        if(a>=0&&b<0)
            s=s+b;
        else
        {
            if(a+b<0)
            s=s+a+b;
        }
    }
    printf("%d",s);
    return 0;
}

3 1A2B3C

给定一个只包含’ a’ - 'z '的字符串,我们可以使用以下方法对其进行编码:1 .每个包含k个相同字符的子串应该被编码为“kx”,其中“x”是这个子串中的唯一字符。2.如果子字符串的长度为1,则应忽略“1”。输入第一行包含一个整数n (1 <= n <= 100 ),表示测试用例的数量。接下来的n行包含n个字符串。每个字符串仅由“a”-“z”组成,长度小于10000。输出对于每个测试用例,输出一行编码的字符串。
样例输入
2
ABC
ABBCCC
样例输出
ABC
A2B3C

#include <stdio.h>
#include <string.h>

int main()
{
    int n,i,sum;
    char str[10001];
    scanf("%d",&n);
    while(n--)
    {
        sum=1;
        scanf("%s",str);
        for(i=0;i<strlen(str);i++)
        {
            if(str[i]==str[i+1])
            {
                sum++;
            }
            else
            {
                if(sum<=1)
                {
                    printf("%c",str[i]);
                    sum=1;
                }
                else
                {
                    printf("%d%c",sum,str[i]);
                    sum=1;
                }
            }
        }
        printf("\n");
    }
    return 0;
}

这个就是前一个和后一个比较 if判断句句多了一点 认真分析 也可以做的

4 反向数

小明在家里实在是太无聊了,他就在想如果将一个数的数字顺序颠倒,然后再加上原来的数,就会得到了一个新的数。小明将这个新的数称为“反向数”。
例如,为了得到1325的“反向数”,首先我们将该数的数字顺序颠倒,我们得到5231,之后再加上原来的数,我们得到5231+1325=6556。如果颠倒之后的数有前缀零,
前缀零将会被忽略。
输入
输入包括一个整数n(1<=n<=10^5)
输出
输出一个整数,表示n的反向数。
样例输入
1325
样例输出
6556

        #include<stdio.h>
        int main()
        {
            long long int a,b=0,x,c;
            scanf("%lld",&a);
            x=a;
            while(a>0)
            {
               c=b*10+a%10;//反向排列并加位权
               b=c;//储存c的值
               a=a/10;//舍去最后一位,循环
            }
                printf("%d",x+b);

            return 0;
        }

解释都在代码里了

好啦 就到这里了 总结一下
1 对于问题较长的题目 其实不难 很多字都在给你提示 认真一点就好
2 灵活运用数组 注意两个for循环 一个赋值 一个判断 (输出)

(以上内容为原创 如有问题多多指正)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值