练习题题目
- 编写一段程序,运行时向用户提问“你考了多少分?(0~100)”,接受输入后判断其等级并显示出来。判断依据如下:等级={优 (90~100分);良 (80~89分);中 (60~79分);差 (0~59分);}
代码1:
class Program { static void Main(string[] args) { Console.WriteLine("请输入您的分数"); int score = ReadInt(); if(score>=90){ Console.WriteLine("您的成绩为优"); } else if (score < 60) { Console.WriteLine("您的成绩为差"); } else if (score > 70 && score < 80) { Console.WriteLine("您的成绩为良好"); } Console.ReadKey(); } static int ReadInt() { do { try { int num = Convert.ToInt32(Console.ReadLine()); return num; } catch { Console.WriteLine("输入有误,请重新输入"); } } while (true); } }
代码2:
class Program { static void Main(string[] args) { while(true){ Console.Clear(); Console.WriteLine("请问您多少分"); int score = ReadInt(); switch (score / 10) { case 9: Console.Write("您的成绩为优"); break; case 8: Console.Write("您的成绩为良好"); break; case 7: case 6: Console.Write("您的成绩为一般"); break; default: Console.Write("您的成绩不及格"); break; } Console.Write(" 按任意键继续"); Console.ReadKey(); } } static int ReadInt() { do { try { int num = Convert.ToInt32(Console.ReadLine()); return num; } catch { Console.WriteLine("输入错误,重新输入吧"); } } while (true); } }
小结:代码2采用swith-case控制流结构要比if-else if-else结构更高效。
- 编程输出九九乘法表。
代码:打印九行九列,每一行的每一列依次为行数*列数,并且列数小于或等于要比其所在的行数。
class Program { static void Main(string[] args) { for (int i = 0; i < 10;i++ ) { Console.WriteLine(); for (int j = 0; j < i; j++) { Console.Write("{0}*{1}={2} ", i, j, i * j); } } Console.ReadKey(); } }
- 编写一个函数,接收一个字符串,把用户输入的字符串中的第一个字母转换成小写然后返回
代码1:根据字符的用ascil码判断首字母是否为大写字母,首字母在97-123之间的就是小写字母,将其减去32就得到首字母的小写。
Console.WriteLine("请输入一个字符串"); string str = Console.ReadLine(); char ch = str[0]; if (ch>97 &&ch<123) { ch =Convert.ToChar( ch - 32); } str = ch.ToString() + str.Substring(1); Console.WriteLine("您输入的字符串为{0}", str); Console.ReadKey();
代码2:更简单的办法就是取出首字母这个字符,将其转换为string类型,再调用string类的ToUpper方法将其转换成大写形式,最后将首字母与字符串的后面部分拼接起来
Console.WriteLine("请输入一个字符串"); string str = Console.ReadLine(); string strF = str[0].ToString().ToUpper(); str = strF + str.Substring(1); Console.WriteLine("您输入的字符串为{0}", str); Console.ReadKey();
- 声明两个变量:int n1 = 10, n2 = 20;要求将两个变量交换,最后输出n1为20,n2为10。扩展(*):不使用第三个变量如何交换?
代码:
int a = 10; int b = 20; //推荐用第一种方法 int temp = a; a = b; b = temp; //a = a * b; //b = a / b; //a = a / b; //a = a ^ b; //b = a ^ b; //a = a ^ b; //a = b + (b = a) * 0;//c#和java里面都可以用 Console.WriteLine("a为{0},b为{1}", a, b); Console.ReadKey();
- 用方法来实现:将上题封装一个方法来做。提示:方法有两个参数n1,n2,在方法中将n1与n2进行交换,使用ref。(*)
class Program { static void Main(string[] args) { int a = 10, b = 20; ChageValue(ref a, ref b); Console.WriteLine("a为{0},b为{1}", a, b); Console.ReadKey(); } static void ChageValue(ref int num1,ref int num2) { int temp = num1; num1 = num2; num2 = temp; } }
- 请用户输入一个字符串,计算字符串中的字符个数,并输出
代码1:原始做法,用算法。定义一个数组chs来存储子字符串的字符,定义一个数组nums来存储字符的个数。遍历字符串的每个字符,判断每次遍历的字符是否已经存在于chs数组中,如果存在则跳出循环,若是因为字符已经存在于chs数组的原因而跳出循环的话,此时循环的j(即循环的次数-1)肯定不等于字符串的长度。若等于则表示正常跳出循环,chs数组中不存在该字符,这时候就将该字符加入chs中(找到chs数组中第一个为 的字符的序号,将这个序号存储我们遍历到的字符),并将nuns数组的对应的序号位置设定为1,以表示该字符出现了一次。若是遍历的字符已经存在chs数组中,则将该字符对应nuns数组上的个数加1。
Console.WriteLine("请输入一个字符串"); string s = Console.ReadLine(); //考虑字符串出现不同的字符个数为s.Length个 char[] chs = new char[s.Length]; int[] nums = new int[s.Length]; //遍历这个字符串 for (int i = 0; i < s.Length; i++) { char obj = s[i]; //判断chs中是否有字符obj,如果有存储这个字符的个数的nun数组中找出来,并将这个数加1 //如果不存在,将这个字符加到chs数组中,并将这个字符位子相同的nums int j = -1; for (j = 0; j < s.Length; j++) { if (obj == chs[j]) { break; } } if (j == s.Length)//表示该字符第一次出现,因为j=length说明是正常跳出循环 { for (int k = 0; k < chs.Length; k++) { if(chs[k]=='