求出1~1000之间的所有能被7整除的数,并计算和输出每5个的和

programhjh 2008-06-03 02:16:11
欢迎高手指点///50分.控制台程序,,
...全文
3104 25 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
李冬宝 2008-06-04
  • 打赏
  • 举报
回复
C# code
int iSum = (1+2+3+4+5)*7;
int j = 5;
int iMax = 1000%7;
while (true)
{
Console.WriteLine(iSum );
iSum += 35;
j+=5;
if (j > iMax) break;
}




oxlshmily 2008-06-03
  • 打赏
  • 举报
回复
 class exp3
{
static void Main(){
int Count=0;
int Sum=0;
for(int i=7;i<=1000;i+=7)
{
Sum += i;
Count++;
if(Count==5)
{
Console.WriteLine(Sum);
Sum=0;
Count=0;
}
}
Console.ReadLine();
}
}


用FOR适合初学者.
tglflzqlmy 2008-06-03
  • 打赏
  • 举报
回复
高手一大堆呀,我不敢写了,呜~~`
Jinglecat 2008-06-03
  • 打赏
  • 举报
回复
暗含什么玄机呢?
programhjh 2008-06-03
  • 打赏
  • 举报
回复
方法很多!!!
parfum 2008-06-03
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 wangkun9999 的回复:]
先看规律:
7 14 21 28 35=21*5
42 49 56 63 70=(21+35)*5
77 84 91 98 105=(21+35+35)*5
程序实现:
C# codefor(inti=21; i<1000; i+=35)
{
Console.WriteLine( i*5);
}
[/Quote]
WOW
wangkun9999 2008-06-03
  • 打赏
  • 举报
回复
用for循环效率一样,只要找出规律:

int sum;
for(int i=21; i<1000; i += 35)
{
if (i+70<=1000)
{
sum=i*5;
}
else
{
sum=(i-70)+(i-35)+i+(i+35>1000?0:i+35)+(i+70>1000?0:i+70);//如果不足5位,就加其它几位
}
Console.WriteLine( sum.ToString());
}

wangkun9999 2008-06-03
  • 打赏
  • 举报
回复
先看规律:
7 14 21 28 35=21*5
42 49 56 63 70=(21+35)*5
77 84 91 98 105=(21+35+35)*5
程序实现:

for(int i=21; i<1000; i += 35)
{
Console.WriteLine( i*5 );
}
teaboy1314 2008-06-03
  • 打赏
  • 举报
回复
就算法来说,conan的方法简单些,但要对最后一组特别处理,题目的要求也有些不明确
mobydick说的for循环的效率问题想知道根据,个人觉得应该同while没什么区别吧,关键是步长控制好了,不要做无谓的循环.当然希望是底层语言的事,那就请说的清楚些,俺也长点见识 .
Tll_W 2008-06-03
  • 打赏
  • 举报
回复
楼上的方法都可以参考哈。。俺就不献丑了。。。
conan304 2008-06-03
  • 打赏
  • 举报
回复
        #region
/// <summary>
/// 如果每5个才计算,不足的不计算,如最后的三位980 987 994不计算
/// </summary>
/// <param name="args"></param>
public static void Main(string[] args)
{

int sum=0;
for (int i = 1; ;i++ )
{
if (35 * i < 1001)
{
sum = (5 * i - 2) * 35;
Console.WriteLine(sum.ToString());
}
else break;
}
}
#endregion
/*
105
280
455
630
805
980
1155
1330
1505
1680
1855
2030
2205
2380
2555
2730
2905
3080
3255
3430
3605
3780
3955
4130
4305
4480
4655
4830
请按任意键继续. . .
*/
conan304 2008-06-03
  • 打赏
  • 举报
回复
#region
/// <summary>
/// 每五个值计算,根据等差数列公式求和
/// 和=(首项+末项)×项数÷2
/// 项数=5 末项=5*i*7比如35,70,105等
/// 首项为(5*i-4)*7 则计算之后sum = (5 * i - 2) * 35;
/// 如果值大于1000,提取后面几项的和
/// </summary>
/// <param name="args"></param>
public static void Main(string[] args)
{

int sum=0;
for (int i = 1; ; i++)
{
if (35 * i < 1001)
{
sum = (5 * i - 2) * 35;
Console.WriteLine(sum.ToString());
}
else
{
sum = 0;
int temp=0,t=0;
while (true)
{

temp = 5*(i - 1) * 7 + 7 * t;
if (temp > 1000) break;
sum += temp;
t++;
}
Console.WriteLine(sum.ToString());
break;
}
}
}
#endregion
/*
105
280
455
630
805
980
1155
1330
1505
1680
1855
2030
2205
2380
2555
2730
2905
3080
3255
3430
3605
3780
3955
4130
4305
4480
4655
4830
2961
请按任意键继续. . .
*/
wuhongyao3 2008-06-03
  • 打赏
  • 举报
回复
呵呵
真多。。
liulcster 2008-06-03
  • 打赏
  • 举报
回复
int sum =0;
int iNumber = 1000 / 7;
for (int i = 1; i <= iNumber; i++)
{
System.Console.Write(i*7 + " ");
sum += i*7;

if (i % 5 == 0)
{
System.Console.Write(sum);
System.Console.WriteLine();
sum = 0;
}
}
baihe_591 2008-06-03
  • 打赏
  • 举报
回复

sum=0;
count=0;
for(int i=7;i<1000;i+=7);
{
console.Write(i);
count++;
sum+=i;
if(count==5)
{
console.Write(sum);
sum=0;
count=0;

}
}

gomoku 2008-06-03
  • 打赏
  • 举报
回复

for(int i=7+14+21+28+35; i<1000; i += 35)
{
Console.WriteLine( i );
}
mobydick 2008-06-03
  • 打赏
  • 举报
回复
我个人的建议是:不要用for循环,也不要用%,因为效率太低。
yes_no57111510 2008-06-03
  • 打赏
  • 举报
回复
int Count=0;
int Sum=0;
for(int i=7;i<=1000;i++)
{
if(i%7==0)
{
Sum += i;
Count++;
console.writeLine("{0}",i)
}
if(Count==5)
{
Console.WriteLine(Sum);
Sum=0;
Count=0;
}
}
Console.ReadLine();
mobydick 2008-06-03
  • 打赏
  • 举报
回复
public static void RunSnippet()
{
//7
int seed = 7;
//7的倍数
int index = 1;
//最大边界
const int Band = 1000;
while(true)
{
//7 X 倍数
int i = seed * index++;
//不超过边界
if(i <= Band)
{
//输出
Console.WriteLine(i);
}
else//超过边界
{
Console.WriteLine("Over");
//结束
break;
}
}
//倍数减一才是小于边界的最大倍数
index--;
//每五个这样的数之和,就是在1到index中,任意抽取5个数字相加,然后X7
//这是个排列组合,总数是index!
//142 X 7 = 994
//google算了一下,142 ! = 2.69536414 × 10的245次方
}
tnt1980 2008-06-03
  • 打赏
  • 举报
回复
没有调试。思想是这个。
//不用动态数组了,比较费事
int[] SevenNumber = new int[1000];
int j = 0;
for (int i = 1; i <= 1000; i++)
{
if (i % 7 == 0)
{
SevenNumber[j] = i;
j++;
}
}
//不细算了,最多200个:)
int[] SumNumber = new int[200];
int m = 0;
int n = 0;
for (int i = 0; i < 1000; i++)
{
if (SevenNumber[i] == 0)
{
//没数字了.
break;
}
SumNumber[n] += SevenNumber[i];
if (m == 4)
{
//每计算完5个,总计数就+1
m = 0;
n++;
}
}


for (int i = 0; i < 200; i++)
{
if (SumNumber[i] == 0)
{
break;
}
else
{
printf("%d", SumNumber[i]);
}
}
加载更多回复(5)

111,113

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧