A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 wanghuailin1030 于 2013-6-16 20:54 编辑

求以下表达式的值,写出您想到的一种或几种实现方法: 1-2+3-4+……+m

我先写一种,希望大家能把所有的实现方法全部列出来:
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() ;

29 个回复

倒序浏览
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() ;
回复 使用道具 举报
我使用控制台输出的,使用的类似绝对值方法
  1.     class Program
  2.     {   // 1-2+3-4+……+m
  3.         static void Main(string[] args)
  4.         {
  5.             Console.Write("请输入您想执行的表达式");
  6.             string strs = Console.ReadLine();//接收用户输入的字符串 比如1-2+3
  7.             string lastStr = strs.Substring(strs.Length - 1);//取出最后一个字符串“3”
  8.             int lastNum = Convert.ToInt32(lastStr);
  9.             int result = Sum(lastNum);//将最后一个字符串以整数形式当参数传递
  10.             Console.WriteLine(result);
  11.             Console.ReadKey();
  12.         }

  13.         static int Sum(int m)
  14.         {
  15.             int sum = 0;
  16.             for (int i = 0; i <= m; i++)
  17.             {
  18.                 //如果i为偶数,则将i变为-i
  19.                 if (i % 2 == 0)
  20.                 {
  21.                     i = 0 - i;
  22.                     sum = sum + i;
  23.                     i = 0 - i;//最后还需要将i还原
  24.                     continue;//进入下一次循环
  25.                 }
  26.                 sum = sum + i;
  27.             }
  28.             return sum;
  29.         }
  30.     }
复制代码
我觉得我的方法通俗易懂一些 {:soso_e113:}
回复 使用道具 举报
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();
回复 使用道具 举报
int m = Convert.ToInt32(this.TextBox1.Text) ;
int sum = 0 ;
sum =m-(m-1)/2;
System.Console.WriteLine(sum.ToString());
System.Console.ReadLine() ;
回复 使用道具 举报
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();
        }
回复 使用道具 举报
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:38
8#

        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();
回复 使用道具 举报
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() ;
        }
    }
}
楼主 ,可以参考下,如有不妥请提出来。谢谢!
回复 使用道具 举报
不用循环吧,先取到表达式的最后一个字符m,转换成int型。
如果m是偶数,那么结果为m/2切为负的,应该是0-m/2;
如果是奇数,应该就是(m+1)/2

   
回复 使用道具 举报
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();
        }
    }
}


我这个程序中写了两种方法  
回复 使用道具 举报
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();
        }
    }
}

刚才没有解释   配上解释  各位再看看   
回复 使用道具 举报
  1. static void Main(string[] args)
  2.         {
  3.             Console.WriteLine("请输入m=");
  4.             int sum = 0, j = 0;
  5.             int m = Convert.ToInt32(Console.ReadLine());
  6.             for (int i = 1; i <=m; i++)
  7.             {
  8.                 if (i % 2 == 0)
  9.                 {
  10.                     j = -i;
  11.                 }
  12.                 else
  13.                 {
  14.                     j = i;
  15.                 }
  16.                 sum += j;
  17.             }
  18.             Console.WriteLine("sum="+sum);
  19.             Console.ReadKey();

  20.         }
复制代码
回复 使用道具 举报
高腾 发表于 2013-6-14 13:14
我使用控制台输出的,使用的类似绝对值方法我觉得我的方法通俗易懂一些  ...

i=0-i为什么不是i=-1*i;
回复 使用道具 举报
高腾 发表于 2013-6-14 13:14
我使用控制台输出的,使用的类似绝对值方法我觉得我的方法通俗易懂一些  ...

i=0-i为什么不是i=-1*i;
回复 使用道具 举报
wanghuailin1030 发表于 2013-6-14 22:02
i=0-i为什么不是i=-1*i;

这个都一样,只要能把i变成相反数就行
回复 使用道具 举报
赵洋3916 发表于 2013-6-14 13:18
Console.Write("请输入一个整数:m=");
            int m = Convert.ToInt32(Console.ReadLine());//获取 ...

这是不是等差数列的算法,公式我忘了,你能贴上么?
回复 使用道具 举报
彭康 发表于 2013-6-14 13:19
int m = Convert.ToInt32(this.TextBox1.Text) ;
int sum = 0 ;
sum =m-(m-1)/2;

大哥,这个不成,看你的楼上
回复 使用道具 举报
本帖最后由 wanghuailin1030 于 2013-6-14 22:28 编辑
陈壹 发表于 2013-6-14 13:54
static void Main(string[] args)
        {
            int n, m, sum = 0;


这个很全,有错误输入的判断,而且初始值也能改变。看着也很整齐,容易理解。
回复 使用道具 举报
甘斌斌 发表于 2013-6-14 14:09
int m = Convert.ToInt32(this.TextBox1.Text) ;
int n1= 0 ;
int n2= 0 ;

你对比一下第一个回复的
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马