算法---简单题(1)
数据结构过阵子再搞算了,先重新复习下java书上的算法,花了两天的空余时间把java书上的例题自己又写了次,不过这次是用C#,其实差不多,这次比上次更娴熟了,大部分的简单题目都能看到题就能写下了,还有些不太熟悉的地方,也是C#语法上的,比如数组的维度,长度,行长,列长,这些区别都是google出来的,看来基础还是不行呢~继续加油。因为都是简单题目,所以就写到一个类里面了。
using System;
public class Java2Practice
{
private readonly double PI=3.14;
public void digSum(int i)
{
int a,b,c,digsum;
a=i/100;
b=(i%100)/10;
c=i%10;
digsum=a+b+c;
Console.WriteLine(digsum);
}
public void Circle_area(float i)
{
double area;
area = PI*i*i;
Console.WriteLine(area);
}
public void IsLeap(float i)
{
bool isLeap=false;
isLeap=(i%4==0)||(i%400==0)&&(i%100!=0);
Console.WriteLine(i+" is a leap,"+isLeap);
}
public void max3if(int a,int b,int c)
{
int max,min;
if(a>b)
max = a;
else
max = b;
if(c>max)
max = c;
Console.Write("max = "+max+" ");
min = a<b?a:b;
min = c<min?c:min;
Console.WriteLine("min = "+min+" ");
}
public void max3(int a,int b,int c)
{
if(a>b)
if(b>c)
Console.WriteLine(a+" "+b+" "+c);
else
if(c>a)
Console.WriteLine(c+" "+a+" "+b);
else
Console.WriteLine(a+" "+c+" "+b);
else
if(c<a)
Console.WriteLine(b+" "+a+" "+c);
else
if(b<c)
Console.WriteLine(c+" "+b+" "+a);
else
Console.WriteLine(b+" "+c+" "+a);
}
public void sum_while(int i)
{
int sum=0,j=0;
while(j<=i)
{
sum+=j;
j++;
}
Console.WriteLine(sum);
}
public void fib_while(int i)
{
int a=0,b=1,count=0;
while(count<=i)
{
Console.Write(a+" "+b+" ");
a=a+b;
b=a+b;
count+=2;
}
Console.WriteLine();
}
public void sum_dowhile(int i)
{
int sum=0,j=0;
do
{
sum+=j;
j++;
}while(j<=i);
Console.WriteLine(sum);
}
//公式:gcd(a,b)=gcd(b,a%b)
public void gcd_dowhile(int a,int b)
{
int k=0;
do{
k=a%b;
a=b;
b=k;
}while(k!=0);
Console.WriteLine(a);
}
public void sum_for(int i)
{
int sum=0;
for(int j=0;j<=i;j++)
{
sum+=j;
}
Console.WriteLine(sum);
}
public void week2(int y,int m,int d)
{
int total,week,i;
bool leap = false;
leap = (y%4==0)||(y%400==0)&&(y%100!=0); week = 1;
total = y-1980+(y-1980+3)/4;
for(i=1;i<m;i++)
{
switch(i)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
total+=31;
break;
case 4:
case 6:
case 9:
case 11:
total+=30;
break;
case 2:
if(leap)
total+=29;
else
total+=28;
break;
}
}
total+=d;
week =(week+total)%7;
switch(week)
{
case 0:Console.Write("Sunday");
break;
case 1:Console.Write("Monday");
break;
case 2:Console.Write("Thuesday");
break;
case 3:Console.Write("Wednesday");
break;
case 4:Console.Write("Thursday");
break;
case 5:Console.Write("Firday");
break;
case 6:Console.Write("Saturday");
break;
}
}
public void mul99()
{
int n=9;
for(int i=0;i<=n;i++)
{
//Console.Write(i+" ");
for(int j=1;j<=i;j++)
Console.Write(i*j+"\t");
Console.WriteLine();
}
}
public void prime_while()
{
const int Max = 50;
int n=1,k=3;
do{
int j = (int)Math.Sqrt(k);
if(j%2==0)
j--;
bool isPrime=true;
while(j>2 && isPrime)
if(k%j==0)
isPrime=false;
else
j-=2;
if(isPrime)
{
n++;
Console.Write(k+" ");
}
k+=2;
}while(k<=Max);
}
public void fib_array()
{
int[] fib = new int[8];
fib[0]=0;
fib[1]=1;
for(int i=2;i<fib.Length;i++)
{
fib[i]=fib[i-1]+fib[i-2];
}
for(int i=0;i<fib.Length;i++)
Console.Write(fib[i]+" ");
}
public void prime_array()
{
const int Max = 50;
int[] prime = new int[15];
prime[0]=2;
int n=1,k=3,i=1;
do{
int j=0;
while(j<n && k%prime[j]!=0)
{
j++;
}
if(j==n)
{
prime[i]=k;
i++;
n++;
}
k+=2;
}while(k<=Max);
for(int m=0;m<prime.Length;m++)
Console.Write(prime[m]+" ");
}
public void helix_mat()
{
int n=4,i,j,k=0;
int[,] mat = new int[n,n];
for(i=0;i<(n+1)/2;i++)
{
for(j=i;j<=n-i-1;j++)
mat[i,j]=++k;
for(j=i+1;j<=n-i-1;j++)
mat[j,n-i-1]=++k;
for(j=n-i-2;j>=i;j--)
mat[n-i-1,j]=++k;
for(j=n-i-2;j>=i+1;j--)
mat[j,i]=++k;
}
output(mat);
}
public void Magic()
{
int n=3;
int[,] mat = new int[n,n];
int i=0,j=n/2;
for(int k=1;k<=n*n;k++)
{
mat[i,j]=k;
if(k%n==0)
//i+=1;
i=(i+1)%n;
else
{
i=(i-1+n)%n;
j=(j+1)%n;
}
}
output(mat);
}
public void YangHui()
{
const int n = 5;
int[][] mat = new int[n][];
int i,j;
for(i=0;i<n;i++)
{
mat[i]=new int[i+1];
mat[i][0]=1;
mat[i][i]=1;
for(j=1;j<i;j++)
mat[i][j]=mat[i-1][j-1]+mat[i-1][j];
}
for(i=0;i<mat.GetLength(0);i++)
{
for(j=0;j<n-i;j++)
Console.Write(" ");
for(j=0;j<mat[i].Length;j++)
Console.Write(" "+mat[i][j]);
Console.WriteLine();
}
/*
Console.WriteLine(mat.GetLength(0));
for(int k=0;k<mat.Length;k++)
Console.WriteLine(mat[k].Length);
*/
}
public void Rotor(string rotor)
{
rotor = rotor.ToLower();
int len = rotor.Length;
int i,j;
bool isRotor = true;
for(i=0,j=len-1;i<(len+1)/2;i++,j--)
{
if(rotor[i]!=rotor[j])
isRotor=false;
}
Console.Write(isRotor);
}
public void output(int[,] mat)
{
// Console.Write(mat.Length); 16
// Console.Write(mat.Rank);
for(int i=0;i<mat.GetLength(0);i++)
{
for(int j=0;j<mat.GetLength(1);j++)
Console.Write(mat[i,j]+"\t");
Console.WriteLine();
}
}
public static void Main()
{
Java2Practice j2p = new Java2Practice();
Console.Write("求一个3位数的数字和:");
j2p.digSum(123);
Console.Write("求圆的面积:");
j2p.Circle_area(2.5f);
Console.Write("判断是否闰年:");
j2p.IsLeap(2009);
Console.Write("判断3个数的最大数:");
j2p.max3if(3,5,2);
Console.Write("按从大到小排列3个数:");
j2p.max3(3,5,2);
Console.Write("while循环求和:");
j2p.sum_while(10);
Console.Write("输出fibonacci数列");
j2p.fib_while(10);
Console.Write("do-while循环求和:");
j2p.sum_dowhile(10);
Console.Write("辗转相除法求最大公因数:");
j2p.gcd_dowhile(12,18);
Console.Write("for循环求和:");
j2p.sum_for(10);
Console.Write("求某一天是星期几:");
j2p.week2(2002,6,8);
Console.Write("99乘法表:");
j2p.mul99();
Console.Write("求50以内的素数:");
j2p.prime_while();
Console.WriteLine();
Console.Write("用一维数组求fibonacci数列:");
j2p.fib_array();
Console.WriteLine();
Console.Write("用筛选法求50以内的素数:");
j2p.prime_array();
Console.WriteLine();
Console.WriteLine("显示螺旋方阵:");
j2p.helix_mat();
Console.WriteLine("显示幻方:");
j2p.Magic();
Console.WriteLine("显示杨辉三角:");
j2p.YangHui();
Console.WriteLine();
Console.Write("判断是否回文串:");
j2p.Rotor("rottor");
}
}
都是用得最常用的思路,以后再次复习的时候再想着怎么优化~没办法,现在水平低=。=囧
作 者:doku
出 处:http://www.cnblogs.com/kulong995/
关于作者:喜欢编程,喜欢美食,专注于.NET项目开发。
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是作者坚持原创和持续写作的最大动力!


浙公网安备 33010602011771号