(1)
//给一个百分制成绩,要求输出等级’A’、’B’、’C’、’D’、’E’。90分以上为’A’80~90分为’B’,70~79分为’C’,60分以下为’D’。
static void getGrade()
{
Console.WriteLine("put into a score:");
int score = Convert.ToInt32(Console.ReadLine());
if (score < 0 && score > 100)
{
Console.WriteLine("Score Error! Plase Again!");
}
//如果case后面有语句,break不能省略
//break可以直接跳出switch语句
//switch语句可以没有default语句
//default位置是任意的
//case的位置也可以是任意的
switch (score / 10)
{
case 10:
Console.WriteLine("full mark");
break;
case 9:
Console.WriteLine("A");
break;
case 8:
Console.WriteLine("B");
break;
case 7:
Console.WriteLine("C");
break;
case 6:
Console.WriteLine("D");
break;
default:
Console.WriteLine("fail");
break;
}
}
(2)
//求1+2!+3!+4!+…+20!...+n!
//普通方法
static void getSumFactorial()
{
Console.WriteLine("put into a integer,get its factorial");
int num = Convert.ToInt32(Console.ReadLine());
int sum = 0;
for (int i = 1; i <= num; i++)
{
int product = 1;
for (int j = 1; j <= i; j++)
{
product *= j;
}
sum += product;
}
Console.WriteLine("result ={0}", sum);
}
//用递归方法求n!
static void getSumFactorial1()
{
Console.WriteLine("put into a integer,get its factorial");
int num = Convert.ToInt32(Console.ReadLine());
int sum = 0;
for (int i = 1; i <= num; i++)
{
int product = factorial(i);
sum += product;
}
Console.WriteLine("result ={0}", sum);
}
(3)
//求S=a+aa+aaa+...+aaa...aa之值,其中a是一个数字,n表示a的位数
//法1
static void getNSum1()
{
int sum = 0, a = 0, an = 0, count = 0, n;
Console.Write("请输入一个数字:");
a = Convert.ToInt32(Console.ReadLine());
Console.Write("请输入位数:");
n = Convert.ToInt32(Console.ReadLine());
while (count < n)
{
an += a;
Console.WriteLine("an = {0}", an);
a = a * 10;
Console.WriteLine("a = {0}", a);
sum += an;
Console.WriteLine("sum = {0}", sum);
++count;
Console.WriteLine("count = {0}", count);
}
Console.WriteLine(sum);
Console.ReadKey();
}
//法2
static void getNSum()
{
Console.WriteLine("put into the integer ,weishu");
int integer = Convert.ToInt32(Console.ReadLine());
int weishu = Convert.ToInt32(Console.ReadLine());
int sum = 0;
for (int i = 1; i <= weishu; i++)
{
sum += integer * getTheNum(i);
}
Console.WriteLine(sum);
}
static int getTheNum(int value)
{
int sum = 0;
Console.WriteLine("value={0}", value);
for (int i = 1; i <= value; i++)
{
int product = 1;
for (int j = 1; j <= i; j++)
{
if (j == 1)
{
product = 1;
}
else
{
product *= 10;
}
}
sum += product;
}
Console.WriteLine(sum + "------");
return sum;
}
(4)
//输出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
static void getWaterFlowerNum(){
//“水仙花数”是一个 各位数字立方之和等于该数本身。
for (int i = 101; i <= 999; i++)
{
//得到百位上的数字
int a = i / 100;
//得到十位上的数字
int b = (i - a * 100) / 10;
//得到个位数字
int c = i % 10;
//如果各位数字的立方和等于该数本身,则打印该数
if (a * a * a + b * b * b + c * c * c == i) {
Console.WriteLine ("waterflower: " + i);
}
}
}
(5)
//编程将所有“水仙花数”打印出来,并打印其总个数。“水仙花数”是一个 各个位立方之和等于该整数的三位数。
static void getaterFlower()
{
int count = 0;
for (int i = 100; i < 1000; i++)
{
int n100 = i / 100;
int n10 = i / 10 % 10;
int n = i % 10;
if (i == n100 * n100 * n100 + n10 * n10 * n10 + n * n * n)
{
Console.WriteLine( i + "是水仙花数 ");
count++;
}
}
Console.WriteLine("水仙花总数为:"+ count);
}
(6)
//一个整数,它加上 100 后是一个完全平方数,再加上 168 又是一个完全平方数,请问该数是多少?
static void getANum()
{
int x = 0, y = 0;
for (int i = 0;; i ++)
{
x =(int) Math.Sqrt(i + 100);
Console.WriteLine("x = "+x);
y = (int)Math.Sqrt(i + 100 + 168);
Console.WriteLine("x = "+y);
if (x * x == i + 100 && y * y == i + 100 + 168)
{
Console.WriteLine("the Num is:{0}",i);
break;
}
}
}
(7)
//有一分数序列:2/1,3/2,5/3,8/5,….,21/13,……前二十项之和。
(8)
//给定某年某月某日,输出其为这一年的第几天。
//法1
static void getTheDay1()
{
Console.WriteLine("Date:20080808:");
string str = Console.ReadLine();
int year = Convert.ToInt32(str.Substring(0,4));
int month = Convert.ToInt32(str.Substring(4,2));
int day = Convert.ToInt32(str.Substring(6,2));
int sum = 0;
switch (month)
{
case 1: sum = 0; break;
case 2: sum = 31; break;
case 3: sum = 59; break;
case 4: sum = 90; break;
case 5: sum = 120; break;
case 6: sum = 151; break;
case 7: sum = 181; break;
case 8: sum = 212; break;
case 9: sum = 243; break;
case 10: sum = 273; break;
case 11: sum = 304; break;
case 12: sum = 334; break;
default: Console.WriteLine("error"); break;
}
bool isleapYear = isLeapYear(year);
if (isleapYear && month > 2)
{
sum = sum + 1 + day;
}
else
{
sum = sum + 1;
}
Console.WriteLine("day num:" + sum);
}
static void getTheDay2()
{
int[] daysInMonth = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
Console.WriteLine("Date:20080808:");
string str = Console.ReadLine();
int year = Convert.ToInt32(str.Substring(0,4));
int month = Convert.ToInt32(str.Substring(4,2));
int day = Convert.ToInt32(str.Substring(6,2));
int sum = 0;
for(int i = 0 ; i < month; i ++)
{
sum += daysInMonth[i];
}
bool isleapYear = isLeapYear(year);
if (isleapYear && month > 2)
{
sum = sum + 1 + day;
}
else
{
sum = sum + 1;
}
Console.WriteLine("day num:" + sum);
}
//法2
static bool isLeapYear(int year)
{
if (year % 400 == 0 || (year % 4 == 0 && year % 100 == 0)) {
Console.WriteLine ("{0}year is LeapYear", year);
return true;
}
else
{
Console.WriteLine ("{0}year is not LeapYear", year);
return false;
}
}
(9)
//找出整型数组中最大和最小值及其所在位置i
//法1:
static void getMaxMinAndIndex()
{
int[] a={3,5,8,13,47,9};
int[] b ={-23,45,14,65};
//分别定义两个变量用来存放两个数组的最大值,初始值分别为两个数组中的第一个元素
int max1 = a[0];
int max2 = b[0];
//定义两个变量用来存放两个数组的最小值,初始值分别为两个数组中的第一个元素
int min1 = a [0];
int min2 = b [0];
//定义变量用来存储数组a中最大值和最小值的位置
int indexMax1 = 0;
int indexMin1 = 0;
//定义两个变量用来存放数组b中最大值和最小值的位置
int indexMax2 = 0;
int indexMin2 = 0;
//用最大值和最小值的初值与数组的其它元素进行比较,以得到最大值和最小值
for (int i = 1; i < a.Length; i++)
{
//与数组其它元素进行比较,得到最大值
if (max1 < a [i]) {
max1 = a [i];
//记录最大值所在数组中的下标
indexMax1 = i;
}
//最小值分别与数组里面的每个值进行比较,得到最小值
if (min1 > a [i]) {
min1 = a [i];
//记录最小值所在数组中的下标
indexMin1 = i;
}
}
//由于数组的下标是从0开始的,所以输出进下标值要加1
Console.WriteLine ("数组a的最大值是:{0},位置是:{1},最小值是{2},位置是{3}",max1,indexMax1+1,min1,indexMin1+1);
for (int j = 1; j < b.Length; j++)
{
//与数组其它元素进行比较,得到最大值
if (max2 < b [j]) {
max2 = b [j];
indexMax2 = j;
}
//最小值分别与数组里面的每个值进行比较,得到最小值
if (min2 > b [j]) {
min2 = b [j];
indexMin2 = j;
}
}
Console.WriteLine ("数组b的最大值是:{0},位置是:{1},最小值是{2},位置是{3}",max2,indexMax2+1,min2,indexMin2+1);
}
//法2:先排序
static void swapSort()
{
int [] arr = putintoArry();
int[] arr1 = new int[arr.Length];
for (int i = 0; i < arr.Length; i++)
{
arr1[i] = arr[i];
}
//交换排序
for (int i = 0; i < arr.Length - 1; i++)
{
for (int j = i + 1; j < arr.Length; j++)
{
if (arr[i] > arr[j])
{
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp; }
}
}
printArry(arr);
for (int i = 0; i < arr1.Length; i++)
{
if (arr[0] == arr1[i])
{
Console.WriteLine("数组最小的值为:" + arr[0] + " 在原数组下标为:"+i );
}
if(arr[arr.Length - 1] == arr1[i])
{
Console.WriteLine("数组最大的值为:"+arr[arr.Length - 1] + " 在原数组下标为:" + i);
}
}
}
//输入数组
static int[] putintoArry()
{
Console.WriteLine("输入所要排序的个数:");
int num = Convert.ToInt32(Console.ReadLine());
int[] arr = new int[num];
Console.WriteLine("输入所要排序的数据:");
for (int i = 0; i < num; i++)
{
arr[i] = Convert.ToInt32(Console.ReadLine());
}
return arr;
}
//打印数组
static void printArry(int[] arry)
{
Console.WriteLine("排序后的顺序:");
for (int i = 0; i < arry.Length; i ++)
{
Console.Write(arry[i]+" ");
}
}
//交换排序优化
static void swapOptimizeSort()
{
Console.WriteLine("put into integers:");
int num = Convert.ToInt32(Console.ReadLine());
int[] arr=new int[num];
for (int i = 0; i < num; i++)
{
arr[i] = Convert.ToInt32(Console.ReadLine());
}
int now = 0;
for (int i = 0; i < arr.Length - 1; i++)
{
now = i;
for (int j = i ; j < arr.Length; j++)
{
if (arr[j] < arr[now])
{
now = j;
}
}
int temp = arr[now];
arr[now] = arr[i];
arr[i] = temp;
}
printArry(arr);
}
//冒泡排序
static void bubbleSort()
{
Console.WriteLine("put into integers:");
int num = Convert.ToInt32(Console.ReadLine());
int[] arr=new int[num];
for (int i = 0; i < num; i++)
{
arr[i] = Convert.ToInt32(Console.ReadLine());
}
for (int i = 1; i < arr.Length - 1; i++)
{
for(int j = 0; j < arr.Length -i; j ++)
{
if (arr[j] > arr[j + 1])
{
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
printArry(arr);
}