一:求1000以内所有的完数,并输出所有因子(完数:一个数恰好等于它的所有因子之和)
因子和因数:因子不包括数本身,因数包括数本身
using System;
class MainClass
{
public static void Main(string[] args)
{
for (int i = 1; i <= 1000; i++)
{
int sum = 0;
string str = "";
for (int j = 1; j < i; j++)
{
if (i % j == 0)
{
sum += j;
str += j + "+";
}
}
if (sum == i)
{
str = str.TrimEnd('+');
Console.WriteLine($"{i}是完数,因子是{str}");
}
}
}
}
二:一只猴子吃桃子,第一天吃掉桃子总数的一半多一个,第二天又吃掉剩下桃子数量的一半多一个,以后每天吃掉前一天剩下桃子数量的一半多一个,到第n天的时候,只剩下一个桃子,请问他第一天吃的时候一共有多少个桃子。用户输入n的值,计算出第一天吃的时候桃子总数是多少
using System;
namespace Application
{
class MainClass
{
public static void Main(string[] args)
{
int count = 1;
int num = int.Parse(Console.ReadLine());
for (int i = num - 1; i >= 0; i--)
{
count = (count + 1) * 2;
}
Console.WriteLine("总数是:" + count);
}
}
}
三:一组已经从小到大排序好的整数数组,用户输入一个数字,插入到数组中,使新的数组仍然有序
——解法1
using System;
class MainClass
{
static void Main(string[] args)
{
int[] rawArray = { 1, 2, 4, 7, 10 };
int[] newArray = new int[rawArray.Length + 1];
int myNum = int.Parse(Console.ReadLine());
int insertIndex = 0;
for (int i = 0; i < rawArray.Length; i++)
{
if (myNum > rawArray[i])
{
insertIndex = i + 1;
}
}
bool isInsert = false;
for (int i = 0; i < newArray.Length; i++)
{
if (isInsert == false)
{
if (i == insertIndex)
{
newArray[i] = myNum;
isInsert = true;
}
else
{
newArray[i] = rawArray[i];
}
}
else
{
newArray[i] = rawArray[i - 1];
}
}
foreach (int item in newArray)
{
Console.Write(item + " ");
}
}
}
——解法2
using System;
class MainClass
{
static void Main(string[] args)
{
int[] rawArray = { 1, 2, 4, 7, 10 };
int[] newArray = new int[rawArray.Length + 1];
int myNum = int.Parse(Console.ReadLine());
int rawIndex = 0;
bool isInsert = false;
for (int i = 0; i < newArray.Length; i++)
{
if (i >= rawArray.Length && isInsert == false)
{
newArray[i] = myNum;
isInsert = true;
break;
}
if (myNum < rawArray[rawIndex] && isInsert == false)
{
newArray[i] = myNum;
isInsert = true;
}
else
{
newArray[i] = rawArray[rawIndex++];
}
}
foreach (int item in newArray)
{
Console.Write(item + " ");
}
}
}
四:实现斐波那契数列(1,1,2,3,5,8...)
——函数的递归实现
using System;
class Program
{
static void Main(string[] args)
{
Console.WriteLine(F(6));
}
static int F(int n)
{
if (n <= 0)
{
return 0;
}
else if (n <= 2)
{
return 1;
}
return F(n - 1) + F(n - 2);
}
}
——普通函数的实现
using System;
class Program
{
static void Main(string[] args)
{
int res = Fun(4);
Console.WriteLine(res);
}
static int Fun(int n)
{
int a = 1;
int b = 1;
for (int i = 3; i <= n; i++)
{
b += a;
a = b - a;
}
return b;
}
}
五:一个小球从100m的高度自由落下,每次落地后反弹回原高度的一半,求它在第十次落地时,共经过多少米?第十次反弹多高?
using System;
class MainClass
{
static void Main(string[] args)
{
float dis = 0;
float height = 100;
for (int i = 0; i < 10; i++)
{
if (i == 0)
{
dis += height;
}
else
{
dis += height * 2;
}
height /= 2;
}
Console.WriteLine($"第十次落地时共经过{dis}米,反弹高度为{height / 2}米");
}
}
六:求1!+2!+3!+4!+5!
——定义函数去完成每个数字的阶乘
using System;
class Program
{
static void Main(string[] args)
{
int sum = 0;
for (int i = 1; i <= 5; i++)
{
sum += Fun(i);
}
Console.WriteLine(sum);
}
static int Fun(int n)
{
if (n == 1)
return 1;
return n * Fun(n - 1);
}
}
——在Main函数中完成所有操作
using System;
class Program
{
static void Main(string[] args)
{
long sum = 1;
for (int i = 1; i <= 20; i++)
{
long num = 1;
for (int j = i; j >= 1; j--)
{
num *= j;
}
sum += num;
}
Console.WriteLine(sum);
}
}
七:对一个float类型的小数进行四舍五入
——未优化版
using System;
class MainClass
{
static void Main(string[] args)
{
float num = float.Parse(Console.ReadLine());
int numInteger = (int)num;
float numFloat = num - numInteger;
int res = 0;
if (numFloat >= 0.5f)
{
res = ++numInteger;
}
else
{
res = numInteger;
}
Console.WriteLine(res);
}
}
——优化版
using System;
class Program
{
static void Main(string[] args)
{
float num = float.Parse(Console.ReadLine());
float res = (int)(num + 0.5f);
Console.WriteLine(res);
}
}
八:3个可乐瓶可以换一瓶可乐,现在有364瓶可乐。问一共可以喝多少瓶可乐?剩下几个空瓶?
——解法1
using System;
class MainClass
{
static void Main(string[] args)
{
int drinkCount = 0;
int totalCount = 364;
for (int i = 0; i < totalCount; i++)
{
drinkCount++;
if (drinkCount % 3 == 0)
{
totalCount++;
}
}
int remain = totalCount % 3;
Console.WriteLine($"一共可以喝{totalCount}瓶可乐,剩下{remain}个空瓶");
}
}
——解法2
using System;
class MainClass
{
public static void Main(string[] args)
{
int totalCount = 364;
int emptyCount = totalCount;
while (emptyCount >= 3)
{
totalCount += emptyCount / 3;
emptyCount = emptyCount / 3 + emptyCount % 3;
}
Console.WriteLine($"一共可以喝{totalCount}瓶可乐,剩下{emptyCount}个空瓶");
}
}
九:输入一个字符串,字母加密(a-d A-D x-a X-A),其他字符原样输出
using System;
class MainClass
{
static void Main(string[] args)
{
char[] charArray = Console.ReadLine().ToCharArray();
string str = "";
for (int i = 0; i < charArray.Length; i++)
{
if (charArray[i] >= 'a' && charArray[i] <= 'z')
{
if (charArray[i] >= 'x')
{
char temp = (char)(charArray[i] - 'x' + 'a');
str += temp;
}
else
{
str += (char)(charArray[i] + 3);
}
continue;
}
if (charArray[i] >= 'A' && charArray[i] <= 'Z')
{
if (charArray[i] >= 'X')
{
char temp = (char)(charArray[i] - 'X' + 'A');
str += temp;
}
else
{
str += (char)(charArray[i] + 3);
}
continue;
}
}
Console.WriteLine("加密后的密码为:" + str);
}
}
十:控制台输出九九乘法表
using System;
class MainClass
{
public static void Main(string[] args)
{
for (int i = 1; i <= 9; i++)
{
for (int j = 1; j <= i; j++)
{
Console.Write($"{j}*{i}={i * j} ");
}
Console.WriteLine();
}
}
}
十一:输出1000以内的素数
素数(质数):大于1的自然数,除了1和本身外,不再有其他的因数
using System;
class MainClass
{
public static void Main(string[] args)
{
for (int i = 2; i <= 1000; i++)
{
bool right = true;
//这里的i/2进行了算法优化
for (int j = 2; j < i / 2; j++)
{
if (i % j == 0)
{
right = false;
break;
}
}
if (right)
{
Console.WriteLine(i + "是素数");
}
}
}
}
十二:控制台随机一个1-100的数字,让用户猜数字,如果输入的数字比随机数大或者小就提示用户并且继续输入,直到输入正确的数字后退出程序
using System;
class MainClass
{
static void Main(string[] args)
{
Random r = new Random();
int n = r.Next(1, 101);
Console.WriteLine("please input a num");
while (true)
{
int num = int.Parse(Console.ReadLine());
if (num > n)
{
Console.WriteLine("输入的数字大了");
}
else if (num < n)
{
Console.WriteLine("输入的数字小了");
}
else
{
Console.WriteLine("猜对了!");
break;
}
}
}
}
十三:输出100-9999之间的水仙花数(水仙花数:153=1*1*1+5*5*5+3*3*3)
using System;
class Program
{
static void Main(string[] args)
{
for (int i = 100; i <= 9999; i++)
{
double sum = 0;
char[] charArray = i.ToString().ToCharArray();
for (int j = 0; j < charArray.Length; j++)
{
charArray[j] -= '0';
sum += Math.Pow(charArray[j], 3);
}
if (sum == i)
{
Console.WriteLine(i + "是水仙花数");
}
}
}
}
十四:输入两个数,求最大公约数和最小公倍数
using System;
class Program
{
static void Main(string[] args)
{
Console.WriteLine("请输入两个数");
int n1 = int.Parse(Console.ReadLine());
int n2 = int.Parse(Console.ReadLine());
int res1 = 0;
for (int i = 1; i <= n1 && i <= n2; i++)
{
if (n1 % i == 0 && n2 % i == 0)
{
res1 = i;
}
}
int res2 = 0;
if (n1 > n2)
{
res2 = n1;
}
else
{
res2 = n2;
}
while (true)
{
if (res2 % n1 == 0 && res2 % n2 == 0)
{
break;
}
res2++;
}
Console.WriteLine($"最大公约数是{res1},最小公倍数是{res2}");
}
}
十五:初始化一个10个元素的数组,赋值为0-9,乱序后,输出
using System;
class Program
{
static void Main(string[] args)
{
int[] num = new int[10];
for (int i = 0; i < num.Length; i++)
{
num[i] = i;
}
Console.WriteLine("正序数组————");
foreach (int item in num)
{
Console.Write(item + " ");
}
Console.WriteLine();
Random r = new Random();
for (int i = 0; i < num.Length; i++)
{
int newIndex = r.Next(0, 10);
int temp = num[i];
num[i] = num[newIndex];
num[newIndex] = temp;
}
Console.WriteLine("乱序数组————");
foreach (int item in num)
{
Console.Write(item + " ");
}
}
}
十六:先用随机数初始化一个数组(20个元素),之后将奇数放左边,偶数放右边
using System;
using System.Collections.Generic;
class Program
{
static void Main(string[] args)
{
int[] num = new int[20];
Random r = new Random();
for (int i = 0; i < num.Length; i++)
{
int n = r.Next(1, 21);
num[i] = n;
}
Console.WriteLine("排序前————");
foreach (int item in num)
{
Console.Write(item + " ");
}
List<int> oddList = new List<int>();
List<int> evenList = new List<int>();
for (int i = 0; i < num.Length; i++)
{
if (num[i] % 2 == 0)
{
evenList.Add(num[i]);
}
else
{
oddList.Add(num[i]);
}
}
int[] newNum = new int[20];
int oddIndex = 0;
int evenIndex = 0;
for (int i = 0; i < newNum.Length; i++)
{
if (oddIndex < oddList.Count)
{
newNum[i] = oddList[oddIndex++];
}
else
{
newNum[i] = evenList[evenIndex++];
}
}
Console.WriteLine("排序后————");
foreach (int item in newNum)
{
Console.Write(item + " ");
}
}
}
十七:输出以下数组
1 1 1 1 1 1 1 1 1
1 2 2 2 2 2 2 2 1
1 2 3 3 3 3 3 2 1
1 2 3 4 4 4 3 2 1
1 2 3 4 5 4 3 2 1
1 2 3 4 4 4 3 2 1
1 2 3 3 3 3 3 2 1
1 2 2 2 2 2 2 2 1
1 1 1 1 1 1 1 1 1
class Program
{
static void Main(string[] args)
{
for (int i = 1; i <= 9; i++)
{
for (int j = 1; j <= 9; j++)
{
if (i == 1 || j == 1 || i == 9 || j == 9)
{
Console.Write("1 ");
}
else if (i == 2 || j == 2 || i == 8 || j == 8)
{
Console.Write("2 ");
}
else if (i == 3 || j == 3 || i == 7 || j == 7)
{
Console.Write("3 ");
}
else if (i == 4 || j == 4 || i == 6 || j == 6)
{
Console.Write("4 ");
}
else if (i == 5 || j == 5)
{
Console.Write("5 ");
}
}
Console.WriteLine();
}
}
}
十八:输出杨辉三角
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
using System;
class Program
{
static void Main(string[] args)
{
Console.Write("输入杨辉三角长度:");
int length = Convert.ToInt32(Console.ReadLine());//指定杨辉三角形的长度
int[][] a = new int[length][];
for (int i = 0; i < a.Length; i++)
a[i] = new int[i + 1];
for (int j = 0; j < a.Length; j++)
{
a[j][0] = 1;
a[j][j] = 1;
for (int m = 1; m < a[j].Length - 1; m++)
a[j][m] = a[j - 1][m - 1] + a[j - 1][m];
}
for (int i = 0; i < a.Length; i++)
{
for (int k = 0; k < length - i; k++)
Console.Write(" ");
for (int j = 0; j < a[i].Length; j++)
Console.Write("{0} ", a[i][j]);
Console.Write("\n");
}
}
}
十九:输入一个十进制数,转换为二进制数输出
using System;
class Program
{
static void Main(string[] args)
{
Console.WriteLine("请输入一个数字");
int num = int.Parse(Console.ReadLine());
int rawNum = num;
string str = "";
while (num != 0)
{
str += num % 2;
num /= 2;
}
string res = "";
for (int i = str.Length - 1; i >= 0; i--)
{
res += str[i];
}
Console.WriteLine($"{rawNum}的二进制数为:{res}");
}
}