#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