如何用c#做下面的题目
编写一个程序,求出200到300之间的数,且满足条件:它们三个数字之积为42,三个数字之和为12。 --------------------编程问答-------------------- 100个数而已,遍历你不会啊... --------------------编程问答-------------------- 题目很有问题,可能吗?200到300之间的数
积为42
和为12 --------------------编程问答-------------------- 我理解错了,你指的是3个位的数字,积42,和12,当我上面没说,不好意思,还是赶紧给你写个答案吧. --------------------编程问答-------------------- 奇了,要问lz,这个可不可以有 --------------------编程问答--------------------
楼主是不是写错了? --------------------编程问答--------------------
语句还真有歧义,明白了,你写我就不写了 --------------------编程问答--------------------
人家说“三个数字”...
237...我心算都能算出一个来... --------------------编程问答-------------------- --------------------编程问答--------------------
237不就是嘛,2*3*7=42,2+3+7=12 --------------------编程问答-------------------- 正数?
和为12,那最大数也就是12了,从0开始到12遍历一下 --------------------编程问答--------------------
--------------------编程问答-------------------- 直接输出237 --------------------编程问答--------------------
int i = 2;
for(int j=0;j<10;j++)
for (int k = 0; k < 10; k++)
{
if (j + k == 10 && j * k == 21)
{
Console.WriteLine(i * 100 + j * 10 + k);
}
}
for (int i = 201; i < 300; i++)
{
int baiwei = i / 100;//百位
int shiwei = (i % 100) / 10;//十位
int gewei = (i % 100) % 10;//个位
if (baiwei * shiwei * gewei == 42 && (baiwei + shiwei + gewei == 12))
{
Console.WriteLine(i);
}
}
测试了一下,有:237和273,嘿嘿。 --------------------编程问答-------------------- 贴个Linq
--------------------编程问答-------------------- 应该用聚合函数的,没必要再搞个Func委托,重写一下:
Func<int, int> calcMul = n =>
{
var ret = 1;
n.ToString().ToList().ForEach(c =>
{
ret *= int.Parse(c.ToString());
});
return ret;
};
var list = from n in Enumerable.Range(200, 100)
where n.ToString().Sum(c=>int.Parse(c.ToString())) == 12
&& calcMul(n) == 42
select n;
foreach (var n in list)
{
Console.WriteLine("Num:{0}", n);
}
var list = from n in Enumerable.Range(200, 100)--------------------编程问答-------------------- public static void Cacul(int ifrom,int ito)
where n.ToString().Sum(c=>int.Parse(c.ToString())) == 12
&& n.ToString().Aggregate(1, (pre, next) => pre * int.Parse(next.ToString())) == 42
select n;
{
for(int i=ifrom;i<ito+1;i++)
{
int count = Convert.ToInt32(i / Math.Pow(10, ifrom.ToString().Length-1));//获取个位
int culm = Convert.ToInt32(i / Math.Pow(10, ifrom.ToString().Length-1));//获取个位
for (int j = 1; j < ifrom.ToString().Length; j++)
{
count += Convert.ToInt32(i % Math.Pow(10, j) / Math.Pow(10, (j-1)));//获取十位、百位、千位
culm = culm * Convert.ToInt32(i % Math.Pow(10, j) / Math.Pow(10, (j - 1)));
}
if (count == 12 && culm == 42)
{
Console.WriteLine(i);
}
else
{
count = 0;//和
culm = 1;//积
}
}
Console.ReadKey();
}
--------------------编程问答-------------------- 个位欠妥,但是实在找不到好的方法了! --------------------编程问答-------------------- [code=C#][/ for(int i=ifrom;i<ito+1;i++)
{
int count = Convert.ToInt32(i / Math.Pow(10, ifrom.ToString().Length-1));//获取个位
int culm = Convert.ToInt32(i / Math.Pow(10, ifrom.ToString().Length-1));//获取个位
for (int j = 1; j < ifrom.ToString().Length; j++)
{
count += Convert.ToInt32(i % Math.Pow(10, j) / Math.Pow(10, (j-1)));//获取十位、百位、千位
culm = culm * Convert.ToInt32(i % Math.Pow(10, j) / Math.Pow(10, (j - 1)));
}
if (count == 12 && culm == 42)
{
Console.WriteLine(i);
}
}
Console.ReadKey();] --------------------编程问答-------------------- int i = 2;
for(int j=1;j<10;j++)
for (int k = 10-j; k < 10; k++)
{
if (j + k == 10 && j * k == 21)
{
Console.WriteLine(i * 100 + j * 10 + k);
}
}
--------------------编程问答-------------------- int i = 2;
for(int j=1;j<10;j++)
if ( j * (10-j) == 21)
{
Console.WriteLine(i * 100 + j * 10 + (10-j));
}
}
--------------------编程问答-------------------- int i = 2;
for(int j=1;j<10;j++)
if ( j * (10-j) == 21)
{
Console.WriteLine(i * 100 + j * 10 + (10-j));
}
} --------------------编程问答-------------------- 遍历,然后分别取出个十百位求和与积。 --------------------编程问答-------------------- 我用Java写的
package com;
public class Demo {
public static void main(String args []){
System.out.print("满足条件的有:\n");
for (int n=200; n <=300; n++)
{
int a = n / 100;//百位
int b = (n % 100) / 10;//十位
int c = (n % 100) % 10;//个位
if (a * b * c == 42 && (a + b + c == 12))
{
System.out.println(n);
}
}
}
}
--------------------编程问答--------------------
正解。 --------------------编程问答-------------------- --------------------编程问答-------------------- 同意13楼 --------------------编程问答-------------------- 先定义一个数I给个初始值200 循环条件I<300 I++
用 IF 判断 把循环得到的数放到一个数组里面在算
代码就不写了 自己理解 --------------------编程问答--------------------
--------------------编程问答-------------------- 思路:
num=201;
int num1 = num / 100;//获取百位上的数
int num2 = (num % 100) / 10;//获取十位上的数
int num3 = (num % 100) % 10;//获取个位上的数
一、利用for循环遍历200-300之间的数
二、将循环遍历得到的每一个数的个位、十位、百位分解开来
三、if语句判断
代码如下
//利用for循环遍历
for(int i = 200;i <= 300;i ++)
{
//将得到的每一个数分解开来
int gewei = i % 10; //个位数
int shiwei = i / 10 % 10; //百位数
int baiwei = i / 100;
//将两个条件声明为bool
bool con1 = (gewei * shiwei * baiwei == 42);
bool con2 = (gewei + shiwei + baiwei == 12);
//if语句进行判断
if(con1 && con2)
{
Console.WriteLine(i);
}
}
祝楼主学业有成 --------------------编程问答-------------------- 神马?!
首先排除200和300
所以百位必为2
将21分解质因数,只有3*7(排除21*1)
答案就只有2个,237,273
汗啊,这还需要穷举遍历神马的吗?
神马都是浮云?! --------------------编程问答--------------------
--------------------编程问答--------------------
List <int> count=new List <int>();
for (int i = 200; i <= 300; i++)
{
int b = i / 100;
int s = (i - b * 100) / 10;
int g = i % 100;
int sum = b + s + g;
int arr = b * s * g;
if (sum == 12 && arr == 42)
{
count .Add (i);
}
}
for (int i = 0; i < count.Count; i++)
{
Console.WriteLine(count[i].ToString ());
}
Console.ReadKey();
如果42 和12不会变 的确不用遍历 --------------------编程问答-------------------- 同意29楼的 --------------------编程问答--------------------
算得这么累做什么呢,
200-300不用看,肯定全是三位数,直接用取字就行了.
--------------------编程问答--------------------
算得这么累做什么呢,
200-300不用看,肯定全是三位数,直接用取字就行了.
--------------------编程问答-------------------- public static void Cacul(int ifrom,int ito)
{
for(int i=ifrom;i<ito+1;i++)
{
int count = 0;
int culm = 1;
for (int j = ifrom.ToString().Length; j >0 ; j--)
{
count += Convert.ToInt32(i % Math.Pow(10, j) / Math.Pow(10, (j-1)));//获取十位、百位、千位
culm = culm * Convert.ToInt32(i % Math.Pow(10, j) / Math.Pow(10, (j - 1)));
}
if (count == 12 && culm == 42)
{
Console.WriteLine(i);
}
}
Console.ReadKey();
}
//完解
//调用Cacul(100,10000); --------------------编程问答-------------------- 纯进来看看,有没有 更有优化的遍历啊? --------------------编程问答-------------------- --------------------编程问答--------------------
补充:.NET技术 , C#