基础编程题目集
题目如下:
这道题目着实有点意思,比第一道题用了更少的时间,虽然wa了两次~~(虽然只是因为想看错哪里)~~
我以为这题很难(实际上点比较多而已)。
上一波最后的正确代码:
#include<stdio.h>
int main()
{
int hour, minute;
int a, b;
scanf("%d %d", &a, &b);//输入两个数据
if (b > 0) //看看流逝的分钟数是否为正
{
minute = (a % 100 + b) % 60;//先取个十两位再加上输入进去的分钟数,用60取余
hour = a / 100 + (a % 100 + b) / 60;//取百千两位再加上分钟进位上来的
if (minute >= 10)
printf("%d%d", hour, minute);
else
printf("%d0%d", hour, minute);
}
else
{
minute = a % 100;
hour = a / 100;
while (minute + b <= 0)
{
minute = 60 + minute;
hour--;
}
minute = minute + b;
if (minute >= 10)
printf("%d%d", hour, minute);
else
printf("%d0%d", hour, minute);
}
return 0;
}
虽然这样有一点点繁琐,可以把第二次判断放在放在第一次判断的外面。(但是我懒,直接复制了)
在和同学讨论中发现我的代码也有一点小问题-------一开始只注意了minute!=0的情况,还有1-9的情况。
有几个注意的点:
1、minute >= 60时要进位。(进多少hour加多少)
2、当minute为一位数的时候,你需要给minute前面加个0补齐:
if (minute >= 10)
printf("%d%d", hour, minute);
else
printf("%d0%d", hour, minute);
没错,就是上面这个语句,可以放到外面来着,但是我懒,就复制了。
3、这是我同学的代码出现的问题:
因为我用的是hour和minute两个变量,他用了一个变量,所以可能会出现当hour等于0的时候没输出0。
如果你的答案也是这样,那么可以翻到最后看看我的同学是怎么改的。
4、题干中有说第二个数可以是负数,所以你要考虑负数的情况(这就是为什么我wa了两次的原因之一)。
这是我一开始没有考虑道负数以及小毛病
#include<stdio.h>
int main()
{
int hour, minute;
int a, b;
scanf("%d %d", &a, &b);
minute = (a % 100 + b) % 60;
hour = a / 100 +(a % 100 + b) / 60;
if (minute <= 10)
printf("%d%d", hour, minute);
else
printf("%d0%d", hour, minute);
return 0;
}
如果出现上述小问题,可以看看自己的代码有啥错误呢。
现在,我要附上我同学一开始错误的代码了(少了0的):
#include <stdio.h>
int main()
{
int x, y, t, i, z, c, a, b, q;
scanf_s("%4d %d", &t, &i);
if (i >= 00)
{
x = t % 10;
y = ((t - x) / 10) % 10;
z = y * 10 + x;
c = (t - z) / 100;
a = z + i;
if (a >= 60)
b = a / 60;
else
b = 0;
c = c + b;
q = a - 60 * b;
printf("%d", 100 * c + q);
}
else
{
i = -i;
x = t % 10;
y = ((t - x) / 10) % 10;
z = y * 10 + x;
c = (t - z) / 100;
a = z - i;
if (a >= 0)
printf("%d", c * 100 + a);
else
{
a = -a;
if (a >= 60)
b = a / 60;
else
b = 0;
c = c - b - 1;
q = 60 - (a - 60 * b);
printf("%d", 100 * c + q);
}
}
return 0;
}
我知道,看错误代码不一定看得出来错哪里。
那就看看正确代码吧:
#include <stdio.h>
int main()
{
int x, y, t, i, z, c, a, b, q;
scanf("%4d %d", &t, &i);
if (i >= 0)
{
x = t % 10;
y = ((t - x) / 10) % 10;
z = y * 10 + x;
c = (t - z) / 100;
a = z + i;
if (a >= 60)
b = a / 60;
else
b = 0;
c = c + b;
q = a - 60 * b;
if (c == 0)
printf("0%d", q);
else
printf("%d", c * 100 + q);
}
else
{
i = -i;
x = t % 10;
y = ((t - x) / 10) % 10;
z = y * 10 + x;
c = (t - z) / 100;
a = z - i;
if (a >= 0)
if (c == 0)
printf("0%d", a);
else
printf("%d", c * 100 + a);
else
{
a = -a;
if (a >= 60)
b = a / 60;
else
b = 0;
c = c - b - 1;
q = 60 - (a - 60 * b);
if (c == 0)
printf("0%d", q);
else
printf("%d", c * 100 + q);
}
}
return 0;
}
显而易见,我的代码还是很简洁的哈哈哈哈。
就这样,第二题也轻松的解决了。