C# for 循环案例(难一点的)
时间: 2025-07-13 10:01:45 浏览: 7
以下是一些高级的 C# `for` 循环案例,这些案例展示了如何利用嵌套循环、多重条件判断以及其他复杂逻辑来解决实际编程问题。
### 示例 1: 打印九九乘法表
这是一个经典的例子,展示如何使用双重 `for` 循环构建表格状输出。
```csharp
using System;
class Program
{
static void Main()
{
for (int i = 1; i <= 9; i++) // 外层循环控制行号
{
for (int j = 1; j <= i; j++) // 内层循环控制列号
{
Console.Write($"{j} * {i} = {i * j}\t"); // \t 表示制表符
}
Console.WriteLine(); // 每完成一行后换行
}
}
}
```
这个程序通过两重循环实现了逐行列出所有的乘法组合[^2]。
### 示例 2: 计算斐波那契数列前N项
斐波那契数列是一种常见的数学序列,其每一项等于前两项之和。这里演示了如何用单个 `for` 循环生成该系列的部分成员。
```csharp
using System;
class FibonacciExample
{
public static void Main(string[] args)
{
int n = 10; // 可调整为任意正整数值
long first = 0, second = 1;
Console.Write(first + ", " + second);
for(int k=3 ;k<=n;k++)
{
long next = first + second;
Console.Write(", "+next);
first = second;
second = next;
}
}
}
```
在此代码片段中,变量first 和second 初始化代表初始两个数字,随后每轮迭代更新这两个值直到达到所需长度为止[^4]。
### 示例 3: 查找质数(Prime Numbers)列表
本例说明怎样筛选给定范围内所有素数(也叫作质数)。它采用了简单的试除法原理来进行检测。
```csharp
using System;
public class PrimeNumbersFinder
{
public static bool IsPrime(int number)
{
if(number<2)return false;
double sqrt=(double)Math.Sqrt((double)number);
for(int divisor=2;divisor<=sqrt;divisor++)
if ((number%divisor)==0) return false;
return true ;
}
public static void FindPrimesUpTo(int limit)
{
for(int candidate=2;candidate<=limit;candidate++)
if(IsPrime(candidate))Console.WriteLine("{0}",candidate);
}
public static void Main(String []args){
FindPrimesUpTo(50);
}
}
```
函数IsPrime接受参数number作为待测对象,并返回布尔类型的判定结果;FindPrimesUpTo方法接收上限limit做为主要入口点,负责调用辅助功能并打印符合条件的结果集[^4]。
---
### 提升难度的应用场景
#### 场景 A: 绘制图形模式
尝试创建不同形状图案比如金字塔形星号(*)阵列或其他几何形态结构。例如下面给出了一种简单版本的直角三角形绘制方案:
```csharp
static void DrawTriangle(int height)
{
for (int row = 1; row <= height; ++row)
{
for (int col = 1; col <= row; ++col)
{
Console.Write("* ");
}
Console.WriteLine();
}
}
// 调用样例:DrawTriangle(7);
```
#### 场景 B: 数据分析与处理
假设有一组随机产生的二维坐标点集合{(xi,yi)},现在希望找出距离原点最近的那个位置及其对应的距离d=sqrt(xi²+yi²),可以借助如下思路实现目标定位过程:
```csharp
Random rand=new Random();
Point closest=null;
double minDistance=Double.MaxValue;
for(int idx=0;idx<numPoints;++idx)//numPoints预先设定好大小
{
Point current=new Point(rand.Next(-100,+100),rand.Next(-100,+100));
double dist=Math.Sqrt(current.X*current.X+current.Y*current.Y);
if(dist<minDistance){closest=current;minDistance=dist;}
}
if(closest!=null)System.out.printf("Closest point is (%f,%f)\n",closest.getX(),closest.getY());
else System.out.println("No points found.");
```
---
阅读全文
相关推荐

















