分数 15
全屏浏览题目
切换布局
作者 C课程组
单位 浙江大学
给定四种水果,分别是苹果(apple)、梨(pear)、桔子(orange)、葡萄(grape),单价分别对应为3.00元/公斤、2.50元/公斤、4.10元/公斤、10.20元/公斤。
首先在屏幕上显示以下菜单:
[1] apple
[2] pear
[3] orange
[4] grape
[0] exit
用户可以输入编号1~4查询对应水果的单价。当连续查询次数超过5次时,程序应自动退出查询;不到5次而用户输入0即退出;输入其他编号,显示价格为0。
输入格式:
输入在一行中给出用户连续输入的若干个编号。
输出格式:
首先在屏幕上显示菜单。然后对应用户的每个输入,在一行中按格式“price = 价格”输出查询结果,其中价格保留两位小数。当用户连续查询次数超过5次、或主动输入0时,程序结束。
输入样例1:
3 -1 0 2
输出样例1:
[1] apple
[2] pear
[3] orange
[4] grape
[0] exit
price = 4.10
price = 0.00
输入样例2:
1 2 3 3 4 4 5 6 7 8
输出样例2:
[1] apple
[2] pear
[3] orange
[4] grape
[0] exit
price = 3.00
price = 2.50
price = 4.10
price = 4.10
price = 10.20
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
我的答案:
解题过程:
1. 分析问题:
首先,需要在屏幕上显示一个菜单。然后,根据用户的输入显示相应的水果价格。程序的两种退出方式:连续查询5次或用户输入0。
2. 确定解题步骤:
- 显示菜单。
- 创建一个数组或其他数据结构来存储水果和其价格。
- 迭代最多5次或直到用户输入为0,进行以下操作:
- 读取用户的输入。
- 根据输入查询并显示价格。
3. 写代码:
C语言:
#include <stdio.h>
int main() {
double prices[] = {0.0, 3.00, 2.50, 4.10, 10.20};
int choice, count = 0;
// Display menu
printf("[1] apple\n");
printf("[2] pear\n");
printf("[3] orange\n");
printf("[4] grape\n");
printf("[0] exit\n");
while (count < 5) {
scanf("%d", &choice);
if (choice == 0) {
break;
}
if (choice >= 1 && choice <= 4) {
printf("price = %.2f\n", prices[choice]);
} else {
printf("price = 0.00\n");
}
count++;
}
return 0;
}
C++:
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int choice, count = 0;
// Display menu
cout << "[1] apple" << endl;
cout << "[2] pear" << endl;
cout << "[3] orange" << endl;
cout << "[4] grape" << endl;
cout << "[0] exit" << endl;
while (count < 5) {
cin >> choice;
if (choice == 0) {
break;
}
cout << "price = " << fixed << setprecision(2);
switch (choice) {
case 1:
cout << 3.00 << endl;
break;
case 2:
cout << 2.50 << endl;
break;
case 3:
cout << 4.10 << endl;
break;
case 4:
cout << 10.20 << endl;
break;
default:
cout << "0.00" << endl;
break;
}
count++;
}
return 0;
}
总结:
学到了什么?
这道题目提供了多个学习和思考点:
1. **选择结构的应用**:通过使用`switch`语句,我们可以明白其如何根据不同的条件选择不同的执行路径。它是一个常用的结构,特别是当有多个条件需要判断时。
2. **循环控制**:这道题目要求在查询超过5次后自动退出,这介绍了循环的使用,并在循环内部通过条件判断进行中断。
3. **输入/输出格式的控制**:使用`fixed`和`setprecision`来控制输出格式,让我们知道如何以特定的格式显示数字。
4. **用户交互与界面**:通过提供一个简单的菜单,我们学习了如何创建基础的用户交互界面。
5. **边界条件的处理**:处理无效的输入是编程中的一个常见任务。这里,如果输入的选项不在预期的范围内,则输出为0.00,这教给我们总是要考虑和处理可能的非预期输入。
6. **程序的组织和结构**:虽然这是一个相对简单的程序,但它的结构(如何组织`switch`语句、如何控制循环等)为更复杂的程序提供了模板。
7. **问题分析与解决策略**:在实际编程任务中,首先要对问题进行分析,确定输入和输出,然后选择适当的策略来解决它。这道题目提供了一个很好的练习机会,因为它要求从问题描述中提取关键信息,并将这些信息转化为有效的代码。
总的来说,这道题目提供了一个很好的练习机会,通过它我们可以学习并加强对基本编程概念和策略的理解。