C# 关于s=1*1+2*2+......10*10的代码错那了

来源:百度知道 编辑:UC知道 时间:2024/06/10 09:43:22
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
class Program
{
static void Main()
{
int i, s;
int[] arg ;

for (i = 1; i <= 10;i++ )
{
s = (i * i);
arg =new int [10];
arg[10] = Convert.ToInt32(s);

Console.WriteLine(arg[10].ToString());

}
}
}
}

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
class Program
{
static void Main()
{
int i, s;
//int[] arg ;

for (i = 1; i <= 10;i++ )
{
s += i * i;
//arg =new int [10];
//arg[10] = Convert.ToInt32(s);
}

Console.WriteLine(s);

}
}
}

数组越界

你最后是要实现计算从1*1到10*10的和吗?

static void Main()
{
int i, s;
// int[] arg ; // 如果不保留中间结果,为什么要定义数组呢?

for (i = 1; i <= 10;i++ )
{
// s = (i * i); // 替换成下面一行
s += (i * i); // 此行是 C# 允许的书写格式,等同于 s = s + (i * i);

// 每次循环都从新实例化 arg?
// 这样和从新定义 arg 没有区别,arg 中存储的内容会全部丢失
// arg =new int [10];

// 只是将 s 的结果赋值给了数字的第10个元素(实际上这个元素是不存在的)
// 问题一:所有的类 C 语言,数组的默认下标是从 0 开始的
// ------- 就是说10个元素的数组,最后一个元素的下标是 9,即 arg[9]
// 问题二:多次将不同的数值赋值给同一变量不回自动完成累加操作
// ------- 而是替换操作,之后保留住最后一次