标题:求一个程序的问题?
只看楼主
sunxuan007
Rank: 1
等 级:新手上路
帖 子:17
专家分:1
注 册:2012-8-28
结帖率:100%
已结贴  问题点数:20 回复次数:4 
求一个程序的问题?
一个函数S(n,a)=a+aa+aaa+aaaa+...a(n个)。
例如:n=5,a=8.S(5,8)=8+88+888+8888+88888;
下面是程序:
            int n = Convert.ToInt32(Console.ReadLine());
            int a = Convert.ToInt32(Console.ReadLine());
            double num1, num2, num3, num;
            num1 = 0; num2 = 0; num3 = a; num = 0;
            for (int one = 0; one < n; one++)
            {
                num1 = Math.Pow(10,one);
                num2 = num1 * a;
                num3 = num3 + num2;
                num = num + num3;
            }
            Console.WriteLine(num);
应该S(3,2)=246;式中却得252;S(4,3)=3702,式中却得3714;
求程序的问题在哪里?
如果程序能简化,哪里可以简化?
搜索更多相关主题的帖子: one 
2012-09-09 09:20
lybh24
Rank: 8Rank: 8
等 级:贵宾
威 望:19
帖 子:120
专家分:701
注 册:2012-9-8
得分:20 
for循环里 第一次执行时 num3 = num3 + num2,多加了一次num3的值,在循环里加个判断就行:
  for (int one = 0; one < n; one++)
            {
                num1 = Math.Pow(10, one);
                num2 = num1 * a;
                if (one==0)
                {
                    num3 = num2;
                }
                else
                {
                    num3 += num2;
                }
                num += num3;
            }

新群:273209143
2012-09-09 17:43
sunxuan007
Rank: 1
等 级:新手上路
帖 子:17
专家分:1
注 册:2012-8-28
得分:0 
回复 2楼 lybh24
谢谢你!
我不停的修改程序,结果忘了早期num3的赋值。
把num3赋值成0;或按照您给的程序都能解决问题.
num+=也是简化了呵呵.
2012-09-09 18:19
八画小子
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:37
帖 子:705
专家分:2043
注 册:2010-11-11
得分:0 
程序代码:
class Program
    {
        public static void Main(string[] args)
        {
            Console.WriteLine("请输入n和a:");
            Console.Write("n = ");
            int n = Convert.ToInt32(Console.ReadLine());
            Console.Write("a = ");
            int a = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("S({0},{1}) = {2}", n, a, S(n, a));
        }
        private static int S(int n, int a)
        {
            int result = 0;
            for (int i = 0; i < n; i++)
            {
                result += (int)Math.Pow(10, i) * a * (n - i);
            }
            return result;
        }
    }
2012-09-10 01:56
sunxuan007
Rank: 1
等 级:新手上路
帖 子:17
专家分:1
注 册:2012-8-28
得分:0 
定义为方法更简便和实用,谢谢4楼!
不过方法里的result运算好像不是正确的,具体不清楚是哪。

[ 本帖最后由 sunxuan007 于 2012-9-10 05:26 编辑 ]
2012-09-10 05:09



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-381006-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.047301 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved