1、(使用while)编写一个程序,允许用户最多尝试 3 次输入密码。如果用户在 3 次尝试内输入正确的密码,提示“登录成功”;否则,提示“密码错误”,如果超过三次还没有输入正确,提示”登录失败,账号已锁定“。假定密码为"123456"。

int count = 0;
while (true) {
    Console.WriteLine();
    Console.WriteLine("请输入密码:");
    string s= Console.ReadLine();
    count++;
    if (s == "123456")
    {
        Console.WriteLine("登录成功");               
        break;
    }
    else {
        if (count < 3)
        {
            Console.WriteLine("密码错误");                       
        }
        else {
            Console.WriteLine("登录失败,账号已锁定");
            break;
        }
    }

2、(使用while)小明今年130CM,假设他每年身高增长5%,使用循环计算他需要几年长到180CM以上?

double height = 130;
int year2 = 0;

while (height <= 180)
{
    year2++;
    height = height * 1.05;
}
Console.WriteLine(year2);  //7

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

#region 
//while 循环
int a = 13;
int b = 2;
bool isSu = true;

while (b < a)
{
    if (a % b == 0)
    {
        isSu = false;
        break;
    }
    b++;
}
if (!isSu) { Console.WriteLine("不是素数"); }
else { Console.WriteLine("是素数"); }

//for 循环
int a1 = 13;
bool isSuShu = true;

for (int i = 2; i < a1; i++)
{
    if (a1 % 2 == 0)
    {
        isSuShu = false;
        break;
    }
}
if (!isSuShu) { Console.WriteLine("不是素数"); }
else { Console.WriteLine("是素数"); }

#endregion

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

#region 
int sum = 0;
double average = 0;
while (true)
{
    Console.Write("输入数字:");
    int num2 = int.Parse(Console.ReadLine());
    count1++;
    sum += num2;
    if (num2 == 0)
    {
        average = sum / (count1 - 1);
        break;
    }
}
Console.WriteLine("平均值为:" + average);

#endregion.

5、用户每次输入一个数字,程序将这些数字相加。程序在总和超过 100 时结束,并打印总和。

#region 

int sum1 = 0;
while (sum1 <= 100)
{
    Console.Write("输入一个数字");
    int aa = int.Parse(Console.ReadLine());
    sum1 += aa;
}
Console.WriteLine(sum1);
#endregion

6、(使用do while) 用户输入多个学生的成绩,输入负数时结束输入。程序计算并输出所有有效成绩的平均分.

#region 

int count2 = 0;
double sum2 = 0;
double grade;
double average2 = 0;

do
{
    Console.Write("输入成绩:");
    grade = double.Parse(Console.ReadLine());
    if (grade >= 0)
    {
        count2++;
        sum2 += grade;
    }
} while (grade >= 0);

average2 = sum2 / count2;
Console.WriteLine("平均分:" + average2);
#endregion

7 、要求用户输入多个整数,直到输入为 0 为止。最后统计并输出:输入了多少个正数;输入了多少个负数。

#region 

int countNum = 0;  //统计正数个数
int countNum1 = 0; //统计负数个数
while (true)
{
    Console.Write("输入整数:");
    int bb = int.Parse(Console.ReadLine());

    if (bb > 0) countNum++;  //统计正数个数
    if (bb < 0) countNum1++;   //统计负数个数
    if (bb == 0) break;
}
Console.WriteLine($"输入的正数个数:{countNum},输入的负数个数:{countNum1}");
#endregion

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

#region 

int n1 = 0;   // 第一个数
int n2 = 1;   // 第二个数
int next;     // 下一个数
int i1 = 2;    // 从第3项开始             // 0 1 1 2 3 5 8 13 21 34
int count4 = 10; // 输出项数                       
Console.Write(n1 + " " + n2 + " ");
do
{
    next = n1 + n2;
    Console.Write(next + " ");

    n1 = n2;
    n2 = next;
    i1++;

} while (i1 < count4);

#endregion

9、(使用do while) 用户输入一个取款金额,要求金额必须是 100 的倍数,直到输入正确。

#region   
int money;
do
{
    Console.Write("请输入取款金额:");
    money = int.Parse(Console.ReadLine());
} while (money % 100 != 0);

#endregion

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

#region 
int oddSum = 0;  //奇数和
int evenSum = 0; //偶数和

for (int i = 0; i < 101; i++)
{
    if (i % 2 == 0) evenSum += i;
    else oddSum += i;
}
Console.WriteLine($"奇数和:{oddSum},偶数和:{evenSum}");
#endregion

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

#region  
for (int i = 0; i < 101; i++)
{
    if (i % 5 == 0) Console.Write(i + " ");
}
#endregion

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

#region 
int productSum = 1; //乘积和
string s = "";
for (int i = 10; i >= 1; i--)
{
    s += i == 10 ? $"{i}" : $"*{i}";  // i等于10时,s=$"{i}",其它等于 $"*{i}"
    productSum *= i;
}
Console.WriteLine(s + "=" + productSum);   //10*9*8*7*6*5*4*3*2*1=3628800
#endregion

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

#region 

//for 循环
int total = 0;  // 搬砖数量
int count = 0; // 搬砖次数

for (int i = 0; total <= 500; i++)
{
    count++;
    total += (int)Math.Pow(2, i);
}
Console.WriteLine(count);      //9 

//while 循环
int totalBrick = 0;  // 搬砖数量
int countBrick = 0; // 搬砖次数
int brick = 1;  // 本次要搬的数量,第一次是1,之后每次翻倍

while (totalBrick <= 500)
{
    countBrick++;
    totalBrick += brick;
    brick *= 2;
}
Console.WriteLine(countBrick); //9
#endregion

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

#region
// while循环
int year = 0;  // 计数器
double num = 8;    //学校人数

while (num <= 100)
{
    year++;
    num *= 1.23;
}
Console.WriteLine(year);

//for 循环
double num1 = 8;
double year1 = 0;
for (int i = 0; num1 <= 100; i++)
{
    year1++;
    num1 = num1 * 1.23;
}
Console.WriteLine(year1);

#endregion

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

#region 
int tenSum = 0;
double tenAverage;
int count5 = 0;
while (count5 < 10)
{
    Console.Write("请输入数字:");
    int cc = int.Parse(Console.ReadLine());

    count5++;
    tenSum += cc;
}
tenAverage = (double)tenSum / count5;
Console.WriteLine("和:" + tenSum + ",平均数:" + tenAverage);
#endregion

16、一间房子,现在满足以下条件:3人一张桌子余2人;5人一张桌子余4人;7人一张桌子余6人;9人一张桌子余8人;11人正好凑满,问有多少人?

#region 

int n = 1;
while (true)
{
    if (n % 3 == 2 && n % 5 == 4 && n % 7 == 6 && n % 9 == 8 && n % 11 == 0)
    {
        Console.WriteLine(n);
        break;
    }
    n++;
}
#endregion

17、获取从2000年到2024年,中间有多少个闰年?

#region 
int countYear = 0;
for (int i = 2000; i < 2025; i++)
{
    if ((i % 4 == 0 && i % 100 != 0) || i % 400 == 0)
    {
        countYear++;
    }
}
Console.WriteLine(countYear); //7
#endregion

 18、 鸡兔同笼:假设有鸡和兔一共35只,有94只腿,问鸡和兔各有几只?

#region
for (int i = 0; i <= 35; i++)
{
    if (i * 2 + (35 - i) * 4 == 94)
    {
        Console.WriteLine("鸡的数量:" + i + ",兔的数量" + (35 - i));
    }
}
#endregion

19、50以内最大的三个素数之和 

   #region 
   int primeSum = 0;
   int countPrime = 0;

   for (int number=49;number>=2;number--) {
       bool isPrime = true;
       for (int i = 2; i < number; i++) {
           isPrime = false;
           break;
       }

       // 当为素数时,加和
       if (isPrime) {
           primeSum += number;
           countPrime++; 
       }
       // 满足三个时,退出循环
       if (countPrime == 3) {
           break;
       }
   }
   Console.WriteLine(primeSum);

   // 将数据添加到列表里面,然后取最后三个数据
   List<int> list = new List<int>();
   for (int i = 2; i < 50; i++)
   {
       bool isPrime = true;

       for (int j = 2; j < i; j++)
       {
           if (i % j == 0)
           {
               isPrime = false;
               break;
           }
       }

       if (isPrime)
       {
           list.Add(i);
       }
   }
   int sum3 = 0;
   for (int i = list.Count - 1; i > list.Count - 4; i--)
   {
       sum3 += list[i];
   }
   Console.WriteLine(sum3);

   #endregion

20、循环输入商品编号和购买数量,系统自动计算每种商品的价钱(单价X数量),并累加总金额。当输入n时结账(假设享受8折优惠),结账时,根据折扣计算应付金额,输入实付金额,并找零。

#region 
Console.WriteLine("**********************************");
Console.WriteLine("请选择购买的商品编号:");
Console.WriteLine("1.T恤   2.网球鞋    3.网球拍");
Console.WriteLine("**********************************");
double totalPrice = 0;

while (true)
{
    Console.WriteLine();
    Console.Write("请输入商品编号:");
    int goodsNum = int.Parse(Console.ReadLine());
    Console.Write("请输入购买数量:");
    int buyNum = int.Parse(Console.ReadLine());

    double price = 0;
    string goodsName = "";

    switch (goodsNum)
    {
        case 1:
            price = 245;
            goodsName = "T恤";
            break;
        case 2:
            price = 570;
            goodsName = "网球鞋";
            break;
        case 3:
            price = 600;
            goodsName = "网球拍";
            break;
        default:
            break;
    }

    double currentPrice = buyNum * price; //当次价格
    totalPrice += currentPrice;
    Console.WriteLine($"{goodsName}:¥{price}  数量:{buyNum}  合计:¥{currentPrice}");

    Console.Write("是否继续(y/n:)");
    string s1 = Console.ReadLine();
    if (s1 == "n") { break; }
}

Console.WriteLine();
Console.WriteLine("折扣:0.8");
Console.WriteLine("应付金额:" + totalPrice * 0.8);
Console.Write("实付金额:");
double money = double.Parse(Console.ReadLine());
Console.WriteLine("找钱:" + (money - totalPrice * 0.8));

/*
Console.WriteLine("**********************************");
Console.WriteLine("请选择购买的商品编号:");
Console.WriteLine("1.T恤   2.网球鞋    3.网球拍");
Console.WriteLine("**********************************");
double totalPrice = 0;  //总价格
double currentPrice = 0; //当次价格
while (true)
{
    Console.WriteLine();
    Console.Write("请输入商品编号:");
    int goodsNum = int.Parse(Console.ReadLine());
    Console.Write("请输入购买数量:");
    int buyNum = int.Parse(Console.ReadLine());

    double price = 0;
    string goodsName = "";

    if (goodsNum == 1)
    {
        price = 245;
        goodsName = "T恤";
        currentPrice = buyNum * price;
    }
    else if (goodsNum == 2)
    {
        price = 570;
        goodsName = "网球鞋";
        currentPrice = buyNum * price;
    }
    else if (goodsNum == 3) {
        price = 600;
        goodsName = "网球拍";
        currentPrice = buyNum * price;
    }

    totalPrice += currentPrice; //每次价格进行累加
    Console.WriteLine($"{goodsName} ¥{price}  数量:{buyNum}  合计:¥{currentPrice}");

    Console.Write("是否继续(y/n:)");  // n时 退出循环
    string s = Console.ReadLine();
    if (s == "n") { break; }
}

Console.WriteLine();
Console.WriteLine("折扣:0.8");
Console.WriteLine("应付金额:" + totalPrice * 0.8);
Console.Write("实付金额:");
double money = double.Parse(Console.ReadLine());
Console.WriteLine("找钱:" + (money - totalPrice * 0.8));
 */
#endregion

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

            Random random = new Random();
            int result = random.Next(1, 101);
            Console.WriteLine(result);
            int count = 0; //次数
            inputNum:
            if (count>=5)
            {
                Console.WriteLine("输入次数已经用完了");
                return;
            }
            Console.WriteLine("请输入要猜的数字");
            string str = Console.ReadLine();
            bool isSuccess = int.TryParse(str, out int num); //num转换成功的数字
            if (!isSuccess) // 输入的数字不合法
            {
                Console.WriteLine("输入数字不合法");
                goto inputNum; //重复执行
            }
            if (!(num>=1&&num<=100))// 数字不在1-100之间
            {
                Console.WriteLine("请输入一个1-100之间数字");
                goto inputNum;
            }
            count++;
            if (num < result)
            {
                Console.WriteLine("猜小了");
                goto inputNum;
            }
            else if (num > result)
            {
                Console.WriteLine("猜大了");
                goto inputNum;
            }
            else
            {
                Console.WriteLine("猜对了");
            }

22、求 1 - 1000 以内所有的完美数。(一个正整数,等于它所有真因子(不含自身)之和) 

#region  
   // 6:真因子 {1,2,3},  1 + 2 + 3 = 6
   
   for (int i = 1; i <=1000; i++)
   {
       int sum = 0;  // 初始化为0
       for (int j = 1; j < i; j++) {
           if (i % j == 0) { 
              sum+=j;                    
          }
       }

       if(sum==i) Console.WriteLine(i);   // 6  28  496               
   }
   #endregion

23、百钱百鸡:100块钱可以买多少只公鸡,多少只母鸡,多少只小鸡?公鸡五块钱一只,母鸡三块钱一只,小鸡一块钱三只。

#region  
   // i:公鸡数量   j:母鸡数量    小鸡数量:k

   for (int i = 0; i <= 20; i++) {
       for (int j = 0; j <=33; j++) {

           int k = 100 - i - j;  //小鸡数量
           if (i * 5 + j * 3+k/3==100 && k%3==0){
               Console.WriteLine($"公鸡:{i},母鸡:{j},小鸡:{k}"); // 4
           }
       }
   }
   #endregion

 24、把一张1元的钞票换成5分,2分和1分的硬币,要求每种至少一枚,并且所换硬币数不超过30枚。请问,有哪几种换法?

#region 
   // i:5分   j:2分    k:1分
   int count1 = 0;
   for (int i = 1; i <20; i++) {
       for (int j = 1; j < 50; j++) {
           int k = 100 - i * 5 - j * 2;
           if (i + j + k <= 30 && k>=1) {
               count1++;
               Console.WriteLine($"5分:{i},2分:{j},1分:{k}");   
           }
       }                 
   }
   Console.WriteLine(count1);  //20
   #endregion

25、一共150元,牙刷2元,牙膏5元,香皂3元,花光150元,一共有多少种方式,并列举?

#region 
   int count2 = 0;
   for (int i = 0; i <=75; i++)
   {
       for (int j = 0; j <=30; j++)
       {                   
           if ((150 - 2 * i - 5 * j)>=0 && (150- 2 * i - 5 * j) %3==0) {
               count2++;
               int k = (150 - 2 * i - 5 * j )/ 3;
              // Console.WriteLine($"牙刷:{i},牙膏:{j},香皂:{k}");
           }
           
       }
   }
   Console.WriteLine(count2);  //401

   #endregion

26. 编写程序实现功能,计算100至1000之间有多少个数,其各位数字之和是7

#region 
   int count = 0;
   for (int i = 100; i <1000; i++)
   {
       int ge = i % 10;
       int shi= i %10/100;
       int bai = i /100;

       if (ge + shi + bai == 7) {
           count++;
       }
   }
   Console.WriteLine(count);

   #endregion

27、基数为2 ,次数为5,结果为22222 ,通过数学运算得到的?

#region 
   int s=0;
   for (int i = 0; i < 5; i++) {
       s += 2 * (int)Math.Pow(10, i);
   }
   Console.WriteLine(s);
   #endregion

更多推荐