下面是程序
其中有个变量y
如果不开始设置成全局变量,
y = y + k;
这里就会提示报错说使用了未赋值的局部变量!
前提是我再设置其他(int i, z, k,y;)已经设置后不能使用
//题目:输入某年某月某日,判断这一天是这一年的第几天?
//程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天。
using System;
using System.Collections.Generic;
using System.Text;
namespace 判断天数
{
class Program
{
static int y;
static void Main(string[] args)
{
string i0, z0, k0;
int i, z, k;
Console.WriteLine("欢迎进入判断天数程序:\n下面请跟随程序依次输入年月日");
do
{
Console.WriteLine("请输入年(如1999)");
i0 = Console.ReadLine();
Console.WriteLine("请输入月");
z0 = Console.ReadLine();
Console.WriteLine("请输入日");
k0 = Console.ReadLine();
i = Convert.ToInt32(i0);
z = Convert.ToInt32(z0);
k = Convert.ToInt32(k0);
}
while (z > 12);
switch (z)
{
case 1:
y = 0;
break;
case 2:
y = 31;
break;
case 3: y = 59; break;
case 4: y = 90; break;
case 5: y = 120; break;
case 6: y = 151; break;
case 7: y = 181; break;
case 8: y = 212; break;
case 9: y = 243; break;
case 10: y = 273; break;
case 11: y = 304; break;
case 12: y = 334; break;
default: Console.WriteLine("data error"); break;
}
y = y + k;
Console.WriteLine("您输入的是{0}年{1}月{2}日今天是第{3}日", i, z, k,y);
Console.ReadKey();
}
}
}
为什么这里一定要设置全局变量
答案:2 悬赏:0
解决时间 2021-03-03 01:03
- 提问者网友:枯希心
- 2021-03-02 19:21
最佳答案
- 二级知识专家网友:转身后的回眸
- 2021-03-02 19:30
1.全局变量在程序开始执行时就分配了并且始终占据某存储单元,直到程序结束才释放,没有定义初值,系统会自动给补上初值。
2. 而局部变量在栈中。C#严格禁止使用未赋值的变量。你只在栈里通过申明划分了大小,但是这个变量并不会由系统自动初始化,分配默认值。
所以区别就显现在这里。
总结:
局部变量最好在申明时就初始化给个值,
后面的使用原则:必须先赋值,再使用。
最后,
你这个程序没有限制严密,比如天数99天,还应该再写代码考虑周全点。
2. 而局部变量在栈中。C#严格禁止使用未赋值的变量。你只在栈里通过申明划分了大小,但是这个变量并不会由系统自动初始化,分配默认值。
所以区别就显现在这里。
总结:
局部变量最好在申明时就初始化给个值,
后面的使用原则:必须先赋值,再使用。
最后,
你这个程序没有限制严密,比如天数99天,还应该再写代码考虑周全点。
全部回答
- 1楼网友:滚刀废物浮浪人
- 2021-03-02 20:58
可以不设置成全局变量, 但是需要在dfs函数的参数里面添加一个这样的数组, 这样就才可以传递visit数组, 可以传递已经访问的信息。而设置成全局变量的作用就是能传递信息, 不至于,在函数里面重新初始化visit数组,丢失以前访问过的信息。
例如:
dfs(...., int visit[]){
//一些代码
dfs(...., visit);
//一些代码
}和这个
int visit[10000];
dfs(....){
//一些代码
dfs(....);
//一些代码
}效果可以是一样的。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯