您的位置:首页 > 编程语言 > C#

C#入门篇5-3:流程控制语句 for

2012-04-18 18:49 281 查看
#region for语句
public class C3
{
#region 表达式求值

//计算奇数之和,偶数之积
public static void Sun7()
{
//两个for循环
int sum1 = 0;
int dbResult1 = 1;
for (int i = 1; i <= 10; i += 2)
{
sum1 += i;
}
for (int j = 2; j <= 10; j += 2)
{
dbResult1 *= j;
}
Console.WriteLine("双for循环,奇数之和" + sum1 + " 偶数之积" + dbResult1);

//单for循环
int sum2 = 0;
int dbResult2 = 1;
for (int x = 1; x <= 10; x++)
{
if (x % 2 == 1)
{
sum2 += x;
}
else
{
dbResult2 *= x;
}
}
Console.WriteLine("单for循环,奇数之和" + sum2 + " 偶数之积" + dbResult2);

//While循环
//while 循环做1--100之内的偶数之积和奇数之和

int m = 1; //定义循环变量
double dbSult = 1;
int sum = 0;

while (m <= 10)
{
if (m % 2 == 0)
{
dbSult *= m;
}
else
{
sum = sum + m;
}
m++;
}
Console.WriteLine("while循环,奇数之和:{0}  偶数之积:{1} ", sum, dbSult);
}

// 1!+2!+3!+4!+…+10!
public static void Sun8()
{
double dbnum = 1;
double dbsum = 0;
for (int i = 1; i <= 10; i++)
{
dbnum *= i;
dbsum += dbnum;//一个循环两件事情 了;累积到dbsum上
}
Console.WriteLine("结果为:" + dbsum);
}

// S=1-1/2+1/3-1/4+1/5+……+1/99的值。
public static void Sun9()
{
//拆分开计算
double even = 0;
double odd = 0;
for (int i = 1; i <= 99; i++)
{
if (i % 2 == 0)
{
even = even - 1.0 / i;
}
}
for (int j = 0; j <= 99; j++)
{
if (j % 2 == 1)
{
odd = odd + 1.0 / j;
}
}
Console.WriteLine("双For循环的结果为:" + (even + odd));

double dbsum = 0;
for (int k = 1; k <= 99; k++)
{
//偶数就有减法
if (k % 2 == 0)
{
dbsum = dbsum - 1.0 / k;
}
else
{
dbsum = dbsum + 1.0 / k;
}
}
Console.WriteLine("单For循环的结果为:" + dbsum);
}

#endregion

//打印乘法表1
public static void Fun1()
{
//打印表头
Console.WriteLine("九九乘法表");

//打印九九表
for (int i = 1; i <= 15; i++)
{
//计算并格式化输出九九表的内容
for (int j = 1; j <= i; j++)
{
Console.Write("{0}x{1}={2}\t", i, j, i * j);
}
//换行
Console.WriteLine();
}
}

//打印乘法表2
public static void Fun1_1()
{
for (int i = 1; i <= 9; i++)
{
//i控制行
for (int j = 1; j <= i; j++)
{
//j控制列 i和j的关系是在每行中j<=i
Console.Write("{0}*{1}={2} ", j, i, i * j);

//若拼接字符串使用
//str += j + "x" + i + "=" + i * j + "  ";
}
Console.WriteLine();
}
}

//输出直角三角形。
public static void Fun2()
{
for (int i = 1; i <= 9; i++)
{
for (int j = 1; j <= i; j++)
{
Console.Write("*");
}
Console.WriteLine();
}
}

//输出菱形。
public static void Fun3()
{
for (int i = 1; i <= 4; i++)
{
for (int j = 1; j <= 4 - i; j++)
{
Console.Write(" ");
}
for (int k = 1; k <= 2 * i - 1; k++)
{
Console.Write("*");
}
Console.WriteLine();
}

for (int a = 1; a <= 4; a++)
{
for (int g = 1; g <= a; g++)
{
Console.Write(" ");
}
for (int f = 1; f <= (6 - 2 * a) + 1; f++)
{
Console.Write("*");
}
Console.WriteLine();
}
}

//输出等腰三角形
public static void Fun4()
{
for (int i = 1; i <= 4; i++)
{
for (int j = 1; j <= 4 - i; j++)
{
Console.Write(" ");
}
for (int k = 1; k <= 2 * i - 1; k++)
{
Console.Write("*");
}
Console.WriteLine();
}
Console.ReadLine();
}

#region 本例演示验证回文数

//方法一:首尾相比较的方法
public static void Fun5()
{
Console.WriteLine("请输入数字:");
string str = Console.ReadLine().Trim();

bool bl = true;//默认值设为true

//装换成字符数组
char[] ch = str.ToCharArray();

//循环控制第一个字符和最后一个字符的比较
for (int i = 0; i < ch.Length; i++)
{
if (ch[i] != ch[ch.Length - i - 1])
{
bl = false;
break;
}
}
if (bl)
{
Console.WriteLine("Yes");
}
else
{
Console.WriteLine("No");
}
}

//方法二:首尾相比较截取的方法
public static void Fun6()
{
Console.WriteLine("请输入数字:");
string str = Console.ReadLine().Trim();
bool bl = true;
for (int i = 0; i < str.Length; i++)
{
if (str.Substring(i, 1) != str.Substring(str.Length - i - 1, 1))
{
bl = false;
break;
}
}
if (bl)
{
Console.WriteLine("Yes");
}
else
{
Console.WriteLine("No");
}
//显然第一种方法的效率要高于第二种
}

//方法三:反转字符数组的方法
public static void Fun7()
{
Console.WriteLine("请输入数字:");
string str = Console.ReadLine().Trim();

//转换成字符数组
char[] ch = str.ToCharArray();

//反转字符数组
Array.Reverse(ch);

//转成新的字符串
string stra = new string(ch);

//比较两个字符串是否相同
if (str == stra)
{
Console.WriteLine("Yes");
}
else
{
Console.WriteLine("No");
}
}

//方法四:本质上与第一种方法是一样的
public static void Fun8()
{
Console.WriteLine("请输入数字:");
string str = Console.ReadLine().Trim();

ArrayList alist = new ArrayList();

bool bl = true;
foreach (char ch in str)
{
alist.Add(ch);
}

for (int i = 0; i < alist.Count; i++)
{
if (alist[i].Equals(alist[alist.Count - i - 1]))
{
bl = true;
}
else
{
bl = false;
break;
}
}

//或者使用这种形式
//for (int i = 0; i < alist.Count; i++)
//{
//    if (alist[i].Equals(alist[alist.Count - i - 1]) == false)
//    {
//        bl = false;
//        break;
//    }
//}
if (bl)
{
Console.WriteLine("Yes");
}
else
{
Console.WriteLine("No");
}
}

//方法五:
public static void Fun9()
{
//判断是否是回文(回文如:“上海自来水来自海上)

Console.WriteLine("请输入数字:");
string str = Console.ReadLine().Trim();

char[] chr = str.ToCharArray();

bool flag = true;

for (int i = 0; i < chr.Length; i++)
{
if (chr[i] != chr[chr.Length - 1 - i])
{
flag = false;
break;
}
}

if (flag)
{
Console.WriteLine("回文");
}
else
{
Console.WriteLine("不是回文");
}

}

#endregion

#region 1234组成无重复的数组

public static void Fun10()
{
//由 1,2,3,4能组成多少个个、十、百、千位互不相同的四位数
for (int i = 1; i <= 4; i++)
{
for (int j = 1; j <= 4; j++)
{
for (int k = 1; k <= 4; k++)
{
if (i != j && i != k && j != k)
{
Console.Write(i.ToString() + j.ToString() + k.ToString() + " ");
}
}
Console.WriteLine();
}
}
}

//变换一种形式
public static int ctr = 0;
public static void Fun11()
{
//有1 2 3 4可以组成多个十百 无重复的数字
for (int i = 1; i <= 4; i++)
{
for (int j = 1; j <= 4; j++)
{
for (int k = 1; k <= 4; k++)
{
if (i != j && i != k && j != k)
{
ctr++;
Console.WriteLine(String.Concat(i.ToString(), j.ToString(), k.ToString()));
}
}
}
}
Console.WriteLine(ctr);
}

//形式2
public static void Fun12()
{
//由 1,2,3,4能组成多少个个、十、百、千位互不相同的四位数
for (int i = 1; i <= 4; i++)
{
for (int j = 1; j <= 4; j++)
{
for (int k = 1; k <= 4; k++)
{
for (int l = 1; l <= 4; l++)
{
if (i != j && i != k && i != l && j != k && j != l && k != l)
{
Console.Write(i.ToString() + j.ToString() + k.ToString() + l.ToString() + " ");
}
}
}
Console.WriteLine();
}
}

}

#endregion

//寻找素数101-200内的素数
public static void Sun1()
{
//显示101-200内的素数使用整数作为判断的标准
int inta = 0;
int count = 0;
for (int i = 101; i <= 200; i++)
{
//将1和它本身之外的数全都除一遍
for (int j = 2; j < i; j++)
{
//若有一个除尽了,证明该数不是素数
if (i % j == 0)
{
inta = 1;
break;
}
}
//如果inta等于0证明该数是素数
if (inta == 0)
{
Console.Write(i + " ");
count++;
}
if (count % 10 == 0)
{
Console.WriteLine();
}
inta = 0;
}

}

//水仙花数
public static void Sun2()
{
//方式一
for (int i = 1; i <= 9; i++)
{
for (int j = 0; j <= 9; j++)
{
for (int k = 0; k <= 9; k++)
{
if (Math.Pow(i, 3) + Math.Pow(j, 3) + Math.Pow(k, 3) == i * 100 + j * 10 + k)
{
Console.Write("{0} ", i * 100 + j * 10 + k);
}
}
}
}

//方式二
for (int i = 100; i <= 999; i++)
{
int a = i / 100;//对100求整,获取百位数字
int b = i / 10 % 10;//对10求整获取98,然后对10求余
int c = i % 10;//直接对10求余获取个位数字

if (i != a * a * a + b * b * b + c * c * c)
{
//结束本次循环,开启下一次循环
//结束本次循环,代表continue后面的语句不执行
continue;
}
Console.Write("{0} ", i);

//if (i == a * a * a + b * b * b + c * c * c)
//{
//    //结束本次循环,开启下一次循环
//    //结束本次循环,代表continue后面的语句不执行
//    Console.Write("{0} ", i);
//}
}
}

//数列问题
public static void Sun3()
{

#region 分析
//题目:有数列 1,1,2,3,5,8,13,21,…… 请算出第30位的数是几?

//有数列 1,1,2,3,5,8,13,21,…… 请算出第30位的数是几?
//分析问题:找循环变量和循环中止条件即第几次得出第30位数
//第1次运算得到的是第3位数
//第2次运算得到的是第4位数
//第3次运算得到的是第5位数
//第4次运算得到的是第6位数
//第5次运算得到的是第7位数,根据规律得知循环进行到第28次时便得到了第 30位数

//关键:for 循环是用来控制运算次数的
//1+1=2;
//1+2=3;
//2+3=5;
//3+5=8;
#endregion

int first = 1, second = 1;
for (int i = 0; i <= 27; i++)
{
//每次运算的first的值都来自于上次运算second的值,
//所以用一个中间变量记录上次second的值
//借助中间变量来记录
//每次运算的第一个数都是上一次运算的第二个数,而每次运算的第二
//个数都是上次运算的和

int temp = second;
second = first + second;
first = temp;
}
Console.WriteLine("单位移动的结果为:" + second);

first = 1;
second = 1;
for (int j = 0; j <= 13; j++)
{
//两位两位的移
first = first + second;
second = first + second;
}
Console.WriteLine("两位移动的结果为:" + second);
}

//数列求和
public static void Sun3_1()
{
//一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少?
int[] intmr = new int[30];
intmr[0] = 1;
intmr[1] = 1;
for (int i = 2; i < intmr.Length; i++)
{
intmr[i] = intmr[i - 1] + intmr[i - 2];
}

for (int j = 0; j < intmr.Length; j++)
{
Console.WriteLine(intmr[j]);
}
}

//本例演示百钱百鸡
public static void Run1()
{
//公鸡1只5元,母鸡1只3元,小鸡3只1元,
//现有100元钱,要求买100只鸡,请输出所有的可能组合。

//i控制公鸡的数量,最多买20只,j控制母鸡的数量,最多买33只

int k;
for (int i = 0; i <= 20; i++)//从0开始意味着公鸡可以一只也不买
{
for (int j = 0; j <= 33; j++)
{
//获得小鸡的数量
k = (100 - i * 5 - j * 3) * 3;

//只数要满足100
if (i + j + k == 100)
{
Console.WriteLine("公鸡数量:{0},母鸡数量:{1},小鸡数量:{2}", i, j, k);
}
}
}
}

//输出100--200之间3或5的倍数
public static void Sun4()
{
int cnt = 0;      //计数器
string str = "";
for (int i = 100; i <= 200; i++)
{
if (i % 3 == 0)
{
cnt++;
str += i + " ";
if (cnt % 5 == 0)
{
str += "\r\n";
}
}
else if (i % 5 == 0)
{
cnt++;
str += i + " ";
if (cnt % 5 == 0)
{
str += "\r\n";
}
}
}
Console.WriteLine(str);
}

//取出球问题
public static void Sun5()
{
//有一袋球(100到200之间),如果一次数四个,则剩两个;
//一次数五个,则剩三个;
//一次数六个,则正好数完,编程求该袋球的个数。
for (int a = 100; a <= 200; a++)
{
if (a % 4 == 2 && a % 5 == 3 && a % 6 == 0)
{
Console.WriteLine("总共{0}", a);
}
}
}

//判断字母是否为数字
public static void Sun6()
{

//从键盘输入一任意字符串判断是否全部是字母组成,是则输出“Yes”,否则“NO”。
lab:
Console.WriteLine("请输入一段字符串:");
string str = Console.ReadLine().Trim();
bool bl = true;//默认都是真的
for (int i = 0; i < str.Length; i++)
{
char ch = Convert.ToChar(str.Substring(i, 1));
if (char.IsLetter(ch) == false)//如果有一个假直接跳出循环
{
bl = false;
break;
}
}

if (bl)//布尔值不用表达式
{
Console.WriteLine("Yes");
}
else
{
Console.WriteLine("No");
}
goto lab;
}

}
#endregion
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐