如何用C#按指定交替格式打印1到100的数字?
实现1到100的特定顺序打印
要实现「100, 1, 2, 99, 98, 3, 4, 97,……52, 49, 50, 51」的打印格式,核心是抓住数字的排列规律:从两端向中间交替取数,先取最大的1个,之后循环取最小的2个、最大的2个,直到所有数字都被取出。
以下是两种适合新手理解的C#实现方式:
方法一:双指针法(直观易懂)
通过两个指针分别指向当前最小和最大的未取数字,按规则依次添加到结果列表,最后统一输出:
using System; using System.Collections.Generic; class Program { static void Main() { // 创建列表存储最终顺序 List<int> sequence = new List<int>(); int start = 1; // 指向当前最小的未取数字 int end = 100; // 指向当前最大的未取数字 // 先添加第一个最大数100 sequence.Add(end); end--; // 循环取数:每次取2个小数、2个大数,直到所有数字被取完 while (start <= end) { // 添加2个当前最小的数 if (start <= end) { sequence.Add(start); start++; } if (start <= end) { sequence.Add(start); start++; } // 添加2个当前最大的数 if (start <= end) { sequence.Add(end); end--; } if (start <= end) { sequence.Add(end); end--; } } // 用逗号分隔打印结果 Console.WriteLine(string.Join(", ", sequence)); } }
方法二:分组拼接法(按规律分组)
观察排列规律,将数字分成多个小组,按组拼接后输出:
using System; using System.Collections.Generic; class Program { static void Main() { List<int> sequence = new List<int>(); // 第一个组:仅包含100 sequence.Add(100); int count = 1; // 记录已添加的数字数量 int groupNum = 2; // 从第2组开始处理 // 循环添加每组的数字,直到添加99个数字(最后一个单独处理) while (count < 99) { if (groupNum % 2 == 0) { // 偶数组:添加连续的两个小数 int num = (groupNum / 2) * 2 - 1; sequence.Add(num); sequence.Add(num + 1); count += 2; } else { // 奇数组:添加连续的两个大数 int num = 100 - ((groupNum - 1) / 2) * 2; sequence.Add(num - 1); sequence.Add(num - 2); count += 2; } groupNum++; } // 添加最后一个剩余数字51 sequence.Add(51); // 打印结果 Console.WriteLine(string.Join(", ", sequence)); } }
两种方法都能实现需求,其中双指针法逻辑更直观,适合新手理解和调试。你可以直接复制代码到Visual Studio或其他C#编辑器中运行测试。
内容的提问来源于stack exchange,提问作者Fatma Sahatchieva
相关产品推荐
相关产品推荐

