顺序结构

选择结构

if结构

使用goto 允许玩5次 猜打了或者猜小了 猜对了 对应的提示 , 不合法输入的提示  不在1-100的提示

Random rnd = new();
int randomNumber = rnd.Next(1, 101);
int count = 0;
Console.WriteLine("欢迎来到猜字游戏,允许玩家玩5次");
Console.WriteLine(randomNumber);
InputNumber:
if (count >= 5)
{
    Console.WriteLine("你5次机会已用完");
    return;
}
Console.Write("请输入数字:");
string? inputNumber = Console.ReadLine();
if (!int.TryParse(inputNumber, out int number))
{
    Console.WriteLine("输入格式错误,请输入数字");
    goto InputNumber;
}
if (number < 1 || number > 100)
{
    Console.WriteLine("输入数字不在范围,请输入1-100数字");
    goto InputNumber;
}
if (number > randomNumber)
{
    Console.WriteLine("猜大了");
    count++;
    Console.WriteLine($"你还有{5 - count}次机会");
    goto InputNumber;
}
else if (number < randomNumber)
{
    Console.WriteLine("猜小了");
    count++;
    Console.WriteLine($"你还有{5 - count}次机会");
    goto InputNumber;
}
else
{
    Console.WriteLine("猜对了");
}

switch结构

要求用户输入一个年份和月份(1-12),然后输出该月的天数(考虑闰年)

Console.Write("请输入年份:");
if (!int.TryParse(Console.ReadLine(), out int year) || year < 1)
{
    Console.WriteLine("年份输入无效!");
    return;
}
Console.Write("请输入月份(1-12):");
if(!int.TryParse(Console.ReadLine(), out int month) || month < 1 || month > 12)
{
    Console.WriteLine("年份输入无效");
    return;
}
int days;
switch (month)
{
    case 4:
    case 6:
    case 9:
    case 11:
        days = 30 ;
        break;
    case 2:
        bool isLeep = (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
        days = isLeep ? 29 : 28;
        break;
    default:
        days=31;
        break;
}
Console.WriteLine($"{year}年{month}月有{days}天");

用户输入两个数字,判断两个数的大小并输出较大的数字

Console.Write("请输入第一个数字: ");
if(!int.TryParse(Console.ReadLine(),out int num1))
{
    Console.WriteLine("输入格式错误,请输入第一个数字");
    return;
}
Console.Write("请输入第二个数字: ");
if (!int.TryParse(Console.ReadLine(), out int num2))
{
    Console.WriteLine("输入格式错误,请输入第二个数字");
    return;
}// 使用 switch 语句判断较大数字
switch (num1 > num2)
{
    case true:
        Console.WriteLine($"较大的数字是: {num1}");
        break;
    case false:
        Console.WriteLine($"较大的数字是: {num2}");
        break;
    default:
        Console.WriteLine($"两者相等均为{num1}");
        break;
}

循环结构

for循环

计算0-100之间的奇数和、偶数和?

int sumOdd = 0;
int sumEven = 0;
for (int i = 1; i <= 100; i += 2)
    sumOdd += i;
for (int i = 0; i <= 100; i += 2)
    sumEven += i;
Console.WriteLine($"奇数和为{sumOdd},偶数和为{sumEven}");

获取100之间能够被5整除的所有的数?

for (int i = 5; i <= 100; i += 5)
    Console.WriteLine($"{i}能被5整除");

计算10 * 9 * 8 ... *1的结果?

StringBuilder sb = new StringBuilder();
int factorial = 1;
for (int i = 10; i >= 1; i--)
{
    factorial *= i;
    sb.Append(i);//拼接数字
    //不是最后一位就加乘号
    if (i > 1)
    {
        sb.Append('*');
    }
}
Console.WriteLine($"{sb}={factorial}");

求 1 - 1000 以内所有的完美数,除自身以外所有因子之和等于这个数就是完美数。

StringBuilder sb = new();
for (int i = 1; i <= 1000; i++)
{
    int sum = 0;
    int sqrt=(int)Math.Sqrt(i);
    for (int j = 1; j <= sqrt; j++)
    {
        if (i % j == 0)
        {
            int factor = i / j;
            sum += j;//加上小因数
            if (factor != j && factor != i)//避免重复加平方根和自身
            {
                sum += factor;
            }
        }
    }
    if (sum == i)
    {
        sb.Append($"{i} ");
    }
}
Console.WriteLine($"1-1000之间的完美数是:{sb}");

while循环

目标是搬砖500个,第一次搬砖1个,后面因为更加熟练,每次递增一倍,1、2、4、8、16.32 64 128 256.., 搬砖500个需要多少次?

int total = 0;
int times = 0;
int brick = 1;//第一次搬1个
while (total < 500)
{
    total += brick;
    times++;
    brick *= 2;//数量翻倍
}
Console.WriteLine($"搬够500个砖一共需要{total}");

有一个学校,现在有8个人,每年学院增长23%,几年后学员可以达到100人?

int years = 0;
double people = 8;
double rate = 1.23;
while (people < 100)
{
    people *= rate;
    years++;
}
Console.WriteLine($"需要{years}年学员人数可以达到100人");

用户输入10个数字,计算10个数字的总和、平均值?

int count = 1;
double sum = 0;
while (count <= 10)
{
    Console.Write($"请输入第{count}数字");
    string? input = Console.ReadLine();
    //输入合法才累加
    if (!double.TryParse(input, out double num))
    {
        Console.WriteLine("输入格式错误,请输入数字!");
    }
    else
    {
        sum += num;
        count++;
    }
}
//计算平均值
double avg = sum / 10;
Console.WriteLine($"总和为{sum}");
Console.WriteLine($"平均数为{avg:F2}");

让用户输入一系列数字,直到用户输入 0 为止。然后程序计算这些数字的平均值并输出?

double sum = 0;
int count = 0;
while (true)
{
    Console.WriteLine("请输入数字(输入0结束)");
    string? input = Console.ReadLine();
    if (!double.TryParse(input, out double number))
    {
        Console.WriteLine("输入格式错误,请输入数字");
        continue;
    }
    if (number == 0) break;
    sum += number;
    count++;
}
if (count == 0)
{
    Console.WriteLine("未输入任何有效数字,无法计算平均值");
}
else
{
    Console.WriteLine($"总和:{sum:F2}");
    Console.WriteLine($"平均值:{sum / count:F2}");
}

使用 while 循环判断用户输入的数字是否为素数。素数是指只能被 1 和它本身整除的数字。

while (true)
{
    bool isPrime = true;
    Console.Write("请输入一个数字(输入非数字退出):");
    string? input = Console.ReadLine();
    if (!int.TryParse(input, out int num))
    {
        Console.WriteLine("输入无效,程序结束");
        break;
    }
    if (num < 2)
    {
        isPrime = false;
    }
    else
    {
        int i = 2;
        while (i * i <= num)
        {
            if (num % i == 0)
            {
                isPrime = false;
                break;
            }
            i++;
        }
    }
    Console.WriteLine(isPrime ? $"{num}是素数\n" : $"{num}不是素数\n");
}

3个可乐瓶可以换一瓶可乐,现在有364瓶可乐。问一共可以喝多少瓶可乐,剩下几个空瓶?

//空瓶
int num = 364;
//剩余的空瓶
int coke = 0;
//喝了多少瓶
int drink = 364;
while (num >= 3)
{
    num = (num + coke) / 3;

    coke= (num + coke) % 3;

    drink += num;
}
Console.WriteLine($"喝了{drink}瓶,剩余{num+coke}个空瓶子");

do...while循环

(使用do while) 用户输入一个正整数 n,程序输出斐波那契数列的前 n 项

int a = 1, b = 1;
int i = 0;
int n;
do
{
    Console.WriteLine("请输入一个正整数n:");
}
while (!int.TryParse(Console.ReadLine(), out n) || n <= 0);
do
{
    Console.Write(a + " ");
    int t = a + b;
    a = b;
    b = t;
    i++;
}
while (i < n);

更多推荐