、某百货公司为了促销,采用购物打折的办法。
(1) 在1000元以上者,按九五折优惠;
(2) 在2000元以上者,按九折优惠;
(3) 在3000元以上者,按八五折优惠;
(4) 在5000元以上者,按八折优惠。
编写程序,输入购物款数,计算并输出优惠价。(要求用switch语句编写)
2、同构数”是指这样的整数:它恰好出现在其平方数的右端。如:376*376=141376。请找出10000以内的全部“同构数”。
3、将一张一元纸币兑换成一分、二分和五分的硬币,假定每种至少一枚,计算共有多少种兑换法并打印出各种兑换法。
4、键盘输入正整数n,求出n 与其反序数x 之和并输出。例如,输入2038,输出应为:
n + x = 2038 + 8302 = 10340。
5、编写程序,计算s=1+(1+2)+(1+2+3)+…+(1+2+3+…+n)的值。
6、josephus问题,一群孩子围成一圈,任意假定一个数m从第一个小孩起顺时针方向数,每数到第m个小孩时,该小孩离开。小孩不断离开,圈子不断缩小。最后,剩下的一个小孩便是获胜者。究竟获胜的是第几个小孩。
参考答案:(采用的是穷举法 )
1:
public void Swith_Example()
{
Console.WriteLine("请输入购物款数:/n");
int money = Convert.ToInt32(Console.ReadLine());
switch (money/1000)
{
case 1:
money = Convert.ToInt32(money * 0.95);
break;
case 2:
money = Convert.ToInt32(money * 0.9);
break;
case 3:
money = Convert.ToInt32(money * 0.85);
break;
case 4:
money = Convert.ToInt32(money * 0.8);
break;
default:
break;
}
Console.WriteLine("优惠价后的价格为" + money.ToString());
}
2:
public static void Print()
{
int temp;
for (int i = 1; i < 10000; i++)
{
temp = i*i;
if (i < 10 && i == i * i % 10)
Console.WriteLine(i);
if(i<100 && i ==i*i%100)
Console.WriteLine(i);
if(i<1000 && i ==i*i%1000)
Console.WriteLine(i);
else if(i==i*i%10000)
Console.WriteLine(i);
}
}
public static void Print()
{
for(int i=1;i<20;i++)
for (int j = 1; j < 50; j++)
for (int k = 1; k < 100; k++)
{
if (i * 5 + j * 2 + k == 100)
Console.WriteLine("五分:{0},二分:{1},一分:{2}", i, j, k);
}
}
4:
public void NumSum()
{
Console.Write("请输入一个正整数:");
string str = Console.ReadLine();
string str2 = "";
for (int i = 0; i < str.Length; i++)
{
str2 = str[i] + str2;
}
Console.WriteLine("反序数是:" + str2);
Console.WriteLine("原数和反序数之和为:" + (Convert.ToInt32(str2) + Convert.ToInt32(str)));
}
5:
public static int Sum(int n)
{
int sum = 0;
int temp=0;
for (int i = 1; i <= n; i++)
{
for(int j=1;j<=i;j++)
{
temp=temp+j;
}
sum += temp;
temp = 0;
}
return sum;
}
6:
public static int GetJosephus(int interval, int childCount)
{
int[] child = new int[childCount];
//给孩子编号
for (int i = 0; i < childCount; i++)
{
child[i] = i+1;
}
int j = -1 ;
int k = 1;
while (true)
{
for (int i = 0; i < interval; )
{
j = (j + 1) % childCount;
if (child[j] != 0)
{
i++;
}
}
if (k == childCount)
break;
child[j] = 0;
k++;
}
return j;
}