110,545
社区成员
发帖
与我相关
我的任务
分享
int sum = 0;
for (int i = 1; i <= 100; i++)
sum += i;
Console.WriteLine(sum);
int sum = 0;
int i = 1;
while (i <= 100)
{
sum += i;
i++;
}
Console.WriteLine(sum);
class LetterEnumerator
{
private string str = "";
private int lastScaned = 0;
private int startPos = 0;
public LetterEnumerator(string input) { str = input.Trim(); }
/// <summary>
/// 将游标指向下一个位置,如果遍历到结尾了,就返回false,否则返回true
/// </summary>
/// <returns></returns>
public bool MoveNext()
{
在此填写代码
}
/// <summary>
/// 返回当前位置的单词
/// </summary>
public string Current
{
get
{
在此填写代码
}
}
}
class LetterEnumerator
{
private string str = "";
private int lastScaned = 0;
private int startPos = 0;
public LetterEnumerator(string input) { str = input.Trim(); }
/// <summary>
/// 将游标指向下一个位置,如果遍历到结尾了,就返回false,否则返回true
/// </summary>
/// <returns></returns>
public bool MoveNext()
{
startPos = lastScaned++;
for (int i = startPos; i < str.Length; i++)
{
if (str[i] == ' ') break;
lastScaned++;
}
return startPos < str.Length;
}
/// <summary>
/// 返回当前位置的单词
/// </summary>
public string Current
{
get
{
return str.Substring(startPos, lastScaned - startPos - 1);
}
}
}
var le = new LetterEnumerator("hello world");
while (le.MoveNext())
Console.WriteLine(le.Current);
public LetterEnumerator GetEnumerator() { return this; }
var le = new LetterEnumerator("hello world");
foreach (string s in le)
Console.WriteLine(s);
static IEnumerable<string> BuildALetterEnumerator(string str)
{
int lastScaned = 0;
int startPos = 0;
while (true)
{
startPos = lastScaned++;
for (int i = startPos; i < str.Length; i++)
{
if (str[i] == ' ') break;
lastScaned++;
}
if (!(startPos < str.Length)) break;
yield return str.Substring(startPos, lastScaned - startPos - 1);
}
}
var le = BuildALetterEnumerator("hello world").GetEnumerator();
while (le.MoveNext())
Console.WriteLine(le.Current);
下面用一个习题结束本章,请写一个遍历2~100以内素数的函数,并且用foreach调用它。static void Main(string[] args)
{
foreach (int prime in Prime100())
Console.WriteLine(prime);
}
static IEnumerable<int> Prime100()
{
for (int i = 2; i <= 100; i++)
{
bool isPrime = true;
for (int j = 2; j < i; j++)
{
if (i % j == 0)
{
isPrime = false;
break;
}
}
if (isPrime) yield return i;
}
}