模仿该程序,编写程序实现下述功能: 已知圆半径r=1.5,圆柱高 h=3,求圆周长,圆面积,圆球表面积,圆球体积,圆柱体积。(注:球体表面积计算公式为:S=4mR 球体体积计算公式为:V=(4/3)πR)
时间: 2023-05-13 22:05:17 浏览: 96
以下是程序实现:
```python
import math
# 已知圆半径和高,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积
r = 1.5
h = 3
# 圆周长
circumference = 2 * math.pi * r
print("圆周长为:", circumference)
# 圆面积
area = math.pi * r ** 2
print("圆面积为:", area)
# 圆球表面积
sphere_surface_area = 4 * math.pi * r ** 2
print("圆球表面积为:", sphere_surface_area)
# 圆球体积
sphere_volume = (4 / 3) * math.pi * r ** 3
print("圆球体积为:", sphere_volume)
# 圆柱体积
cylinder_volume = area * h
print("圆柱体积为:", cylinder_volume)
```
输出结果为:
```
圆周长为: 9.42477796076938
圆面积为: 7.0685834705770345
圆球表面积为: 28.274333882308138
圆球体积为: 14.137166941154069
圆柱体积为: 21.205750411731103
```
希望能够帮助到您!
相关问题
汇编语言编写完整程序实现下述功能:键盘输入字符串(最多100个),统计其中数字的个数,将结果在屏幕上以十六进制的形式显示。
好的,以下是汇编语言程序,实现了您的要求:
```
; 定义常量
MAX_LEN equ 100 ; 最大输入长度
CR equ 0AH ; 换行符的 ASCII 码
; 定义变量
input db MAX_LEN+2 ; 存储输入的字符串,加2是为了留出两个字节存储长度和换行符
count dw 0 ; 计数器,用来统计数字的个数
; 代码段
org 100h
start:
; 初始化数据段
mov ax, cs
mov ds, ax
mov es, ax
; 输出提示信息
mov ah, 09h
mov dx, offset prompt
int 21h
; 读取用户输入
mov ah, 0Ah
mov dx, offset input
int 21h
; 统计数字个数
mov si, offset input+2 ; 跳过输入字符串的长度和换行符
mov cx, word ptr [input] ; 读取输入字符串的长度
mov bx, 0 ; 清零计数器
check_digit:
cmp byte ptr [si], 30h ; 检查当前字符是否为数字字符 '0'
jb not_digit ; 如果小于 '0',则跳过
cmp byte ptr [si], 39h ; 检查当前字符是否为数字字符 '9'
ja not_digit ; 如果大于 '9',则跳过
inc bx ; 如果是数字字符,则计数器加一
not_digit:
inc si ; 指向下一个字符
loop check_digit ; 继续检查下一个字符
; 将数字个数以十六进制形式输出
mov ah, 02h
mov dl, '0'
int 21h
mov dl, 'x'
int 21h
mov ax, count ; 将计数器的值存入 AX 中
mov si, offset hex_table ; 十六进制字符表的偏移地址
mov cx, 4 ; 需要输出四个字符
print_hex:
rol ax, 4 ; 将 AX 中的值向左循环移位四位
mov dl, byte ptr [si+ax] ; 从十六进制字符表中取出对应的字符
int 21h
loop print_hex ; 继续输出下一个字符
; 换行
mov dl, CR
int 21h
; 结束程序
mov ah, 4Ch
xor al, al
int 21h
; 数据段
prompt db 'Please input a string (max length: 100): $'
hex_table db '0123456789ABCDEF'
; 结束标志
times 510-($-$$) db 0
dw 0xAA55
```
这个程序首先输出提示信息,然后读取用户输入的字符串,接着统计其中数字的个数,最后将数字个数以十六进制形式输出。您可以使用 DOSBox 等模拟器来运行这个程序。
基于带头结点的链式存储结构,编写程序,实现下述功能: 1、初始化一个空链表 2、链表的置空和销毁 3、实现元素的查找、插入和删除 4、输出链表的全部元素
基于带头结点的链式存储结构,我们可以创建一个单向链表来实现上述功能。这里是一个简单的C++示例:
```cpp
#include <iostream>
// 定义链表节点
struct ListNode {
int data;
ListNode* next;
ListNode(int val) : data(val), next(nullptr) {}
};
// 初始化一个空链表
ListNode* createEmptyList() {
return new ListNode(0); // 使用0表示头结点,实际数据从第一个节点开始
}
// 置空链表并销毁
void destroyList(ListNode*& head) {
if (head != nullptr) {
ListNode* temp = head;
while (temp != nullptr) {
ListNode* nextTemp = temp->next;
delete temp;
temp = nextTemp;
}
head = nullptr;
}
}
// 元素查找
bool searchElement(const ListNode* head, int target) {
ListNode* curr = head;
while (curr != nullptr) {
if (curr->data == target)
return true;
curr = curr->next;
}
return false;
}
// 插入元素
void insertElement(ListNode*& head, int value, int position = 0) {
if (position == 0) {
ListNode* newNode = new ListNode(value);
newNode->next = head;
head = newNode;
} else {
ListNode* prev = head;
for (int i = 1; i < position && prev != nullptr; ++i)
prev = prev->next;
if (prev == nullptr)
std::cout << "插入位置无效\n";
else {
ListNode* newNode = new ListNode(value);
newNode->next = prev->next;
prev->next = newNode;
}
}
}
// 删除元素
void deleteElement(ListNode*& head, int target) {
if (head == nullptr)
return;
if (head->data == target) {
ListNode* temp = head;
head = head->next;
delete temp;
return;
}
ListNode* curr = head;
while (curr->next != nullptr && curr->next->data != target)
curr = curr->next;
if (curr->next == nullptr)
return;
ListNode* toDelete = curr->next;
curr->next = curr->next->next;
delete toDelete;
}
// 输出链表元素
void printList(const ListNode* head) {
ListNode* temp = head;
while (temp != nullptr) {
std::cout << temp->data << " ";
temp = temp->next;
}
std::cout << "\n";
}
// 示例用法
int main() {
ListNode* listHead = createEmptyList();
// ...插入操作...
printList(listHead);
// 清理内存
destroyList(listHead);
return 0;
}
```
阅读全文