50道经典c#程序面试题——机试篇
2021/8/3 17:07:54
本文主要是介绍50道经典c#程序面试题——机试篇,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.编一个程序,定义常量Pi=3.14159265,从键盘上输入半径r,求出圆的面积。
const double Pi = 3.14159265; double r,s; Console.WriteLine("请输入圆的半径"); r = double.Parse(Console.ReadLine()); s = Pi * r * r; Console.WriteLine("圆的面积是{0}",s);
2. 编一个程序,定义三个double类型的变量,分别从键盘上输入值给它们,然后用Console.WriteLine方法把它们输出成一列,小数点对齐,保留3位小数。
double x, y, z; Console.WriteLine("请输入一个数:"); x = double.Parse(Console.ReadLine()); Console.WriteLine("请输入一个数:"); y = double.Parse(Console.ReadLine()); Console.WriteLine("请输入一个数:"); z = double.Parse(Console.ReadLine()); Console.WriteLine("{0,10:f3}", x); Console.WriteLine("{0,10:f3}", y); Console.WriteLine("{0,10:f3}", z); //Console.WriteLine("{0:f3}", x); //Console.WriteLine("{0:f3}", y); //Console.WriteLine("{0:f3}", z);
3.编一个程序,从键盘上输入三个数,用三元运算符(? :)把最大数找出来。
float x, y, z, temp; Console.Write("请输入一个实数:"); x = float.Parse(Console.ReadLine()); Console.Write("请输入一个实数:"); y = float.Parse(Console.ReadLine()); Console.Write("请输入一个实数:"); z = float.Parse(Console.ReadLine()); temp = x >= y ? x : y; temp = temp >= z ? temp : z; Console.WriteLine("最大数为:{0}", temp);
4.编一个程序,从键盘上输入三个数,用三元运算符(? :)把最小数找出来。float x, y, z, temp;
Console.Write("请输入一个实数:"); x = float.Parse(Console.ReadLine()); Console.Write("请输入一个实数:"); y = float.Parse(Console.ReadLine()); Console.Write("请输入一个实数:"); z = float.Parse(Console.ReadLine()); temp = x <= y ? x : y; temp = temp <= z ? temp : z; Console.WriteLine("最大数为:{0}", temp);
5.编一个程序,输入一个字符,如果是大写字母,就转换成小写字母,否则不转换。
char ch; Console.WriteLine("请输入一个字符"); ch = char.Parse(Console.ReadLine()); if (ch >= 'A' && ch <= 'Z') { ch = (char)(ch + 32); } Console.WriteLine(ch);
6.输入一个字符,判定它是什么类型的字符(大写字母,小写字母,数字或者其它字符)
char ch; Console.WriteLine("请输入一个字符"); ch = char.Parse(Console.ReadLine()); if (ch >= 'A' && ch <= 'Z') Console.WriteLine("大写字母"); else if (ch >= 'a' && ch <= 'z') Console.WriteLine("小写字母"); else if (ch >= '0' && ch <= '9') Console.WriteLine("数字"); else Console.WriteLine("其他字母");
7.编一个程序,设圆的半径r=1.2,高h=1.5,定义圆周率常量Pi=3.1415,求出圆柱的体积。
const double Pi = 3.1415; double r=1.2,h=1.5; double v; v = Pi * r * r * h; Console.WriteLine("圆柱体的体积是{0}",v);
8.编一个程序,设园半径r=1.5,园柱高h=3.6,圆周率3.1415定义为常量,求出圆周长、圆面积、圆柱体积。然后用Console.WriteLine方法输出计算结果,输出时要求有文字说明,取小数点后2位数字。例如,圆周长=×××.××。
const double Pi = 3.1415; double r = 3, h = 5; double c, s, v; c = 2 * Pi * r; s = Pi * r * r; v = Pi * r * r * h; Console.WriteLine("圆的周长为{0:f2}",c); Console.WriteLine("圆的面积为{0:f2}", s); Console.WriteLine("圆的体积为{0:f2}", v);
9.编一个程序,输入一个字符,如果输入的字符是大写字母,则转换为小写字母;如果输入的字符是小写字母,则转换为大写字母,否则不转换。
char ch,c; Console.WriteLine("请输入一个字符"); ch = char.Parse(Console.ReadLine()); if (ch >= 'A' && ch <= 'Z') { c = (char)(ch + 32); Console.WriteLine("字符{0}为大写字母,转换为小写字母为{1}", ch, c); } else if (ch >= 'a' && ch <= 'z') { c = (char)(ch - 32); Console.WriteLine("字符{0}为小写字母,转换为大写字母为{1}", ch, c); } else Console.WriteLine("{0}既不是大写字母也不是小写字母",ch);
10.编一个程序,定义结构类型(有学号、姓名、性别和程序设计成绩四个字段),声明该结构类型变量,用赋值语句对该变量赋值以后再输出。
struct student { public int no; public string name; public string sex; public double score; } class Program { static void Main(string[] args) { student stu; stu.no = 10003; stu.name = "小小"; stu.sex = "女"; stu.score = 89.5; Console.WriteLine("学生的学号是{0},名字叫{1},性别是{2},程序设计的成绩是{3}",stu.no,stu.name,stu.sex,stu.score);
11.编一个程序,定义一个实数变量,从键盘上输入一个值,如果这个值在闭区间[0,100]里,则加上1000,否则不加。最后输出结果。
float f,g; Console.WriteLine("请输入一个实数变量"); f = float.Parse(Console.ReadLine()); if (f >= 0 && f <= 100) { g = f + 1000; Console.WriteLine("{0}在0-100之间,最后结果为{1}", f, g); } else Console.WriteLine("{0}不在0-100之间",f);
12.编一个程序,输入一个整数,使用if else语句,如果该数大于0,则加上100,否则加上500,输出结果。
int i,j; Console.WriteLine("请输入一个整数"); i = int.Parse(Console.ReadLine()); if (i > 0) { j = i + 100; Console.WriteLine("{0}>0,最后结果是{1}", i, j); } else { j = i + 500; Console.WriteLine("{0}<0,最后结果是{1}",i,j);
13.编一个程序,用if else语句,输入一个整数,如果该数大于0,则输出"这个数大于零。",如果该数等于0,则输出"这个数等于零。",否则输出"这个数小于零。"。
int i; Console.WriteLine("请输入一个整数"); i = int.Parse(Console.ReadLine()); if (i > 0) { Console.WriteLine("这个数大于0"); } else if(i==0) { Console.WriteLine("这个数等于0"); } else { Console.WriteLine("这个数小于0"); }
14.编一个程序,输入一个正数,对该数进行四舍五入到个位数的运算。例如,实数12.56经过四舍五入运算,得到结果13;而12.46经过四舍五入运算,得到结果12。
double d; int i,e; Console.WriteLine("请输入一个正数"); d = double.Parse(Console.ReadLine()); i=(int)d; if ((d - i) >= 0.5) e = i + 1; else e = i; Console.WriteLine("{0}四舍五入的结果为{1}", d, e);
15.编写一个程序,定义三个float类型的变量,分别从键盘上输入值给它们, 然后用if else选择语句找出它们中的最小数,最后输出结果。
float x, y, z,min=0; Console.WriteLine("请输入三个float类型的值"); x = float.Parse(Console.ReadLine()); y = float.Parse(Console.ReadLine()); z = float.Parse(Console.ReadLine()); if (x < y && x < z) min = x; else if (y < x && y < z) min = y; else min = z; Console.WriteLine("这三个数中的最小值为{0}",min);
16.编一个程序,输入三个实数,要求使用if else语句把它们的中间数找出来,可以使用逻辑运算符。
float x, y, z, second = 0; Console.WriteLine("请输入三个float类型的值"); x = float.Parse(Console.ReadLine()); y = float.Parse(Console.ReadLine()); z = float.Parse(Console.ReadLine()); if ((x>y&&x<z)||(x<y&&x>z)) second = x; else if ((y>x&&y<z)||(y<x&&y>z)) second = y; else second = z; Console.WriteLine("这三个数中的中间数为{0}", second);
17.编一个程序,首先输入一个成绩(0到100的整数),用if else语句然后判断该成绩是优、良、中、及格还是不及格。
double score; Console.WriteLine("请输入一个成绩"); score = double.Parse(Console.ReadLine()); if (score >= 90) Console.WriteLine("优"); else if (score >= 80) Console.WriteLine("良"); else if (score >= 70) Console.WriteLine("中"); else if (score >= 60) Console.WriteLine("及格"); else Console.WriteLine("不及格");
18.编一个程序,输入0—100之间的一个学生成绩分数,用switch语句输出成绩等第(成绩优秀(90-100),成绩良好(80-89),成绩及格(60-79)和成绩不及格(59以下))。
int score; Console.WriteLine("请输入学生成绩"); score = int.Parse(Console.ReadLine()); score = score / 10; switch (score) { case 10: Console.WriteLine("成绩优秀"); break; case 9: Console.WriteLine("成绩优秀"); break; case 8: Console.WriteLine("成绩良好"); break; case 7: Console.WriteLine("成绩及格"); break; case 6: Console.WriteLine("成绩及格"); break; default: Console.WriteLine("成绩不及格"); break;
19.编一个程序,利用do-while循环语句,从键盘上输入10个整数,求出它们的和。
int i=1,n,sum=0; do { Console.WriteLine("请输入一个整数"); n = int.Parse(Console.ReadLine()); sum = sum + n; i++; }while(i<=10); Console.WriteLine("这十个整数的和为{0}",sum);
20. 编一个程序,用while循环语句来计算1+1/2+2/3+3/4+…+99/100之和。
double i = 1,s=1; while(i<=99) { s = s + i / (i + 1); i++; } Console.WriteLine("和为{0}",s);
21.编一个程序,用do-while循环语句来计算PI=4*(1-1/3+1/5+…+1/n),要求当1/n<0.000001时停止计算。
double pi,s=0,x; double n=1; do { x = Math.Pow(-1,n + 1) / (2 * n - 1); s = s + x; n++; } while (1 / n >= 0.000001); pi = s * 4; Console.WriteLine("pi的值为:{0}",pi);
22.编一个程序,从键盘上输入二个实数,使用Math类中Max()和Min()方法,求出它们中的最大数和最小数。
double d1, d2,max,min; Console.WriteLine("请输入两个实数"); d1 = double.Parse(Console.ReadLine()); d2 = double.Parse(Console.ReadLine()); max=Math.Max(d1,d2); min = Math.Min(d1,d2); Console.WriteLine("最大值为{0},最小值为{1}",max,min);
23.编一个程序,利用while循环语句和Math类中的Pow()方法,求出1到10的各个数的平方之和。
double i = 1,s=0; while (i <= 10) { s = s + Math.Pow(i, 2); i++; } Console.WriteLine("和为{0}",s);
24.编一个程序,打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如, 153=111+555+333,所以153是“水仙花数”。
int a, i, j, k; for (a = 100; a <= 999; a++) { i = a % 10; k = a / 100; j = a % 100 / 10; if (a == Math.Pow(i, 3) + Math.Pow(j, 3) + Math.Pow(k, 3)) Console.WriteLine("{0}是水仙花数",a);
25.编写一个程序,用while语句,求出1+(1+2)+(1+2+3)+…+(1+2+3+…+10)之和。
int i = 1, s = 0,j=1, s1 = 0; while (j <=10) { while (i <= j) { s = s + i; i++; } s1=s1+s; j++; } Console.WriteLine("{0}", s1);
26.编一个程序,输入二个正整数,求出它们的最大公约数。
int i, j,k; Console.WriteLine("请输入两个正整数"); i = int.Parse(Console.ReadLine()); j = int.Parse(Console.ReadLine()); k = i < j ? i : j; while (!(i % k == 0 && j % k == 0)) k--; Console.WriteLine("最大公约数为{0}",k);
27.编一个程序,用while循环语句,从键盘输入10个数,要求找出最大数和次大数。
int i=1,max=1,max1=1; int s; Console.WriteLine("请输入10个数:"); while (i<=10) { s = int.Parse(Console.ReadLine()); if (s > max) { max1 = max; max = s; } else if (s > max1) { s = max1; } i++; } Console.WriteLine("最大值为{0},次大值为{1}",max,max1);
28.编一个程序,要求使用while语句,输入用户名和密码,实现用户登录程序的功能,至多允许输入三次,超过三次不允许登录。
const string UserName = "admin"; const string PassWord = "123456"; string username, password; int i=1; while(i<=3) { Console.WriteLine("请输入用户名"); username = Console.ReadLine(); Console.WriteLine("请输入密码"); password = Console.ReadLine(); if (username == UserName && password == PassWord) break; else Console.WriteLine("你输入的用户名或者密码错误,请重新输入用户名和密码"); i++; } if (i <= 3) { Console.WriteLine("正在登录系统"); } else Console.WriteLine("不能登录系统");
29.有关系式11+22+33+…+kk<2000,编一个程序,求出满足此关系式的k的最大值。
int k = 1,s=0; while (s < 2000) { s = s + k * k; k++; } Console.WriteLine("k的值为{0}",k-2);
30.编写一个程序,要求用while循环语句,打印1到100的正整数,每行打印5个数,每列右对齐。
int i = 1; while (i <= 100) { Console.Write("{0,10:d1}",i); if (i % 5 == 0) Console.WriteLine(); i++;
31. Fibonacci序列的前二项是0和1,且每一个后继项是前二项的和。编一个程序,输出项值不大于100的Fibonacci序列。
int f1 = 0; int f2 = 1; int f3; while(f1<100) { f3=f1+f2; Console.Write("{0},",f1); f1=f2; f2=f3; }
32.编一个程序,输入a,b,c的值,求出一元二次方程axx+bx+c=0的二个实数根。计算二个实数根必须使用Math类中的Sqrt()方法,计算指定数的开方。计算二个实数根,可以用公式(-b+Math.Sqrt(bb-4ac))/(2a)和(-b-Math.Sqrt(bb-4ac))/(2*a)
int a, b, c; double x1, x2; Console.WriteLine("请输入a,b,c的值"); a = int.Parse(Console.ReadLine()); b = int.Parse(Console.ReadLine()); c = int.Parse(Console.ReadLine()); if (b * b - 4 * a * c >= 0) { x1 = (-b + Math.Sqrt(b * b - 4 * a * c)) / (2 * a); x2 = (-b - Math.Sqrt(b * b - 4 * a * c)) / (2 * a); Console.WriteLine("这个方程的两个根是{0},{1}", x1, x2); } else Console.WriteLine("这个方程没有解");
33.编一个程序,利用while循环语句,找出2到100之间的素数。
int i = 2, j; bool b; Console.WriteLine("2到100中的素数为:"); while (i <= 100) { b = true; j = 2; while (j <= i - 1) { if (i % j == 0) { b = false; break; } j++; } if (b==true) Console.Write("{0} ", i); i++; } Console.WriteLine();
34.编一个程序,用while循环语句实现下列功能:有一篮鸡蛋,不止一个,有人两个两个数,多余一个,三个三个数,多余一个,再四个四个地数,也多余一个,请问这篮鸡蛋至少有多少个。
int num=2; while(num<10000) { if (num % 2 == 1 && num % 3 == 1 && num % 4 == 1) { Console.Write("这篮鸡蛋至少有{0}个", num); break; } num++;
35.编一个程序,用for循环语句求出1到100之间的奇数之和。
int i,s=0; for (i = 1; i <= 100; i = i + 2) { s = s + i; } Console.WriteLine("1-100之间所有奇数的和为{0}",s);
36.编一个程序,利用二重for循环语句,打印出九九乘法口诀表。
int s; for (int i = 1; i <= 9; i++) { for(int j=1;j<=i;j++) { s=i*j; Console.Write("{0}*{1}={2} ",j,i,s); } Console.WriteLine();
37.编一个程序,定义一个有10个元素的数组,使用for循环语句,从键盘上输入10名同学的数学成绩,分别求出最高分和最低分,并且求出10名同学的数学平均成绩。
double [] math=new double [10]; Console.WriteLine("请输入10名学生的数学成绩"); for (int i = 0; i < math.Length; i++) { math[i] = double.Parse(Console.ReadLine()); } double max=math[0], min=math[0],ave,sum=0; for (int j = 0; j < math.Length; j++) { if (max < math[j]) max = math[j]; if (min > math[j]) min = math[j]; sum = sum + math[j]; } ave = sum / math.Length; Console.WriteLine("最高分为{0},最低分为{1},平均分为{2}",max,min,ave);
38.编一个程序,利用for循环语句,求出1!+2!+3!+…+10!的和。
int s = 0, jc = 1; for (int j = 1; j <= 10; j++) { jc = jc * j; s = s + jc; } Console.WriteLine("1!+2!+3!+4!+5!+6!+7!+8!+9!+10!的和为{0}", s);
39.编一个程序,用for循环语句求出1到100之间的奇数之和,以及偶数之和。
long i, j, m, s = 0; for (i = 1; i <= 10; i++) { m = 1; for (j = 1; j <= i; j++) m = m * j; s = s + m; } Console.WriteLine("1!+2!+3!+...+10!=" + s);
40.编一个程序,用for循环语句,从键盘输入10个实数,分别求出它们中的正数之和,以及负数之和。
int i; double sum1 = 0, sum2 = 0, x; for (i = 1; i <= 10; i++) { Console.Write("请输入一个实数:"); x = double.Parse(Console.ReadLine()); if (x > 0) sum1 += x; else sum2 += x; } Console.WriteLine("正数之和:{0},负数之和:{1}", sum1, sum2);
41.编一个程序,把一张1元的钞票换成5分,2分和1分的硬币,要求每种至少一枚,并且所换硬币数不超过30枚。请问,有哪几种换法?
int i, j, k; Console.WriteLine("一分:\t二分:\t五分:"); for (i = 1; i <= 100; i++) for (j = 1; j <= 50; j++) for (k = 1; k <= 20; k++) if (i + 2 * j + 5 * k == 100 && i + j + k <= 30) Console.WriteLine("{0}枚\t{1}枚\t{2}枚", i, j, k);
42.编一个程序,把一张面值100元的钞票换成5元,1元和5角面值的钞票,要求100元换以上的零钱100张,且要求每种不少于一张。请问,有哪几种换法?
int i, j, k;//设5元有i张,1元有j张,5角有k张 Console.WriteLine("5元:\t1元:\t5角:"); for (i = 1; i <= 20; i++) for (j = 1; j <= 100; j++) for (k = 1; k <= 100; k++) if (5 * i + j + (0.5 * k) == 100 && i + j + k == 100) Console.WriteLine("{0}\t{1}\t{2}", i, j, k);
43.编一个程序,解决百钱买百鸡问题。某人有100元钱,要买100只鸡。公鸡5元钱一只,母鸡3元钱一只,小鸡一元钱3只。问可买到公鸡,母鸡,小鸡各为多少只。问题分析:设公鸡x只,母鸡y只,小鸡z只,可以列出两个方程:
x+y+z=100 5x+3y+z/3=100 我们采用“穷举法”来解决此问题。 double z; for( double x=1;x<=20;x++) for (double y = 1; y <= 33; y++) { z = 100 - x - y; if (5 * x + 3 * y + z / 3 == 100) { Console.WriteLine("公鸡{0}只,母鸡{1}只,小鸡{2}只",x,y,z); } }
44.编一个程序,定义数组,用for循环语句,顺序输入10个实数,然后逆序输出这10个数。
int i; int[] a = new int[10]; for (i = 0; i < 10; i++) { Console.Write("请输入一个数:"); a[i] = int.Parse(Console.ReadLine()); } Console.WriteLine(); for (i = 9; i >= 0; i--) { Console.Write("{0} ", a[i]); } Console.WriteLine();
45.编一个程序,从键盘输入10个实数,存入一个数组,用冒泡法对这个数作升序排序。
int i, j, temp; const int n = 10; int[] SortArray = new int[n]; for (i = 0; i < n; i++) { Console.Write("\n请输入一个数:"); SortArray[i] = int.Parse(Console.ReadLine()); } Console.Write("\n等待排序的数据序列为:"); for (i = 0; i < n; i++) { Console.Write("{0} ", SortArray[i]); } for (i = n - 1; i >= 0; i--) { for (j = 0; j <= i - 1; j++) { if (SortArray[j] > SortArray[j + 1]) { temp = SortArray[j]; SortArray[j] = SortArray[j + 1]; SortArray[j + 1] = temp; } } } Console.Write("\n已经排序后的数据序列为:"); for (i = 0; i < n; i++) { Console.Write("{0} ", SortArray[i]); } Console.WriteLine();
46.编一个程序,定义一个有10个元素的一维数组a,在键盘上输入时没有大小次序,但是存入数组时要按由小到大的顺序存放。例如,输入第1个数1时,存入a[0];假如第2个数是5,则数存入a[1];假如第3个数是4,那么把前面输入的5向后面移动到a[2],把4插入到a[1]的位置上,这样使得每输入一个数,保持从小到大的顺序排列。
int i, j, temp, n = 10; int[] a = new int[n]; Console.WriteLine("请输入{0}个整数。", n); for (i = 0; i < n; i++) { Console.Write("请输入一个整数:"); a[i] = int.Parse(Console.ReadLine()); for (j = i; j >= 1; j--) { if (a[j - 1] > a[j]) { temp = a[j - 1]; a[j - 1] = a[j]; a[j] = temp; } else break; } } Console.Write("\n依次输出数组中的值:"); for (i = 0; i < n; i++) { Console.Write("{0} ", a[i]); } Console.WriteLine();
47.编一个程序,定义一个数组,用for语句输入10个实数存入这个数组,然后按逆序重新存放后再输出。
double[] a = new double[10]; double temp; for (int i = 0; i < 10; i++) { Console.Write("请输入一个实数:"); a[i] = double.Parse(Console.ReadLine()); } for (int i = 0; i < 10 / 2; i++) { temp = a[i]; a[i] = a[9 - i]; a[9 - i] = temp; } for (int i = 0; i < 10; i++) Console.Write(" {0}", a[i]); Console.WriteLine();
48.编一个程序,从键盘输入一个字符串,用foreach循环语句,统计其中大写字母的个数和小写字母的个数。
string s; int n1=0,n2=0; Console.WriteLine("请输入一个字符串"); s = Console.ReadLine(); foreach (char c in s) { if (c >= 'A' && c <= 'Z') n1++; else if (c >= 'a' && c <= 'z') n2++; else continue; } Console.WriteLine("大写字母有{0}个,小写字母有{1}个",n1,n2);
49. 编一个程序,定义一个字符数组和一个字符串变量,给这个字符串变量输入一个字符串,然后用foreach语句把这个字符串拷贝到字符数组里,最后输出字符数组。
string s; Console.WriteLine("请输入一个字符串"); s = Console.ReadLine(); char[] ch=new char [s.Length]; int n=0; foreach (char c in s) { ch[n] = c; n++; } foreach (char c in ch) { Console.WriteLine(c); }
50.输入一个字符串,将其中小写字母改成大写字母,把大写字母改成小写字母,其余字符不变,输出该字符串。
string s; Console.WriteLine("请输入一个字符串:"); s = Console.ReadLine(); foreach (char ch in s) if ('a' <= ch && ch <= 'z') Console.Write((char)((int)ch - 32)); else if ('A' <= ch && ch <= 'Z') Console.Write((char)((int)ch + 32)); else Console.Write(ch); Console.WriteLine();
这篇关于50道经典c#程序面试题——机试篇的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-12-06使用Microsoft.Extensions.AI在.NET中生成嵌入向量
- 2024-11-18微软研究:RAG系统的四个层次提升理解与回答能力
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#