int m = Convert.ToInt32(this.TextBox1.Text) ;
int sum = 0 ;
for (int i = 0 ; i < m + 1 ; i++)
{
if((i%2) == 1)
{
sum += i ;
}
Else
{
sum = Sum - I ;
}
}
System.Console.WriteLine(sum.ToString());
System.Console.ReadLine() ;
作者: 许庭洲 时间: 2013-6-14 13:09
int m = Convert.ToInt32(this.TextBox1.Text) ;
int sum1= 0 ;
int sum2= 0 ;
for (int i = 0 ; i < m + 1 ; i=i+2)
{
sum1 += i ;
}
for (int j= 1 ;j< m + 1 ;j=j+2)
{
sum2 +=j ;
}
System.Console.WriteLine("表达式最后的计算结果是{0}",sum2-sum1);
System.Console.ReadLine() ;
作者: 高腾 时间: 2013-6-14 13:14
我使用控制台输出的,使用的类似绝对值方法- class Program
- { // 1-2+3-4+……+m
- static void Main(string[] args)
- {
- Console.Write("请输入您想执行的表达式");
- string strs = Console.ReadLine();//接收用户输入的字符串 比如1-2+3
- string lastStr = strs.Substring(strs.Length - 1);//取出最后一个字符串“3”
- int lastNum = Convert.ToInt32(lastStr);
- int result = Sum(lastNum);//将最后一个字符串以整数形式当参数传递
- Console.WriteLine(result);
- Console.ReadKey();
- }
- static int Sum(int m)
- {
- int sum = 0;
- for (int i = 0; i <= m; i++)
- {
- //如果i为偶数,则将i变为-i
- if (i % 2 == 0)
- {
- i = 0 - i;
- sum = sum + i;
- i = 0 - i;//最后还需要将i还原
- continue;//进入下一次循环
- }
- sum = sum + i;
- }
- return sum;
- }
- }
复制代码 我觉得我的方法通俗易懂一些 {:soso_e113:}
作者: 赵洋3916 时间: 2013-6-14 13:18
Console.Write("请输入一个整数:m=");
int m = Convert.ToInt32(Console.ReadLine());//获取用户输入的值
int sum = 0;
//判断输入的数字是奇数还是偶数
if (m % 2 == 0)
{
sum = -m / 2;//m是偶数的算法
}
else
{
sum = -(m - 1) / 2 + m;//m是奇数的算法
}
Console.WriteLine("结果为{0}",sum);//输出结果
Console.ReadLine();
作者: 彭康 时间: 2013-6-14 13:19
int m = Convert.ToInt32(this.TextBox1.Text) ;
int sum = 0 ;
sum =m-(m-1)/2;
System.Console.WriteLine(sum.ToString());
System.Console.ReadLine() ;
作者: 陈壹 时间: 2013-6-14 13:54
static void Main(string[] args)
{
int n, m, sum = 0;
do{
Console.WriteLine("请输入初始数字");
string str_1=Console.ReadLine();
Console.WriteLine("请输入结束数字");
string str_2=Console.ReadLine();
if(int.TryParse(str_1,out n)==false || int.TryParse(str_2,out m)==false)
{Console.WriteLine("你输入的数值有误,请重新输入");
}else{break;}
}while(true);
for (; n < m + 1; n++) {
switch (n % 2) {
case 0:sum-=n;break;
case 1: sum += n; break;
}
}
Console.WriteLine("和为{0}",sum);
Console.ReadKey();
}
作者: 甘斌斌 时间: 2013-6-14 14:09
int m = Convert.ToInt32(this.TextBox1.Text) ;
int n1= 0 ;
int n2= 0 ;
for (int i = 0 ; i < m + 1 ; i=i+2)
{
n1 += i ;
}
for (int j= 1 ;j< m + 1 ;j=j+2)
{
n2 +=j ;
}
System.Console.ReadLine() ;
作者: 陈壹 时间: 2013-6-14 14:10
static void Main(string[] args)
{
int n, m, sum = 0;
do{
Console.WriteLine("请输入初始数字");
string str_1=Console.ReadLine();
Console.WriteLine("请输入结束数字");
string str_2=Console.ReadLine();
if(int.TryParse(str_1,out n)==false || int.TryParse(str_2,out m)==false)
{Console.WriteLine("你输入的数值有误,请重新输入");
}else{break;}
}while(true);
if (n % 2 == 0)
{
switch (m % 2)
{
case 0: sum = ((m + 1) - n) / 2 - m; break;
case 1: sum = ((m + 1) - n) / 2; break;
}
}
else
{
switch (m % 2)
{
case 0: sum = 0-((m + 1) - n) / 2 ; break;
case 1: sum = m-((m + 1) - n) / 2; break;
}
}
Console.WriteLine("和为{0}",sum);
Console.ReadKey();
作者: 李云飞 时间: 2013-6-14 15:56
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 循环加减
{
class Program
{
static void Main(string[] args)
{
int m = 10;
double sum = 0d;
for (int i = 1 ; i <= m ; i++)
{
sum = sum + Math.Pow(-1, (i+1)) * i;
}
System.Console.WriteLine(sum);
System.Console.ReadLine() ;
}
}
}
楼主 ,可以参考下,如有不妥请提出来。谢谢!
作者: aa26963 时间: 2013-6-14 16:44
不用循环吧,先取到表达式的最后一个字符m,转换成int型。
如果m是偶数,那么结果为m/2切为负的,应该是0-m/2;
如果是奇数,应该就是(m+1)/2
作者: 穆玉明 时间: 2013-6-14 19:34
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
//第一种方法
Console.WriteLine("请输入m的值");
int m = Convert.ToInt32(Console.ReadLine());
int sum1 = 0;
int sum2 = 0;
int sum = 0;
if(m%2==0)
{
for (int i = 1; i <= m - 1;i+=2)
{
sum1 = sum1 + i;
sum2 = sum2+(i + 1);
sum = sum1-sum2;
}
}
else
{
for (int i = 1; i <= m ; i += 2)
{
sum1 = sum1 + i;
sum2 = sum2+i + 1;
sum = sum2-sum1;
}
}
Console.WriteLine(sum);
Console.ReadKey();
//第二种方法
//Console.WriteLine("请输入m的值");
//int m = Convert.ToInt32(Console.ReadLine());
//int sum = 0;
//if (m % 2 == 0)
//{
// sum = (-1) * m / 2;
//}
//else
//{
// sum = (-1) * m/ 2 + m;
//}
//Console.WriteLine(sum);
//Console.ReadKey();
}
}
}
我这个程序中写了两种方法
作者: 穆玉明 时间: 2013-6-14 19:40
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
//第一种方法
Console.WriteLine("请输入m的值");
int m = Convert.ToInt32(Console.ReadLine());//接收用户输入的值
int sum1 = 0;
int sum2 = 0;
int sum = 0;
if(m%2==0)//判断m时候是偶数
{
for (int i = 1; i <= m - 1;i+=2)//这个循环主要是计算m是偶数时的和
{
sum1 = sum1 + i; //所有基数的和
sum2 = sum2+(i + 1);//所有偶数的和
sum = sum1-sum2;
}
}
else
{
for (int i = 1; i <= m ; i += 2)
{
sum1 = sum1 + i;
sum2 = sum2+i + 1;
sum = sum2-sum1;
}
}
Console.WriteLine(sum);
Console.ReadKey();
//第二种方法
//Console.WriteLine("请输入m的值");
//int m = Convert.ToInt32(Console.ReadLine());
//int sum = 0;
//if (m % 2 == 0)//m为偶数时
//{
// sum = (-1) * m / 2; //因为1-2=-1,3-4=-1 以此类推,m/2是一共有多少个-1
//}
//else
//{
// sum = (-1) * m/ 2 + m;//这里判断m以前有多少个-1,最后再加上m的值 这里我写成sum=(-1)*(m-1)/2其实一样
//}
//Console.WriteLine(sum);
//Console.ReadKey();
}
}
}
刚才没有解释 配上解释 各位再看看
作者: 蔓越莓 时间: 2013-6-14 19:53
- static void Main(string[] args)
- {
- Console.WriteLine("请输入m=");
- int sum = 0, j = 0;
- int m = Convert.ToInt32(Console.ReadLine());
- for (int i = 1; i <=m; i++)
- {
- if (i % 2 == 0)
- {
- j = -i;
- }
- else
- {
- j = i;
- }
- sum += j;
- }
- Console.WriteLine("sum="+sum);
- Console.ReadKey();
- }
复制代码
作者: wanghuailin1030 时间: 2013-6-14 22:02
i=0-i为什么不是i=-1*i;
作者: wanghuailin1030 时间: 2013-6-14 22:04
i=0-i为什么不是i=-1*i;
作者: 高腾 时间: 2013-6-14 22:05
这个都一样,只要能把i变成相反数就行
作者: wanghuailin1030 时间: 2013-6-14 22:10
这是不是等差数列的算法,公式我忘了,你能贴上么?
作者: wanghuailin1030 时间: 2013-6-14 22:19
大哥,这个不成,看你的楼上
作者: wanghuailin1030 时间: 2013-6-14 22:27
本帖最后由 wanghuailin1030 于 2013-6-14 22:28 编辑
这个很全,有错误输入的判断,而且初始值也能改变。看着也很整齐,容易理解。
作者: wanghuailin1030 时间: 2013-6-14 22:30
你对比一下第一个回复的
作者: wanghuailin1030 时间: 2013-6-14 22:38
本帖最后由 wanghuailin1030 于 2013-6-14 22:44 编辑
哦,你是先判断第一个数字,如果是偶数,则为负数开始想加,如果是奇数则是从正数开始加。严格按照公式来弄。
作者: 彭康 时间: 2013-6-14 22:57
我去 比我早发几秒,我这个是默认 最后是+M
作者: wanghuailin1030 时间: 2013-6-14 23:01
你的省却了正负分开计算,省却了判断正负,而是把-1的几次幂来规定正负想加。
作者: 胡章诚 时间: 2013-6-15 07:53
static void Main(string[] args)
{
Console.WriteLine("请输入一个正整数");
int m = int.Parse(Console.ReadLine());
int sum = 0;
if (m % 2 == 1)
{
sum = (m + 1) / 2;
}
else
{
sum=(m / 2) * (-1);
}
Console.WriteLine("总和为{0}",sum.ToString());
Console.ReadKey();
}
作者: wanghuailin1030 时间: 2013-6-15 09:49
这个高端
作者: wanghuailin1030 时间: 2013-6-15 10:14
这个也不错,算法是之间没见过的
作者: 孤帆破浪 时间: 2013-6-15 10:36
的确是这样耶,学习了!:handshake
作者: 孤帆破浪 时间: 2013-6-15 10:49
看了下楼上诸位的,感觉和我做的都大同小异,就10楼的方法让人耳目一新,学习了!
附上我的方法吧:
static void Main(string[] args)
{
int sum = 0; //累加初始值
int m, sign; //m是最后结束的值,sign是每个数前面的符号
Console.WriteLine("请输入m的值:");
string str = Console.ReadLine();
if (int.TryParse(str, out m) == true)
{
for (int i = 1; i <= m; i++)
{
if (i % 2 == 0) //如果该数为奇数,则符号sign=-1
{
sign = -1;
}
else //为偶数时,sign=1
{
sign = 1;
}
sum += i * sign; //累加
}
}
else
{
Console.WriteLine("数字不合法!");
}
Console.WriteLine("该表达式的值是:{0}", sum);
//下面是我用10楼的方法尝试了一下
if (m % 2 == 0)
{
sum = -m / 2;
}
else
{
sum = (m + 1) / 2;
}
Console.WriteLine("该表达式的值是:{0}", sum);
Console.ReadKey();
}
作者: wanghuailin1030 时间: 2013-6-15 13:01
10楼的方法在24楼有代码实现,确实是耳目一新
作者: 孤帆破浪 时间: 2013-6-16 09:38
呵呵!此楼有点多,后面的不是每一个都仔细看过。。。。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |