目录
一、混合类型数据格式化输入
#include <stdio.h>
int main() {
char ch;
int num;
float x, y;
scanf("%f %d %c %f", &x,&num,&ch,&y);
printf("%c %d %.2f %.2f",ch,num,x,y);
return 0;
}
实际上,以上代码在PTA自带的编译系统中是可通行的,但我的电脑中安装的是VS,那么scanf会替换为scanf_s,代码如下:
#include <stdio.h>
int main() {
char ch;
int num;
float x, y;
scanf_s("%f %d %c %f", &x,&num,&ch,1,&y);
printf("%c %d %.2f %.2f",ch,num,x,y);
return 0;
}
可以看到区别是很小的,就在于换成scanf_s后需要在&ch,后面加个1。出现该区别的缘由是,在vs环境中,scanf_s函数调用时必须申明字符长度。至于为什么scanf必须改为scanf_s,我也不太明白,有知道的朋友可以在评论区解释一下,谢谢!
二、12-24小时制
#include<stdio.h>
int main() {
int h, m;
scanf("%d:%d", &h, &m);
if (h == 12)
printf("%d:%d PM", h, m);
if (h > 12)
printf("%d:%d PM", h - 12, m);
if (h < 12)
printf("%d:%d AM", h , m);
return 0;
}
这道题的难点在对“中午12点被认为是下午”这句话的理解,这句话的意思是输入12:23,会输出12:23 PM。我个人是如此理解的,因为在PTA网页中如果输出结果为0:23 PM,会显示部分正确。如果对此有异议,可以在评论区指出。
三、超速判断
#include<stdio.h>
int main() {
int v;
scanf_s("%d", &v);
if (v > 60) {
printf("Speed: %d - Speeding", v);
}
else {
printf("Speed: %d - OK", v);
}
return 0;
}
这道题是简单的,如果出现错误一般就在格式错误,直接复制题中代码进行修改就不会有问题。
四、用天平找小球
#include<stdio.h>
int main() {
int A, B, C;
scanf_s("%d%d%d", &A, &B, &C);
if (A == B)
printf("C");
if (A == C)
printf("B");
if (C == B)
printf("A");
return 0;
}
五、计算工资
#include<stdio.h>
int main() {
int y;
float m;
float sum = 0;
scanf_s("%d%f", &y, &m);
if (y < 5 && m <= 40) {
sum = 30 * m;
}
else if (y < 5 && m > 40){
sum = 30 * 40 + 30 * 1.5 * (m - 40);
}
else if (y >= 5 && m <= 40) {
sum = 50 * m;
}
else if (y >= 5 && m > 40) {
sum = 50 * 40 + 50 * 1.5 * (m - 40);
}
printf("%.2f", sum);
return 0;
}
看起来有点复杂,但我认为这样不容易出错。