练习2-1 Programming in C is fun!
本题要求编写程序,输出一个短句“Programming in C is fun!”。
输入格式:
本题目没有输入。
输出格式:
在一行中输出短句“Programming in C is fun!”。
解题思路:练习使用 printf
函数。
#include <stdio.h>
int main () {
printf("Programming in C is fun!");
return 0;
}
练习2-3 输出倒三角图案
本题要求编写程序,输出指定的由“”组成的倒三角图案。
输入格式:
本题目没有输入。
输出格式:
按照下列格式输出由“”组成的倒三角图案。
* * * *
* * *
* *
*
解题思路:最简单就是使用 printf
跨行输出,或者找到规律后使用 for
循环输出。
#include <stdio.h>
int main () {
printf("* * * *\n"
" * * *\n"
" * *\n"
" *\n"
);
return 0;
}
找到规律:输出任意 N
行三角形
#include <stdio.h>
#define N 4
int main () {
for (int i = 0; i < N; i++) {
// 1.打印前缀空格
for (int j = 0; j < i; j++) {
printf(" ");
}
// 2.打印asterisk
for (int j = N - i; j > 0; j--) {
if (j == N - i) { // 首个处理
printf("*");
} else {
printf(" *");
}
}
// 3.换行
printf("\n");
}
return 0;
}
练习2-4 温度转换
本题要求编写程序,计算华氏温度150°F对应的摄氏温度。计算公式:C=5×(F−32)/9,式中:C表示摄氏温度,F表示华氏温度,输出数据要求为整型。
输入格式:
本题目没有输入。
输出格式:
按照下列格式输出
fahr = 150, celsius = 计算所得摄氏温度的整数值
解题思路:本题已经给定公式且不用处理输入,直接输出即可。
#include <stdio.h>
int main () {
int fahr = 150, celsius = 5 * (fahr - 32) / 9;
printf("fahr = 150, celsius = %d", celsius);
return 0;
}
练习2-6 计算物体自由下落的距离
一个物体从100米的高空自由落下。编写程序,求它在前3秒内下落的垂直距离。设重力加速度为10米/秒2。
输入格式:
本题目没有输入。
输出格式:
按照下列格式输出
height = 垂直距离值
结果保留2位小数。
解题思路:高中物理公式:
#include <stdio.h>
#define G 10
#define T 3
int main () {
printf("height = %.2f\n", 1.0 * G / 2 * T * T);
return 0;
}
练习2-8 计算摄氏温度
给定一个华氏温度F,本题要求编写程序,计算对应的摄氏温度C。计算公式:C=5×(F−32)/9。题目保证输入与输出均在整型范围内。
输入格式:
输入在一行中给出一个华氏温度。
输出格式:
在一行中按照格式“Celsius = C”输出对应的摄氏温度C的整数值。
输入样例:
150
输出样例:
Celsius = 65
解题思路:本题同上提区别在于要手动处理 IO
,即给定 F
是由用户输入决定,因此需要使用 scanf
函数从 stdin
读取用户输入的数据。
#include <stdio.h>
int main () {
int fahr, celsius;
scanf("%d", &fahr);
celsius = 5 * (fahr - 32) / 9;
printf("Celsius = %d", celsius);
return 0;
}
Case | Hint | Result | Score | Run Time | Memory |
---|---|---|---|---|---|
0 | sample, 输入超过32 | Accepted | 6 | 3 ms | 256 KB |
1 | 输入小于32 | Accepted | 2 | 3 ms | 384 KB |
2 | 等于32 | Accepted | 2 | 3 ms | 296 KB |
练习2-9 整数四则运算
本题要求编写程序,计算2个正整数的和、差、积、商并输出。题目保证输入和输出全部在整型范围内。
输入格式:
输入在一行中给出2个正整数A和B。
输出格式:
在4行中按照格式“A 运算符 B = 结果”顺序输出和、差、积、商。
输入样例:
3 2
输出样例:
3 + 2 = 5
3 - 2 = 1
3 * 2 = 6
3 / 2 = 1
解题思路:考察 printf
函数
#include <stdio.h>
int main () {
int A, B;
scanf("%d %d", &A, &B);
printf("%d + %d = %d\n", A, B, A + B);
printf("%d - %d = %d\n", A, B, A - B);
printf("%d * %d = %d\n", A, B, A * B);
printf("%d / %d = %d\n", A, B, A / B);
return 0;
}
Case | Hint | Result | Score | Run Time | Memory |
---|---|---|---|---|---|
0 | 同sample,换个数字 | Accepted | 6 | 3 ms | 296 KB |
1 | 减法有负数, 除法结果为0 | Accepted | 4 | 3 ms | 240 KB |
习题2-1 求整数均值
本题要求编写程序,计算4个整数的和与平均值。题目保证输入与输出均在整型范围内。
输入格式:
输入在一行中给出4个整数,其间以空格分隔。
输出格式:
在一行中按照格式“Sum = 和; Average = 平均值”顺序输出和与平均值,其中平均值精确到小数点后一位。
输入样例:
1 2 3 4
输出样例:
Sum = 10; Average = 2.5
解题思路:模拟即可。
#include <stdio.h>
int main () {
int a, b, c, d;
scanf("%d %d %d %d", &a, &b, &c, &d);
printf("Sum = %d; Average = %.1f", a + b + c + d, (a + b + c + d) / 4.0);
return 0;
}
Case | Hint | Result | Score | Run Time | Memory |
---|---|---|---|---|---|
0 | 同sample | Accepted | 6 | 2 ms | 296 KB |
1 | 有负数,平均为0 | Accepted | 4 | 2 ms | 228 KB |
习题9-1 时间换算
本题要求编写程序,以hh:mm:ss
的格式输出某给定时间再过n
秒后的时间值(超过23:59:59就从0点开始计时)。
输入格式:
输入在第一行中以hh:mm:ss
的格式给出起始时间,第二行给出整秒数n
(<60)。
输出格式:
输出在一行中给出hh:mm:ss
格式的结果时间。
输入样例:
11:59:40
30
输出样例:
12:00:10
解题思路:根据它的输入格式直接进行操作,明白生活中的小时是 24
进制,而分和秒都是 60
进制。
#include <stdio.h>
int main () {
int hour, minute, second, add;
scanf("%d", &hour);
getchar(); // 吸收':'
scanf("%d", &minute);
getchar(); // 吸收':'
scanf("%d", &second);
scanf("%d", &add);
// 2.进位处理,60进制与24进制
second += add;
minute += second / 60;
hour += minute / 60;
printf("%02d:%02d:%02d\n", hour % 24, minute % 60, second % 60);
return 0;
}
运行结果:
Case | Hint | Result | Run Time | Memory |
---|---|---|---|---|
0 | sample等价,秒分进位 | Accepted | 3 ms | 400 KB |
1 | 最后1秒到0点 | Accepted | 3 ms | 384 KB |
2 | 秒进位,最小起始、最大n | Accepted | 3 ms | 296 KB |
3 | 无进位 | Accepted | 3 ms | 256 KB |
4 | 全为零 | Accepted | 3 ms | 256 KB |
习题9-3 平面向量加法
本题要求编写程序,计算两个二维平面向量的和向量。
输入格式:
输入在一行中按照“_x_1 _y_1 _x_2 _y_2”的格式给出两个二维平面向量_v_1=(_x_1,_y_1)和_v_2=(_x_2,_y_2)的分量。
输出格式:
在一行中按照(x, y)
的格式输出和向量,坐标输出小数点后一位(注意不能输出−0.0)。
输入样例:
3.5 -2.7 -13.9 8.7
输出样例:
(-10.4, 6.0)
解题思路:本题主要考浮点数格式化输出和控制小数点位。一般保留一位小数输出都是使用 printf("%.1f")
输出;但是当 ,由于保留一位小数,那么最终打印出现
-0.0
。因此对于这种需要额外判断。
#include <stdio.h>
int main () {
double x1, y1, x2, y2;
scanf("%lf %lf %lf %lf", &x1, &y1, &x2, &y2);
double x = -0.05 < (x1 + x2) && (x1 + x2) < 0 ? 0.0 : x1 + x2;
double y = -0.05 < (y1 + y2) && (y1 + y2) < 0 ? 0.0 : y1 + y2;
printf("(%.1f, %.1f)", x, y);
return 0;
}
Case | Hint | Result | Score | Run Time | Memory |
---|---|---|---|---|---|
0 | sample,有负数,输出.0 | Accepted | 10 | 4 ms | 184 KB |
1 | 小数点后多位,检查舍入和-0 | Accepted | 5 | 4 ms | 188 KB |