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 个回复

正序浏览
wanghuailin1030 发表于 2013-6-15 13:01
10楼的方法在24楼有代码实现,确实是耳目一新

呵呵!此楼有点多,后面的不是每一个都仔细看过。。。。。。
回复 使用道具 举报
孤帆破浪 发表于 2013-6-15 10:49
看了下楼上诸位的,感觉和我做的都大同小异,就10楼的方法让人耳目一新,学习了!
附上我的方法吧:
static ...

10楼的方法在24楼有代码实现,确实是耳目一新
回复 使用道具 举报
看了下楼上诸位的,感觉和我做的都大同小异,就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();
            

        }
回复 使用道具 举报
aa26963 发表于 2013-6-14 16:44
不用循环吧,先取到表达式的最后一个字符m,转换成int型。
如果m是偶数,那么结果为m/2切为负的,应该是0-m ...

的确是这样耶,学习了!:handshake
回复 使用道具 举报
胡章诚 发表于 2013-6-15 07:53
static void Main(string[] args)
        {
            Console.WriteLine("请输入一个正整数");

这个也不错,算法是之间没见过的
回复 使用道具 举报
穆玉明 发表于 2013-6-14 19:40
using System;
using System.Collections.Generic;
using System.Linq;

这个高端
回复 使用道具 举报
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();
        }
回复 使用道具 举报
李云飞 发表于 2013-6-14 15:56
using System;
using System.Collections.Generic;
using System.Linq;

你的省却了正负分开计算,省却了判断正负,而是把-1的几次幂来规定正负想加。
回复 使用道具 举报
wanghuailin1030 发表于 2013-6-14 22:19
大哥,这个不成,看你的楼上

我去 比我早发几秒,我这个是默认 最后是+M
回复 使用道具 举报
本帖最后由 wanghuailin1030 于 2013-6-14 22:44 编辑
陈壹 发表于 2013-6-14 14:10
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 ;

你对比一下第一个回复的
回复 使用道具 举报
本帖最后由 wanghuailin1030 于 2013-6-14 22:28 编辑
陈壹 发表于 2013-6-14 13:54
static void Main(string[] args)
        {
            int n, m, sum = 0;


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

大哥,这个不成,看你的楼上
回复 使用道具 举报
赵洋3916 发表于 2013-6-14 13:18
Console.Write("请输入一个整数:m=");
            int m = Convert.ToInt32(Console.ReadLine());//获取 ...

这是不是等差数列的算法,公式我忘了,你能贴上么?
回复 使用道具 举报
wanghuailin1030 发表于 2013-6-14 22:02
i=0-i为什么不是i=-1*i;

这个都一样,只要能把i变成相反数就行
回复 使用道具 举报
高腾 发表于 2013-6-14 13:14
我使用控制台输出的,使用的类似绝对值方法我觉得我的方法通俗易懂一些  ...

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

i=0-i为什么不是i=-1*i;
回复 使用道具 举报
  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.         }
复制代码
回复 使用道具 举报
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();
        }
    }
}

刚才没有解释   配上解释  各位再看看   
回复 使用道具 举报
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();
        }
    }
}


我这个程序中写了两种方法  
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马