蓝桥杯预备 【入门1】序次布局

打印 上一主题 下一主题

主题 1680|帖子 1680|积分 5040

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
P5705 【深基2.例7】数字反转

  题目形貌

输入一个不小于 100100 且小于 10001000,同时包括小数点后一位的一个浮点数,比方 123.4123.4 ,要求把这个数字翻转过来,酿成 4.3214.321 并输出。
解题思路:利用字符串比较简单
  1. #include<iostream>
  2. #include<cmath>
  3. #include <string.h>
  4. using namespace std;
  5. int main()
  6. {
  7.         string str;
  8.         cin>>str;
  9.         int a=str.size();//获取字符串长度
  10.         for(int i=a;i>=0;i--)//字符串反转
  11.         {
  12.                 cout<<str[i];
  13.         }
  14.         return 0;
  15. }
复制代码
 注意点:
        如果输入字符串为123.4,此时字符串长度(a)为5。如果 int i=a,此时属于越界访问字符串的末尾。
办理方法:
        将int i=a ,改成 int i=a-1 即可
   P5707 【深基2.例12】上学迟到

  题目形貌

学校和 yyy 的家之间的间隔为 ss 米,而 yyy 以 vv 米每分钟的速度匀速走向学校。
在上学的路上,yyy 还要额外泯灭 10 分钟的时间进行垃圾分类。
学校要求必须在上午 8:00到达,请计算在不迟到的前提下,yyy 最晚能什么时候出门。
由于路途迢遥,yyy 可能不得不提前一点出发,但是提前的时间不会超过一天。
输入格式
一行两个正整数 s,vs,v,分别代表旅程和速度。
输出格式
输出一个 2424 小时制下的时间,代表 yyy 最晚的出发时间。
输出格式为 HH:MMHH:MM,分别代表该时间的时和分。必须输出两位,不足前面补 00。
思路及代码

第一部门:

  1. //定义加输入
  2.     int x,y;
  3.         cin>>x>>y;
  4. //计算总用时(分钟)
  5.         int a=0;
  6.         if(x%y==0)
  7.         {
  8.                 a=10+x/y;
  9.         }
  10.         else
  11.         {
  12.                 a=11+x/y;
  13.         }
  14. //转化为小时
  15.         int t=0;
  16.         while(a>=60)
  17.         {
  18.                 a=a-60;
  19.                 t++;
  20.         }
复制代码
优化

  1. //定义+输入
  2.         int x,y;
  3.         cin>>x>>y;
  4. //计算总分钟
  5.         int a=ceil(1.0*x/y)+10;
  6. //计算小时
  7.         int t=floor(a/60);
  8. //计算分钟
  9.         a=a-60*t;
复制代码
注意:
  1. //计算总分钟
  2.         int a=ceil(1.0*x/y)+10;
复制代码
x和y都是定义为int 类的整数,x/y表示整数相除,除法结果会执行向零舍入(即舍去小数部门),结果是一个整数,与此时我们想要的的ceil向上取整函数相悖。
办理方法:
将x/y整数相除转化成整数与浮点数混合运算,即添加1.0与x相乘,自动提升整数为浮点数,然后进行浮点除法。
第二部门

  1. //计算输出的时间
  2.         int h,m;
  3. //这天出发
  4.         if(a!=0&&t<=7)
  5.         {
  6.                 h=7-t;
  7.                 m=60-a;
  8.         }
  9.         else if(a==0&&t<=8)
  10.         {
  11.                 h=8-t;
  12.                 m=00;
  13.         }
  14. //提前一天
  15.         else if(a!=0&&t>7)
  16.                 {
  17.                         h=7-t+24;
  18.                         m=60-a;
  19.                 }
  20.         else if(a==0&&t>8)
  21.                 {
  22.                         h=8-t+24;
  23.                         m=00;
  24.                 }
复制代码
优化

  1.         int h,m;
  2. //a!=0
  3.         if(a!=0)
  4.         {
  5.                 h=7-t;
  6.                 m=60-a;
  7.                 if(h<0)
  8.                 {
  9.                         h=h+24;
  10.                 }
  11.         }
  12. //a==0
  13.         else if(a==0)
  14.         {
  15.                 h=8-t;
  16.                 m=00;
  17.                 if(h<0)
  18.                 {
  19.                         h=h+24;
  20.                 }
  21.         }
复制代码
第三部门

  1. //按格式输出
  2.         if(m<10&&h<10)
  3.         {
  4.                 cout<<"0"<<h<<":0"<<m<<endl;
  5.         }
  6.         else if(m>=10&&h<10)
  7.         {
  8.                 cout<<"0"<<h<<":"<<m<<endl;
  9.         }
  10.         else if(m<10&&h>=10)
  11.         {
  12.                 cout<<h<<":0"<<m<<endl;
  13.         }
  14.         else if(m>=10&&h>=10)
  15.         {
  16.                 cout<<h<<":"<<m<<endl;
  17.         }
复制代码
完备代码

  1. #include<iostream>#include<cmath>using namespace std;int main(){        int x,y;        cin>>x>>y;//计算总分钟
  2.         int a=ceil(1.0*x/y)+10;//计算小时        int t=floor(a/60);//计算分钟        a=a-60*t;//计算输出时分        int h,m;        if(a!=0)        {                h=7-t;                m=60-a;                if(h<0)                {                        h=h+24;                }        }        else if(a==0)        {                h=8-t;                m=00;                if(h<0)                {                        h=h+24;                }        }//按格式输出        if(m<10&&h<10)        {                cout<<"0"<<h<<":0"<<m<<endl;        }        else if(m>=10&&h<10)        {                cout<<"0"<<h<<":"<<m<<endl;;        }        else if(m<10&&h>=10)        {                cout<<h<<":0"<<m<<endl;        }        else if(m>=10&&h>=10)        {                cout<<h<<":"<<m<<endl;;        }        return 0;}
复制代码

小收获

导入头文件#include<cmath>
ceil() 函数----浮点数向上取整
floor() 函数----浮点数向下取整
abs() 函数----取绝对值




免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

大连密封材料

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表