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();
}
展开
 我来答
金色潜鸟
2019-01-23 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5696万
展开全部
声明为 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];
追问
谢谢回答,我想要改动的就是那个car_num,在主函数里循环赋值了,但会报错,是因为一直没改变成功吗,
ji...8@sohu.com
2019-06-03 · TA获得超过324个赞
知道小有建树答主
回答量:436
采纳率:50%
帮助的人:52.1万
展开全部
1.一般情况下,直接用就可以了; 2.如果这个局部函数里有和该全局变量同名的变量,那就把局部变量改成另外一个名字; 3.如果这个全局变量在其他文件里,那么先到定义它的地方加上extern关键字。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
89198408
2019-04-27
知道答主
回答量:36
采纳率:0%
帮助的人:11.8万
展开全部
首先car_num定义成全局变量的目的是什么,其次你改变car_num目的又是什么。先理清逻辑,再学语法。全局变量的值需要改变那直接改就是,但问题的关键是你得知道你想干嘛
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
冯小气气
2019-01-24 · 知道合伙人IT服务行家
冯小气气
知道合伙人IT服务行家
采纳数:98 获赞数:239
八年编程经验,公司核心技术人员。

向TA提问 私信TA
展开全部
for (car_num = 10; car_num < 20; car_num + 10),少写了等于号?
for (car_num = 10; car_num < 20; car_num += 10)
追问
那个后来改过了,是这里的问题,谢谢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
云计算社区
2019-04-09 · TA获得超过447个赞
知道小有建树答主
回答量:351
采纳率:86%
帮助的人:118万
展开全部

帮你修一下代码,你看一下是不是你想要的效果;

模拟的数据会被输出到 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;
}

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式