1. 猜数字游戏
// 程序随机生成1-100的数字,用户猜测,直到猜对为止
Random random = new Random();
int target = random.Next(1, 101);
int guess = 0;
int attempts = 0;
Console.WriteLine("猜数字游戏开始!数字在1-100之间");
while (guess != target)
{
Console.Write("请输入你的猜测: ");
guess = int.Parse(Console.ReadLine());
attempts++;
if (guess > target)
Console.WriteLine("太大了!");
else if (guess < target)
Console.WriteLine("太小了!");
}
Console.WriteLine($"恭喜!你用了{attempts}次猜对了数字{target}");
2. 密码验证系统
// 用户输入密码,直到输入正确为止(正确密码为"123456")
string correctPassword = "123456";
string inputPassword = "";
int maxAttempts = 3;
int attempts = 0;
while (inputPassword != correctPassword && attempts < maxAttempts)
{
Console.Write("请输入密码: ");
inputPassword = Console.ReadLine();
attempts++;
if (inputPassword != correctPassword)
{
Console.WriteLine($"密码错误!还剩{maxAttempts - attempts}次机会");
}
}
if (inputPassword == correctPassword)
Console.WriteLine("登录成功!");
else
Console.WriteLine("密码错误次数过多,账户已锁定!");
3. 简易计算器
// 持续接收用户输入进行计算,直到用户输入"exit"
string input = "";
double result = 0;
Console.WriteLine("简易计算器(输入'exit'退出)");
while (input != "exit")
{
Console.Write("请输入表达式 (如: 5 + 3): ");
input = Console.ReadLine();
if (input == "exit") break;
try
{
string[] parts = input.Split(' ');
if (parts.Length == 3)
{
double num1 = double.Parse(parts[0]);
string op = parts[1];
double num2 = double.Parse(parts[2]);
switch (op)
{
case "+": result = num1 + num2; break;
case "-": result = num1 - num2; break;
case "*": result = num1 * num2; break;
case "/": result = num2 != 0 ? num1 / num2 : double.NaN; break;
default: Console.WriteLine("不支持的操作符"); continue;
}
Console.WriteLine($"结果: {result}");
}
}
catch
{
Console.WriteLine("输入格式错误!");
}
}
4. 数字反转
// 输入一个整数,将其各位数字反转输出
Console.Write("请输入一个整数: ");
int number = int.Parse(Console.ReadLine());
int reversed = 0;
int temp = Math.Abs(number);
while (temp > 0)
{
int digit = temp % 10;
reversed = reversed * 10 + digit;
temp /= 10;
}
if (number < 0) reversed = -reversed;
Console.WriteLine($"反转后的数字: {reversed}");
5. 斐波那契数列生成器
// 生成斐波那契数列,直到超过指定值
Console.Write("请输入最大值: ");
int maxValue = int.Parse(Console.ReadLine());
int a = 0, b = 1;
Console.WriteLine("斐波那契数列:");
Console.Write($"{a} {b} ");
while (true)
{
int next = a + b;
if (next > maxValue) break;
Console.Write($"{next} ");
a = b;
b = next;
}
6. 质数判断器
// 判断输入的数字是否为质数,可连续判断
string input = "";
while (input != "quit")
{
Console.Write("请输入一个数字(输入'quit'退出): ");
input = Console.ReadLine();
if (input == "quit") break;
if (int.TryParse(input, out int number) && number > 1)
{
bool isPrime = true;
int i = 2;
while (i <= Math.Sqrt(number))
{
if (number % i == 0)
{
isPrime = false;
break;
}
i++;
}
Console.WriteLine($"{number} {(isPrime ? "是" : "不是")}质数");
}
else
{
Console.WriteLine("请输入大于1的整数!");
}
}
7. 数字各位数求和
// 持续输入数字,求各位数字之和,直到和为1位数
Console.WriteLine("数字各位数求和(直到结果为1位数)");
while (true)
{
Console.Write("请输入一个数字(输入0退出): ");
int number = int.Parse(Console.ReadLine());
if (number == 0) break;
int sum = number;
Console.Write($"计算过程: {sum}");
while (sum >= 10)
{
int temp = sum;
sum = 0;
while (temp > 0)
{
sum += temp % 10;
temp /= 10;
}
Console.Write($" → {sum}");
}
Console.WriteLine($"\n最终结果: {sum}");
}
8. 最大公约数计算器
// 使用欧几里得算法计算两个数的最大公约数
Console.WriteLine("最大公约数计算器");
while (true)
{
Console.Write("请输入第一个数字(输入0退出): ");
int a = int.Parse(Console.ReadLine());
if (a == 0) break;
Console.Write("请输入第二个数字: ");
int b = int.Parse(Console.ReadLine());
int num1 = Math.Abs(a);
int num2 = Math.Abs(b);
while (num2 != 0)
{
int temp = num2;
num2 = num1 % num2;
num1 = temp;
}
Console.WriteLine($"{a} 和 {b} 的最大公约数是: {num1}");
}
9. 数字黑洞(6174问题)
// 任选4个数字不全相同的四位数,按特定运算最终得到6174
Console.Write("请输入一个四位数(数字不全相同): ");
int number = int.Parse(Console.ReadLine());
int count = 0;
while (number != 6174)
{
// 将数字转换为数组并排序
int[] digits = new int[4];
int temp = number;
for (int i = 0; i < 4; i++)
{
digits[i] = temp % 10;
temp /= 10;
}
Array.Sort(digits);
int asc = digits[0] * 1000 + digits[1] * 100 + digits[2] * 10 + digits[3];
int desc = digits[3] * 1000 + digits[2] * 100 + digits[1] * 10 + digits[0];
number = desc - asc;
count++;
Console.WriteLine($"第{count}步: {desc} - {asc} = {number}");
}
Console.WriteLine($"经过{count}步运算得到6174");
10. 简易银行系统
// 模拟银行账户操作
double balance = 1000; // 初始余额
bool running = true;
Console.WriteLine("欢迎使用简易银行系统");
while (running)
{
Console.WriteLine("\n请选择操作:");
Console.WriteLine("1. 查询余额");
Console.WriteLine("2. 存款");
Console.WriteLine("3. 取款");
Console.WriteLine("4. 退出");
Console.Write("请输入选择 (1-4): ");
string choice = Console.ReadLine();
switch (choice)
{
case "1":
Console.WriteLine($"当前余额: {balance:C}");
break;
case "2":
Console.Write("请输入存款金额: ");
if (double.TryParse(Console.ReadLine(), out double deposit) && deposit > 0)
{
balance += deposit;
Console.WriteLine($"存款成功!当前余额: {balance:C}");
}
else
{
Console.WriteLine("输入无效!");
}
break;
case "3":
Console.Write("请输入取款金额: ");
if (double.TryParse(Console.ReadLine(), out double withdraw) && withdraw > 0)
{
if (withdraw <= balance)
{
balance -= withdraw;
Console.WriteLine($"取款成功!当前余额: {balance:C}");
}
else
{
Console.WriteLine("余额不足!");
}
}
else
{
Console.WriteLine("输入无效!");
}
break;
case "4":
running = false;
Console.WriteLine("感谢使用,再见!");
break;
default:
Console.WriteLine("无效选择,请重新输入!");
break;
}
}
11. 喜马拉雅
double num = 0.01;
int times = 0;
bool result = true;
while (result)
{
num += 0.01;
times++;
result = num >= 8848 ? false : true;
}
Console.WriteLine(num);
Console.WriteLine(times);
这些题目涵盖了while循环的各种应用场景,包括:
用户输入验证
数学计算和算法
游戏逻辑
系统模拟
条件控制循环