hdoj上的一题和程序设计第二次作业的拓展-人见人爱a+b
hdoj上一道有意思的题目,题目:
人见人爱a+b
敲的也蛮快的,大概十分钟左右就AC了。代码如下:
人见人爱a+b
#include<stdio.h>
int main()
{
int n,i,j,a1,a2,a3,b1,b2,b3,c1=0,c2=0,c3=0;//c1记录小时,c2记录分钟,c3记录秒;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d%d%d%d%d%d",&a1,&a2,&a3,&b1,&b2,&b3);
c3=a3+b3;
if(c3>=60)
{
c3=c3-60;
c2++;//分钟+1;
}
c2=c2+a2+b2;
if(c2>=60)
{
c2=c2-60;
c1++;//小时+1;
}
c1=c1+a1+b1;
printf("%d %d %d\n",c1,c2,c3);
c1=0;
c2=0;
c3=0;
}
return 0;
}

这题蛮有意思的,与往常的a+b题目不同,这里的a和b有一定的范围,它和时间计数的小时分钟秒类似,其中的分钟和秒的具体范围是
0-60,于是相加以后就要判断有没有超出范围,有的话小时+1或者分钟+1。
回顾之前的面向对象程序设计课第二次作业,其题目也是不走寻常路,我在之前的博客也记录了它:程序设计第二次作业
这里来说说A+B*C和A+B/C的情况。
一、A+B*C
要求:输入均为整数,数值范围在(-1000000,1000000)之间。
代码如下:
#include <stdio.h>
int main()
{
int a, b,c,n;
scanf("%d %d %d",&a,&b,&c);
n=a+b*c;
if(n<0)
{
printf("-");//输出“-”号
n=-n;//取其绝对值
}
if(n<1000) printf("%d\n",n );
else if(n<1000000) printf("%d,%03d\n",n/1000,n%1000 );
else printf("%d,%03d,%03d\n",n/1000000,n%1000000/1000,n%1000 );//判断n的范围,用0补充位数
return 0;
}
A+B*C的做法与第二次作业的做法类似,用n来记录a+b*c的值,首先取其绝对值,如果是负数输出-号;再进行范围判断,通过%03d来补充位数。
二、A+B/C
要求:输入均为整数,数值范围在(-1000000,1000000)之间。保留两位小数。
代码如下:
#include<stdio.h>
int main()
{
int a,b,c,intn=0,intp=0;
double dout=0,doum=0;
scanf("%d%d%d",&a,&b,&c);
intn=a+b*1.0/c;//n is int; mistake: b*1.0/c;
dout=a+b*1.0/c;//t is double; mistake: b*1.0/c;
doum=dout-intn;//doum : decimal
intp=doum*100;//intp : (int)decimal*100
if(intp<0)intp=-intp;// |intp|;
if(intn<0)
{
printf("-");
intn=-intn;
}
if(intn<1000) printf("%d",intn );
else if(intn<1000000) printf("%d,%03d",intn/1000,intn%1000 );
else printf("%d,%03d,%03d",intn/1000000,intn%1000000/1000,intn%1000 );
printf(".%02d",intp);//print the part of decimal
return 0;
}
//-10 1 3
//-10 1 4
//-1000000 1 3
//1000000 1 4
//-1000 9 1
要求二相对要求一和之前的题目来说更难一些,我简单的阐述一下我的思路:
我定义整形变量intn和intp,intn来存储a+b/c的整数部分,intp来存储a+b/c的小数*100,也就是说我输出的时候,整数部分交由之前的方法处理,输出整数部分以后输出.和intp的绝对值。
取小数部分的做法:我先用一个int变量intn存储a+b/c的值,再用double类型的变量dout存储a+b/c的值,用两个值作差来得到小数部分,用double类型的doum来存储,最后intp把doum*100存储(相当于小数点后两位的数字)。
还有一个注意点是,最后我输出的格式:printf(".%02d",intp);用0补充位数。
遇到的问题:

在之前的代码里,我在给intn赋值的语句是:
intn=a+b/c,这这导致b/c的计算结果是0,而不是我想要的0.33。
改进:intn=a+b*1.0/c
通过这一类型的题目,让我巩固了一些遗漏的知识点。
a+b看似很简单,但是其中的题目还是隐藏着“杀机”。
2016/2/26
hdoj上的一题和程序设计第二次作业的拓展-人见人爱a+b的更多相关文章
- 程序设计第二次作业<1>
面向对象程序设计第二次作业<1> Github 链接:https://github.com/Wasdns/object-oriented 题目: <1>第一次尝试 我立马认识到 ...
- C语言程序设计第二次作业--顺序结构
C语言程序设计第二次作业--顺序结构 1.输出带框文字:在屏幕上输出以下3行信息. ************* Welcome ************* 源程序 #include <stido ...
- 面向对象程序设计 第二次作业<1>
Github链接:https://github.com/zora02/object-oriented/tree/master/1001.A%2BB%20Format%20(20) 一.解题 题目 解题 ...
- C语言程序设计第二次作业——顺序结构
(一)改错题 1.输出带框文字:在屏幕上输出以下3行信息. 错误信息1: 错误原因:i和d位置错误 改正方法:i和d位置互换 错误信息2: 错误原因:\n后缺了一个" 改正方法:\n后加一个 ...
- C语言程序设计第二次作业—————顺序结构改
1.输出带框文字:在屏幕上输出以下3行信息. ************* Welcome ************* 源程序 #include <stido.h> int mian() { ...
- C语言程序设计第二次作业1
(一)改错题 1.输出带框文字:在屏幕上输出以下3行信息. ************* Welcome ************* 源程序 include int mian() { printf(&q ...
- C语言程序设计第二次作业0
(一)改错题 1.输出带框文字:在屏幕上输出以下3行信息. ************* Welcome ************* 源程序 include int mian() { printf(&q ...
- C语言程序设计第二次作业—————顺序结构
(一)改错题 1.输出带框文字:在屏幕上输出以下3行信息. ************* Welcome ************* 源程序 include int mian() { printf(&q ...
- C语言程序设计第二次作业
一.学习内容 掌握关系运算符.逻辑运算符.条件运算符 掌握常用数学函数的用法 if语句(单分支,双分支和多分支) 用switch语句实现多分支 理解多个if语句,if...else if... 和if ...
随机推荐
- Shell初学(一)hello world
精简: 1.创建:可以使用 vi/vim 命令来创建文件如: test.sh ,扩展名并不影响脚本执行,写什么都可以. 2.hello_world: #!/bin/bash ...
- mysql 数据表操作 存储引擎介绍
一 什么是存储引擎? 存储引擎就是表的类型. mysql中建立的库===>文件夹 库中建立的表===>文件 现实生活中我们用来存储数据的文件有不同的类型,每种文件类型对应各自不同的处理机制 ...
- 008-插件方式启动web服务tomcat,jetty
一.pom引入 1.tomcat7 <!-- tomcat7 --> <plugin> <groupId>org.apache.tomcat.maven</g ...
- TCP/UDP client/server library for Java, 最好的java语言tcp udp 服务器客户端实现库
这个库andrdoi也可以用,而且是基于类的使用方式: 它支持类似聊天室的功能,即一个人说话,所有客户端都能收到,当然也支持点点通信.它还支持 RMI 的方式调用远程过程. https://githu ...
- [运维-安全]CentOS7.0环境下安装kangle和easypanel
一.康乐简介 主要特点1.免费开源kangle技术团队希望国人拥有一款真正好用.易用.实用的国产web服务器.2.跨平台可在linux.windows.freebsd.openbsd.netbsd.s ...
- There are 2 missing blocks. The following files may be corrupted
There are 2 missing blocks. The following files may be corrupted: 步骤1,检查文件缺失情况 可以看到, blk_1074785806 ...
- Python爬虫第一个成功版
爬取http://www.mzitu.com/all里面的图片 import urllib.request import re import os url = 'http://www.mzitu.co ...
- 获取Let`s Encrypt证书的三种方式
1,acme.sh 方式 1)获取acme脚本 curl https://get.acme.sh | sh 2)开始获取证书 acme.sh强大之处在于,可以自动配置DNS,不用去域名后台操作解析记录 ...
- ev3_basic——HITCON CTF 2018
[MISC] EN-US This challenge provides a jpg file and a pklg file. The jpg is shown a part of string o ...
- jmeter Bean Shell的使用(二)
BeanShell的用法 在此介绍下BeanShell PreProcessor的用法,其它的beahshell可以类推.在此我们使用beahshell调用自己写的工具类,工具类实现了密码的加.解密功 ...