清览题库--C语言程序设计第五版编程题解析(1)

简介: 速刷n题

题目一(中等)

求时刻时针和分针的夹角

常见的钟表一般都有时针和分针,在任意时刻时针和分针都形成一定夹角;现已知当前的时刻,编写程序求出该时刻时针和分针的夹角(该夹角大小≤180°)。当前时刻值输入格式为“小时:分”,例如:11:12。

输入用例:

11:12

输出用例:

96.00

作答

1.解题思路

观察时钟共有12个大的空隙,每个大的空隙之间有5个小的空隙,即用360°/12*5


推导出每分钟跨过的距离是6°


先推时针,由题目的输入用例可知,当11:12时,时针“正好”指在11的数字上,即走过11*5*6=330°。


再推分针,分针相对较为简单,12分即为12*6°=72°

但是,如果分针转动至12分处,时针必定也会相对偏转,不会正好指在11这个数字上,浅列个比例关系:12分时对应的72°/整个的360°=时针在11之后偏转的角度/每5分钟对应的角度5*6°=30°

推导出时针偏转至336°。

所以二者之间所差角度为360°-336°+72°

(我代码被删了,草)

2.代码

#include <stdio.h>

int main()

{

int h, m, n, p;

double z;//最后输出要求是浮点数,提前double

scanf_s("%d:%d", &h, &m);//正常情况下应用scanf,但VS2022本身不承认scanf,只承认scanf_s,据说是安全性的问题

p = m * 6;//分钟直接用输入的数字×每分钟对应的角度。

n = h * 5 * 6 + p * 30 / 360;//时针×每个大空隙每个大空隙中的小空隙对应的角度+通过比例求出的角度

z = 360 - n + p;//求角度差

printf("%.2lf", z);//输出时要求保留小数点后两位,通过.2实现

return 0;

}

附:答案

#include <stdio.h>

#include <math.h>

int main()

{

int h, m;

double a;

scanf( "%d:%d", &h, &m );

if ( h >= 0 && h <= 12 && m >= 0 && m <= 59 )

{

 double a1, a2; /* 时针和分针以0点为起点走过的角度 */

 a2 = m * 1.0 / 60 * 360;

 a1 = h * 1.0 / 12 * 360 + m * 1.0 / 60 * 30;

 a = fabs( a2 - a1 );

 a = a > 180 ? 360 - a : a;

 printf( "%.2lf", a );

}else

 printf( "input error" );

return(0);

}

题目二(简单)

求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积

设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。编写程序用scanf输入数据,输出计算结果;输出时要求有文字说明,取小数点后2位数字。

输入用例:

1.53 4.23

输出用例:

圆周长:9.61 圆面积:7.35 圆球表面积:29.40 圆球体积:14.99 圆柱体积:31.09


作答

1.解题思路

这个没啥解题思路,数学公式别记错就行。


2.代码

#include <stdio.h>

int main() {

 double r,h;

 double z = 3.14;

 scanf("%lf %lf",&r,&h);

 printf("圆周长:%0.2lf\n",2*z*r);

 printf("圆面积:%0.2lf\n",z*r*r);

 printf("圆球表面积:%0.2lf\n",4*z*r*r);

 printf("圆球体积:%0.2lf\n",(4*z*r*r*r)/3);

 printf("圆柱体积:%0.2lf\n",z*r*r*h);

}

附:答案

#include <stdio.h>

#define PI 3.14

int main()

{

double r, h, l, s, ss, qv, v;

scanf( "%lf%lf", &r, &h );

if ( r > 0 && h > 0 )

{

 l = 2 * PI * r;

 s = PI * r * r;

 ss = 4.0 * PI * r * r;

 qv = 4.0 / 3 * PI * r * r * r;

 v = PI * r * r * h;

 printf( "圆周长:%.2lf\n圆面积:%.2lf\n圆球表面积:%.2lf\n圆球体积:%.2lf\n圆柱体积:%.2lf\n", l, s, ss, qv, v );

}else

 printf( "input error" );

return(0);

}

目录
相关文章
|
11月前
|
存储 缓存 Java
Java 并发编程——volatile 关键字解析
本文介绍了Java线程中的`volatile`关键字及其与`synchronized`锁的区别。`volatile`保证了变量的可见性和一定的有序性,但不能保证原子性。它通过内存屏障实现,避免指令重排序,确保线程间数据一致。相比`synchronized`,`volatile`性能更优,适用于简单状态标记和某些特定场景,如单例模式中的双重检查锁定。文中还解释了Java内存模型的基本概念,包括主内存、工作内存及并发编程中的原子性、可见性和有序性。
308 5
Java 并发编程——volatile 关键字解析
|
11月前
|
存储 网络协议 编译器
【C语言】深入解析C语言结构体:定义、声明与高级应用实践
通过根据需求合理选择结构体定义和声明的放置位置,并灵活结合动态内存分配、内存优化和数据结构设计,可以显著提高代码的可维护性和运行效率。在实际开发中,建议遵循以下原则: - **模块化设计**:尽可能封装实现细节,减少模块间的耦合。 - **内存管理**:明确动态分配与释放的责任,防止资源泄漏。 - **优化顺序**:合理排列结构体成员以减少内存占用。
894 14
|
11月前
|
存储 编译器 C语言
【C语言】数据类型全解析:编程效率提升的秘诀
在C语言中,合理选择和使用数据类型是编程的关键。通过深入理解基本数据类型和派生数据类型,掌握类型限定符和扩展技巧,可以编写出高效、稳定、可维护的代码。无论是在普通应用还是嵌入式系统中,数据类型的合理使用都能显著提升程序的性能和可靠性。
527 8
|
11月前
|
存储 算法 C语言
【C语言】深入浅出:C语言链表的全面解析
链表是一种重要的基础数据结构,适用于频繁的插入和删除操作。通过本篇详细讲解了单链表、双向链表和循环链表的概念和实现,以及各类常用操作的示例代码。掌握链表的使用对于理解更复杂的数据结构和算法具有重要意义。
3339 6
|
11月前
|
存储 网络协议 算法
【C语言】进制转换无难事:二进制、十进制、八进制与十六进制的全解析与实例
进制转换是计算机编程中常见的操作。在C语言中,了解如何在不同进制之间转换数据对于处理和显示数据非常重要。本文将详细介绍如何在二进制、十进制、八进制和十六进制之间进行转换。
1791 5
|
11月前
|
C语言 开发者
【C语言】断言函数 -《深入解析C语言调试利器 !》
断言(assert)是一种调试工具,用于在程序运行时检查某些条件是否成立。如果条件不成立,断言会触发错误,并通常会终止程序的执行。断言有助于在开发和测试阶段捕捉逻辑错误。
289 5
|
2月前
|
存储 C语言
`scanf`是C语言中用于按格式读取标准输入的函数
`scanf`是C语言中用于按格式读取标准输入的函数,通过格式字符串解析输入并存入指定变量。需注意输入格式严格匹配,并建议检查返回值以确保读取成功,提升程序健壮性。
940 0
|
4月前
|
安全 C语言
C语言中的字符、字符串及内存操作函数详细讲解
通过这些函数的正确使用,可以有效管理字符串和内存操作,它们是C语言编程中不可或缺的工具。
312 15
|
10月前
|
存储 算法 C语言
【C语言程序设计——函数】素数判定(头歌实践教学平台习题)【合集】
本内容介绍了编写一个判断素数的子函数的任务,涵盖循环控制与跳转语句、算术运算符(%)、以及素数的概念。任务要求在主函数中输入整数并输出是否为素数的信息。相关知识包括 `for` 和 `while` 循环、`break` 和 `continue` 语句、取余运算符 `%` 的使用及素数定义、分布规律和应用场景。编程要求根据提示补充代码,测试说明提供了输入输出示例,最后给出通关代码和测试结果。 任务核心:编写判断素数的子函数并在主函数中调用,涉及循环结构和条件判断。
558 23
|
9月前
|
人工智能 Java 程序员
一文彻底搞清楚C语言的函数
本文介绍C语言函数:函数是程序模块化的工具,由函数头和函数体组成,涵盖定义、调用、参数传递及声明等内容。值传递确保实参不受影响,函数声明增强代码可读性。君志所向,一往无前!
346 1
一文彻底搞清楚C语言的函数

推荐镜像

更多
  • DNS