实战:入门综合练习
温度转换器
目标:实现摄氏度与华氏度的双向转换,用户输入选择转换方向和温度值,程序输出转换结果。
要求:
- 提示用户选择转换方向(1:摄氏→华氏,2:华氏→摄氏)
- 读取用户输入的温度值
- 使用公式完成转换并输出结果(保留两位小数)
- 处理无效选择的提示
转换公式:
- 摄氏→华氏:
F = C * 9 / 5 + 32 - 华氏→摄氏:
C = (F - 32) * 5 / 9
示例
CSHARP
Console.WriteLine("温度转换器");
Console.WriteLine("1. 摄氏度 → 华氏度");
Console.WriteLine("2. 华氏度 → 摄氏度");
Console.Write("请选择(1或2):");
string choice = Console.ReadLine();
if (choice == "1")
{
Console.Write("请输入摄氏温度:");
double celsius = double.Parse(Console.ReadLine());
double fahrenheit = celsius * 9 / 5 + 32;
Console.WriteLine($"{celsius}°C = {fahrenheit:F2}°F");
}
else if (choice == "2")
{
Console.Write("请输入华氏温度:");
double fahrenheit = double.Parse(Console.ReadLine());
double celsius = (fahrenheit - 32) * 5 / 9;
Console.WriteLine($"{fahrenheit}°F = {celsius:F2}°C");
}
else
{
Console.WriteLine("无效选择,请输入1或2。");
}
TEXT
温度转换器
1. 摄氏度 → 华氏度
2. 华氏度 → 摄氏度
请选择(1或2):1
请输入摄氏温度:100
100°C = 212.00°F
TEXT
温度转换器
1. 摄氏度 → 华氏度
2. 华氏度 → 摄氏度
请选择(1或2):2
请输入华氏温度:32
32°F = 0.00°C
简易计算器
目标:实现一个支持四则运算的计算器,用户输入两个数和运算符,程序输出计算结果,并处理除零错误。
要求:
- 提示用户输入两个数字和一个运算符(+、-、*、/)
- 使用
switch语句判断运算符并执行对应运算 - 除法时检查除数是否为零,给出友好提示
- 对无效运算符给出提示
示例
CSHARP
Console.Write("请输入第一个数字:");
double num1 = double.Parse(Console.ReadLine());
Console.Write("请输入运算符(+ - * /):");
string op = Console.ReadLine();
Console.Write("请输入第二个数字:");
double num2 = double.Parse(Console.ReadLine());
double result;
switch (op)
{
case "+":
result = num1 + num2;
Console.WriteLine($"{num1} + {num2} = {result}");
break;
case "-":
result = num1 - num2;
Console.WriteLine($"{num1} - {num2} = {result}");
break;
case "*":
result = num1 * num2;
Console.WriteLine($"{num1} * {num2} = {result}");
break;
case "/":
if (num2 == 0)
{
Console.WriteLine("错误:除数不能为零!");
}
else
{
result = num1 / num2;
Console.WriteLine($"{num1} / {num2} = {result}");
}
break;
default:
Console.WriteLine("无效的运算符!");
break;
}
TEXT
请输入第一个数字:10
请输入运算符(+ - * /):+
请输入第二个数字:3.5
10 + 3.5 = 13.5
TEXT
请输入第一个数字:8
请输入运算符(+ - * /):/
请输入第二个数字:0
错误:除数不能为零!
猜数字游戏
目标:程序随机生成1到100的整数,用户反复猜测,程序提示"太大"或"太小",直到猜中并显示尝试次数。
要求:
- 使用
Random类生成1~100的随机整数 - 使用
while循环让用户反复猜测 - 每次猜测后给出"太大"或"太小"的提示
- 猜中后输出恭喜信息和总尝试次数
示例
CSHARP
Random random = new Random();
int target = random.Next(1, 101);
int guess;
int attempts = 0;
Console.WriteLine("猜数字游戏(1~100)");
do
{
Console.Write("请输入你的猜测:");
guess = int.Parse(Console.ReadLine());
attempts++;
if (guess > target)
{
Console.WriteLine("太大了!");
}
else if (guess < target)
{
Console.WriteLine("太小了!");
}
else
{
Console.WriteLine($"恭喜你猜中了!答案是 {target},你共尝试了 {attempts} 次。");
}
} while (guess != target);
TEXT
猜数字游戏(1~100)
请输入你的猜测:50
太小了!
请输入你的猜测:75
太大了!
请输入你的猜测:62
太小了!
请输入你的猜测:68
恭喜你猜中了!答案是 68,你共尝试了 4 次。
打印星号图案
目标:使用嵌套 for 循环打印两种常见星号图案——直角三角形和金字塔,练习循环与字符串拼接。
要求:
- 直角三角形:第 i 行打印 i 个星号
- 金字塔:第 i 行打印适当数量的前导空格和星号,使星号居中
- 行数由用户输入决定
示例
CSHARP
Console.Write("请输入行数:");
int rows = int.Parse(Console.ReadLine());
Console.WriteLine("直角三角形:");
for (int i = 1; i <= rows; i++)
{
for (int j = 1; j <= i; j++)
{
Console.Write("*");
}
Console.WriteLine();
}
Console.WriteLine("金字塔:");
for (int i = 1; i <= rows; i++)
{
for (int s = 1; s <= rows - i; s++)
{
Console.Write(" ");
}
for (int j = 1; j <= 2 * i - 1; j++)
{
Console.Write("*");
}
Console.WriteLine();
}
TEXT
请输入行数:5
直角三角形:
*
**
***
****
*
金字塔:
*
***
*
***
*****
❓ 常见问题
Q
double.Parse 输入非数字会怎样?A 会抛出
FormatException 异常,实际项目中应使用 double.TryParse 来安全转换。Q
Random.Next(1, 101) 为什么上限是101?A 该方法是左闭右开区间,
Next(1, 101) 生成1到100的整数,不包含101。Q 金字塔每行星号数怎么计算?
A 第 i 行的星号数为
2 * i - 1,即第1行1颗、第2行3颗、第3行5颗,依次递增。Q
do...while 和 while 有什么区别?A
do...while 至少执行一次循环体,while 可能一次都不执行。猜数字游戏至少需要猜一次,所以用 do...while 更合适。📖 小节
- 温度转换器练习了
if...else if条件判断和数学运算 - 简易计算器练习了
switch分支和除零错误的处理 - 猜数字游戏练习了
do...while循环和Random类的使用 - 星号图案练习了嵌套
for循环和字符串拼接技巧
📝 作业
- 为温度转换器添加循环功能,让用户可以反复转换直到输入
q退出。 - 为简易计算器增加取模运算(
%)的支持。 - 改进猜数字游戏:当用户输入非数字时提示重新输入,而不崩溃。
- 打印倒金字塔图案(最宽行在上,最窄行在下)。



