1.
第一次源码
#include<stdio.h>
int main() {
double s,v;
int c,d,t;
scanf_s("%lf%lf", &s,&v);
c = s / v;//总时间
if ( c > 60) {
d = c % 60;
}//时
else
{
d = 0;
}//时
t = c -d*60+1;//分,这里的加一有点细节,应为他在浮点数转换为整形的时候省略了小数点后面的数字
if (50-t > 10) {
printf("0%d:%d", 7 - d, 50 - t);
}
else
{
printf("0%d:0%d", 7 - d, 50 - t);
}
//此处的if为了去分辨输出格式是否为00:00
return 0;
}
第二次
第一次代码两处出问题
(1)计算提前的分钟的时候小数位数不一定有,所以t不一定+1,所以应该用取整函数ceil
(2)计算需要的小时和分钟的计算方式反了应该是d=c/60,t=c%60
#include<stdio.h>
#include<math.h>
int main() {
double s,v;
int c,d,t;
scanf_s("%lf%lf", &s,&v);
c = ceil(s / v);//总时间
if ( c >=60) {
d = c / 60;
}//时
else
{
d = 0;
}//时
t = c %60;//分,这里的加一有点细节,应为他在浮点数转换为整形的时候省略了小数点后面的数字
printf("%02d:%02d", 7 - d, 50 - t);
//此处的if为了去分辨输出格式是否为00:00
return 0;
}
但是数据仍有不通过部分,原因暂且搁置
检查后两处错误(1)50-t有负数情况(2)没有考虑到时大于8的情况
正解
#include<stdio.h>
#include<math.h>
int main() {
double s,v;
int c,d,t;
scanf("%lf%lf", &s,&v);
c = 24*60+470-ceil(s / v);//总时间
if ( c >=24*60) {//c>24*60
d = (c-24*60)/ 60;//时
t = (c-24*60)% 60;//分
}
else
{
d = c/ 60;
t = c% 60;
}
printf("%02d:%02d",d ,t );
//此处的if为了去分辨输出格式是否为00:00
return 0;
}//洛谷此题没有完全ac暂且搁置
2.
源码
#include<stdio.h>
#include<math.h>
int main() {
int x,a,b,c,d;
scanf_s("%d",&x);
if (x%2==0&&(x>4&&x<=12)) {
a = 1;
}else
{
a = 0;
}
if (x % 2 == 0 ||(x > 4 && x <= 12)) {
b = 1;
} else
{
b = 0;
}
if ((x % 2 == 0 && !(x > 4 && x <= 12)) || (!(x % 2 == 0) && (x > 4 && x <= 12))) {
c = 1;
}
else {
c = 0;
}
if (x % 2 != 0 &&!(x > 4 && x <=12)) {
d = 1;
}else
{
d = 0;
}
printf("%d%d%d%d",a,b,c,d);
return 0;
}//大胆使用括号尤其涉及到||与&&灵活运用取反符号!
3.在写printf函数的时候重新复习了一遍printf和putchar
一开始报错如下
正确格式如下
4.
#include<stdio.h>
#include<math.h>
int main() {
double h,m,t;
scanf_s("%lf%lf",&m,&h);
t = m / (h*h);
if (t < 18.5)
printf("Underweight");
else if (t >= 18.5 && t < 24)
printf("Normal");
else if (t >= 24)
printf("%.6g\nOverweight", t);
return 0;
}
注意六位有效小数而不是六位小数