目录
一、BC7 缩短二进制
#include <stdio.h>
int main()
{
printf("%#o %#X\n", 1234, 1234);
return 0;
}
printf 函数使用格式控制串 "%o"、"%d" 以及 "%x"(或者 "%X")分别输出八进制整数、十进制整数以及十六进制整数。还可以使用修饰符 '#' 控制八进制数和十六进制的前导(即 0 和 0x 或者 0X)显示。注意:不能使用 printf 函数输出二进制数。
二、BC 34 进制A+B
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
scanf("%x %o", &a, &b);
printf("%d\n", a + b);
return 0;
}
三、BC11 学生基本信息输入输出
法一:
#include <stdio.h>
int main()
{
int n = 0;
float c_lang = 0.0, math = 0.0, english = 0.0;
// 1. 输入
scanf("%d;%f,%f,%f", &n, &c_lang, &math, &english);
// 2. 输出
printf("The each subject score of No. %d is %.2f, %.2f, %.2f.", n, c_lang, math, english);
return 0;
}
法二:
#include <stdio.h>
int main()
{
int n = 0;
double c_lang = 0.0, math = 0.0, english = 0.0;
// 1. 输入
scanf("%d;%lf,%lf,%lf", &n, &c_lang, &math, &english);
// 2. 对 3 科成绩进行四舍五入并保留 2 位小数
c_lang = (int)(c_lang * 100 + 0.5) / 100.0;
math = (int)(math * 100 + 0.5) / 100.0;
english = (int)(english * 100 + 0.5) / 100.0;
// 3. 输出
printf("The each subject score of No. %d is %.2lf, %.2lf, %.2lf.", n, c_lang, math, english);
return 0;
}
当使用精度更高的浮点数类型 double 时,输出成绩时就不能完全保证保留 2 位小数且四舍五入。
c_lang * 100 后,原来数字的第 3 位小数变成了新数字的第 1 位小数,而 +0.5,则是判断原来数字的第 3 位小数的数值是否大于等于 5,实现四舍五入的效果。
四、BC28 大小写转换
#include <stdio.h>
int main()
{
char ch = 0;
while(scanf("%c", &ch) != EOF)
{
printf("%c\n", ch + 32);
getchar(); // 清理输入缓冲区中的 \n,这一步非常重要
}
return 0;
}