C++中全局变量的值需要改变怎么办
#include<iostream>#include<fstream>#include<ctime>#include<string>#include<stdlib.h>u...
#include<iostream>
#include<fstream>
#include<ctime>
#include<string>
#include<stdlib.h>
using namespace std;
const int lane = 1000;
const int v_max = 18;
int v[lane];
int car_num;
int p[200];
void inicars()
{
FILE *gg;
gg = fopen("t-s.txt", "a");
int i, j, k;
int temp_1, temp_2 = 0;
int n = 0;
for (i = 0; i < lane; i++)
v[i] = -1;
for (i = 0; i < car_num; i++)
{
v[temp_2] = rand() % (v_max + 1);
temp_2 = temp_2 + 6; //表示的速度是车尾速度,v[位置]=speed
}
for (i = 0; i<lane; i++)
{
if (v[i] >= 0)
{
p[n] = i; //
n++;
}
}
for (i = 0; i < car_num; i++)
fprintf(gg,"num=%2d,loc=%2d,speed=%2d\n",i,p[i],v[p[i]] );
// fprintf(gg, "\n");
}
void main()
{
for (car_num = 10; car_num < 20; car_num + 10)
{
srand(time(NULL));
inicars();
} 展开
#include<fstream>
#include<ctime>
#include<string>
#include<stdlib.h>
using namespace std;
const int lane = 1000;
const int v_max = 18;
int v[lane];
int car_num;
int p[200];
void inicars()
{
FILE *gg;
gg = fopen("t-s.txt", "a");
int i, j, k;
int temp_1, temp_2 = 0;
int n = 0;
for (i = 0; i < lane; i++)
v[i] = -1;
for (i = 0; i < car_num; i++)
{
v[temp_2] = rand() % (v_max + 1);
temp_2 = temp_2 + 6; //表示的速度是车尾速度,v[位置]=speed
}
for (i = 0; i<lane; i++)
{
if (v[i] >= 0)
{
p[n] = i; //
n++;
}
}
for (i = 0; i < car_num; i++)
fprintf(gg,"num=%2d,loc=%2d,speed=%2d\n",i,p[i],v[p[i]] );
// fprintf(gg, "\n");
}
void main()
{
for (car_num = 10; car_num < 20; car_num + 10)
{
srand(time(NULL));
inicars();
} 展开
5个回答
展开全部
声明为 const 的量初始化后,它的数值在程序中是不允许改变的,因为它不可为左值。例如: const int lane = 1000; const int v_max = 18; 数值在程序中是不允许改变。
若要变,只能声明为非 const。 例如:
int lane = 1000, v_max = 18;
全局量 v 用指针: int *v;
在程序中动态分配为数组。分配前,你可以改变 lane 的值 (赋值,输入都可)。例: lane=80;
v = new int[lane];
for (i = 0; i < lane; i++) v[i] = -1;
使用完毕,若想改变 v 数组大小,你可以 delete[] v; 然后 改变 lane 的大小,重新动态分配 v = new int[lane];
若要变,只能声明为非 const。 例如:
int lane = 1000, v_max = 18;
全局量 v 用指针: int *v;
在程序中动态分配为数组。分配前,你可以改变 lane 的值 (赋值,输入都可)。例: lane=80;
v = new int[lane];
for (i = 0; i < lane; i++) v[i] = -1;
使用完毕,若想改变 v 数组大小,你可以 delete[] v; 然后 改变 lane 的大小,重新动态分配 v = new int[lane];
追问
谢谢回答,我想要改动的就是那个car_num,在主函数里循环赋值了,但会报错,是因为一直没改变成功吗,
展开全部
1.一般情况下,直接用就可以了; 2.如果这个局部函数里有和该全局变量同名的变量,那就把局部变量改成另外一个名字; 3.如果这个全局变量在其他文件里,那么先到定义它的地方加上extern关键字。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先car_num定义成全局变量的目的是什么,其次你改变car_num目的又是什么。先理清逻辑,再学语法。全局变量的值需要改变那直接改就是,但问题的关键是你得知道你想干嘛
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
for (car_num = 10; car_num < 20; car_num + 10),少写了等于号?
for (car_num = 10; car_num < 20; car_num += 10)
for (car_num = 10; car_num < 20; car_num += 10)
追问
那个后来改过了,是这里的问题,谢谢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
帮你修一下代码,你看一下是不是你想要的效果;
模拟的数据会被输出到 d:\\t-s.txt 文件中;如下图
#include<iostream>
#include<fstream>
#include<ctime>
#include<string>
#include<stdlib.h>
using namespace std;
const int lane = 1000;
const int v_max = 18;
int v[lane];
int car_num;
int p[200];
void inicars()
{
FILE *gg;
gg = fopen("d:\\t-s.txt", "a");
int i, j, k;
int temp_1, temp_2 = 0;
int n = 0;
for (i = 0; i < lane; i++)
v[i] = -1;
for (i = 0; i < car_num; i++)
{
v[temp_2] = rand() % (v_max + 1);
temp_2 = temp_2 + 6; //表示的速度是车尾速度,v[位置]=speed
}
for (i = 0; i<lane; i++)
{
if (v[i] >= 0)
{
p[n] = i; //
n++;
}
}
for (i = 0; i < car_num; i++)
{
fprintf(gg, "num=%2d,loc=%2d,speed=%2d\n", i, p[i], v[p[i]]);
// fprintf(gg, "\n");
printf( "num=%2d,loc=%2d,speed=%2d\n", i, p[i], v[p[i]]);
}
fclose(gg);
}
int main()
{
for (car_num = 1; car_num < 20; car_num++ )
{
srand(time(NULL));
inicars();
}
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询