//取对数
private static int Function(int x)
{
if (x % 2 != 0)//不是偶数
{
return -1;
}
int r = 0;//结果
int chushu = x;
int yushu = chushu % 2;
while (yushu == 0)
{
r++;
chushu = chushu / 2;
yushu = chushu % 2;
}
return r;
}
/************************************************************************/
/* 五、爱因斯坦出了一道这样的数学题:有一条长阶梯,若每步跨2阶,则最后剩一阶,
* 若每步跨3 阶,则最后剩2阶,若每步跨5阶,则最后剩4阶,若每步跨6阶则最后剩5阶。
* 只有每次跨7阶,最后才正好一阶不剩。请问这条阶梯共有多少阶?
/************************************************************************/
private static int Function3()
{
int x = 0;
for (; x < 1000; x++)
{
if (x % 2 == 1 && x % 3 == 2 && x % 5 == 4 && x % 6 == 5 && x % 7 == 0)
{
break;
}
}
return x;
}
/************************************************************************/
/* 四、张三、李四、王五、刘六的年龄成一等差数列,他们四人的年龄相加是26,
* 相乘是880,输出以他们的年龄为前4项的等差数列的前20项。
* */
/************************************************************************/
private static void Function4()
{
int count = 0;
for (int i=2;i<100;i=i+3)
{
count++;
Console.Write("{0}\t",i);
if (count>=20)
{
break;
}
}
}
/************************************************************************/
/* 题目:已知n个整数,将的奇数放在前,偶数放在后,奇数部分与偶数部分都按升序排列输出。
* */
/************************************************************************/
int[] A = { 3, 2, 1, 4, 5, 6, 7, 3, 2, 5, 3, 2, 1, 5, 6, 3, 2, 4, 2, 7, 4, 2, 43, 1, 4, 5 };
Function5(A);
private static void Function5(int[] A)
{
int n = A.Length;
int[] B=new int[n];
B[0] = A[0];
for (int i = 1; i < n;i++ )
{
InsertJiOu(A[i], B);
}
}
private static void InsertJiOu(int p, int[] B)
{
if (p%2==0)
{
int i = 0;
while (0 != B[i] && B[i]%2==1)
{
i++;
}
B[i] = p;
}
else
{
int i = 0;
while (0 != B[i] && B[i] % 2 == 1)
{
i++;
}
i--;
int j = i ;
for (; i < B.Length; i++)
{
B[i] = B[i - 1];
}
B[j] = p;
}
}
/************************************************************************/
/* 有一有序的数组,要插入一个数,要求排序不乱,且要用二分检索的方法插入数组里
/************************************************************************/
int[] A={3,4,6,7,8,13,25,36,47,68,89,0};
int b=33;
DoInsert(A,b);
for (int i = 0; i < A.Length;i++ )
{
Console.Write("{0}\t", A[i]);
}
private static void DoInsert(int[] A, int b)
{
int left = 0;
int right = A.Length - 2;
int middle = (left + right) / 2;
if (A[middle]>=b)
{
while (A[middle] >= b)
{
right = middle;
middle = (left + right) / 2;
}
}
else
{
while (A[middle] < b)
{
left = middle;
middle = (left + right) / 2;
}
}
for (int i = A.Length-1; i >= middle;i-- )
{
A[i] = A[i - 1];
}
A[middle] = b;
}
/*
* 第二题:已经有一个包括了多行文本的字符串。
* 请写一个函数,能够输出字符串中最长的行和最短的行。
* 如果最长和最短的不止一行,请输出最长和最短的多行。
* 请写出性能比较好的代码。
* Fun(string lines)
* {
* 1、拆分成多行;
* 2、循环为每行计算长度,记录最大和最小行的位置;
* 3、打印输出
* }
* */
private static void Function8()
{
//包括了多行文本的字符串 应该是string[] ,而不是string
string[] lines ={ "第二题:已经有一个包括了多行文本的字符串。",
"请写一个函数,能够输出字符串中最长的行和最短的行。",
"如果最长和最短的不止一行,请输出最长和最短的多行。",
"请写出性能比较好的代码。"};
Fun2(lines);
}
private static void Fun2(string[] lines)
{
int maxIndex = int.MinValue;//长度最长的行的长度
int minIndex = int.MaxValue;//长度最短的行的长度
//第一次循环,找出最大的长度和最小的长度
for (int i = 0; i < lines.Length;i++ )
{
int len=lines[i].Length;
if (len>maxIndex)
{
maxIndex = len;
}
if (len<minIndex)
{
minIndex = len;
}
}
//第二次循环,打印符合要求的字符串
for (int i = 0; i < lines.Length; i++)
{
string s=lines[i];
int len = s.Length;
if (len == maxIndex)
{
Console.WriteLine("最长的行:{0}",s);
}
if (len == minIndex)
{
Console.WriteLine("最短的行:{0}", s);
}
}
}