练习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 4int main () {for (int i = 0; i < N; i++) {// 1.打印前缀空格for (int j = 0; j < i; j++) {printf(" ");}// 2.打印asteriskfor (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 3int 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 = 53 - 2 = 13 * 2 = 63 / 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:4030
输出样例:
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 |
