用天梯赛打开暑假生活第四天

发布时间 2023-06-22 23:24:03作者: 寒心小呆

从坐牢到入门的程序设计(4)

开始时间2023-06-20 19:28:32

结束时间2023-06-22 23:15:18

前言:校青协不要办活动了!

L1-017 到底有多二

一、题目编号及题目说明

 二、程序功能测试及说明

  给一个数并输出它的犯二程度,保留小数点后两位。

三、程序设计思路及结构说明

  用字符串形式吸收这个数,定义count计算2的个数,声明标志物flag和nb,当首元素为-flag置为1.5,当尾元素为2的倍数nb置为2,用循环统计2出现的次数,并按照规范输出,

四、程序源代码

#include<bits/stdc++.h>
using namespace std;

int main()
{
    string s;
    cin >> s;
    int i = 0, count = 0;
    double flag=1.0,nb=1.0;
    int l = s.length();
    if(s[0] == '-') {
        flag =flag+ 0.5;
    }
    //printf("%f",flag);
    for(; i<l; i++) {
        if(s[i] == '2') count++;
    }
    if((s[l-1] - '0') % 2 == 0) {
        nb += 1;
    }
    //printf("%c",s[l]);
    double lv;
    if(flag==1)
    {
    lv = (double)count / (double)l * flag*nb ;
        
    }
    else lv = (double)count / (double)(l-1) *nb*flag;
    //printf("%d %d %f %f",count,l,flag,nb);
    printf("%.2f%%\n", lv * 100);
    return 0;
}

 五、题目评分

 L1-018 大笨钟

一、题目编号及题目说明

 二、程序功能测试及说明

  根据所给时间进行敲钟,午夜到中午12点不敲,12点后没过一小时敲一次,不满一小时按一小时计算。

 三、程序设计思路及结构说明

  用ab吸收小时和分钟,若b不为零且a在敲钟范围内敲钟次数加一,当a在12到24之间,敲钟次数为原敲钟次数加上a-12,但我们知道以整型的形式吸收时,会出现09变为9的现象。所以我们依据条件在输出语句中加上0.敲钟次数存在进行循环敲钟。

四、程序源代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int a,b;
    scanf("%d:%d",&a,&b);
    //printf("%d %d\n",a,b);//测试输入
    int sum=0;
    if(b!=0&&(a>=12&&a<24))sum+=1;
    if(a>=12&&a<24)sum=sum+a-12;
    if(sum==0)
    {
        if(a<10)
        {
            if(b<10)
            {
                printf("Only 0%d:0%d.  Too early to Dang.",a,b);
            }
            else printf("Only 0%d:%d.  Too early to Dang.",a,b);
        }
        if(a>=10&&a<=12)
        {
            if(b<10)
            {
                printf("Only %d:0%d.  Too early to Dang.",a,b);
            }
            else printf("Only %d:%d.  Too early to Dang.",a,b);
        }
    }
    for(int i=0;i<sum;i++)
        printf("Dang");
        
    printf("\n");
    return 0;
}

五、题目评分

 L1-019 谁先倒

一、题目编号及题目说明

 二、程序功能测试及说明

  第一行给两个数字为两人酒量,第二行给划拳次数,依据划拳次数分别给出数据,最后输出谁先倒下和另一人喝酒数量。

 

三、程序设计思路及结构说明

  用ab吸收两人酒量,接着a3和b3代表两人的酒量拷贝一下。用n吸收次数并以此做循环,分别用a1a2b1b2吸收甲喊出数字甲划拳数字乙喊出数字乙划拳数字,当a2与b2相等continue跳出当前循环,a2==a1+b1,甲输了得喝酒进行a--操作,b2==a1+b1,乙输了得喝酒进行b--操作。当a与b有一个为0,break跳出循环。用两个if语句检测ab谁是0并按照要求输出。

四、程序源代码

#include<stdio.h>
int main()
{
  int m,n,N,i,a=0,b=0,sum;
  scanf("%d %d %d",&m,&n,&N);
  int p[N][4];
  for(i=0;i<N;i++)
  {
    scanf("%d %d %d %d",&p[i][0],&p[i][1],&p[i][2],&p[i][3]);
  }
  for(i=0;i<N;i++)
  {
    sum=p[i][0]+p[i][2];
    if(sum==p[i][1]&&sum!=p[i][3])
      a++;
    else if(sum==p[i][3]&&sum!=p[i][1])
      b++;
    if(a>m)
    {
      printf("A\n%d\n",b);
      break;
    }
    if(b>n)
    {
      printf("B\n%d\n",a);
      break;
    }
  }
  return 0;
}

五、题目评分。

 总结:明天之后,一切都会暂时安定下来。

每日一mo:绿水青山今仍在,不见当年执墨人......