C 2行不同的代码don';第一次不工作,然后工作
我的代码应该生成5个数组C 2行不同的代码don';第一次不工作,然后工作,c,C,我的代码应该生成5个数组 第一个和第二个参数从0到窗口的最大分辨率(图形生成窗口(宽度、高度)) 第三个和第四个参数为-20到20 第五个参数等于球数+1的幂 但是,在VisualStudio 2k8和2k12上,第一个数组充满了0,第三个数组的值远远大于(-)20,第五个数组的偶数小于0 #include <stdio.h> #include <time.h> #include <stdlib.h> #include "winbgi2.h" int s
- 第一个和第二个参数从0到窗口的最大分辨率(图形生成窗口(宽度、高度))
- 第三个和第四个参数为-20到20
- 第五个参数等于球数+1的幂
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include "winbgi2.h"
int s, w;
int i;
int x[20], y[20], vx[20], vy[20], m[20];
void init(int a[20], int b[20], int c[20], int d[20], int e[20]);
void main() {
srand((unsigned) time(NULL));
int min;
int max;
min = 100;
max = 1000;
s = min + rand() % max;
w = min + rand() % max;
graphics(s, w);
init(&x[20], &y[20], &vx[20], &vy[20], &m[20]);
for (i = 1; i <= 20; i++) {
printf("Array element x=%ld \t is equal to %ld\n", i, x[i]);
};
for (i = 1; i <= 20; i++) {
printf("Array element y=%ld \t is equal to %ld\n", i, y[i]);
};
for (i = 1; i <= 20; i++) {
printf("Array element vx=%ld \t is equal to %ld\n", i, vx[i]);
};
for (i = 1; i <= 20; i++) {
printf("Array element vy=%ld \t is equal to %ld\n", i, vy[i]);
};
for (i = 1;i <= 20; i++) {
printf("Mass of ball m=%ld \tis %ld\n", i, m[i]);
};
wait();
}
void init(int a[20], int b[20], int c[20], int d[20], int e[20]) {
for (i = 1; i <= 20; i++)
a[i] = rand() % s;
for (i = 1; i <= 20; i++)
b[i] = rand() % w;
for (i = 1; i <= 20; i++)
c[i] =- 20 + rand() % 40;
for (i = 1; i <= 20; i++)
d[i] =- 20 + rand() % 40;
for (i = 1; i <= 20; i++)
e[i] = i * i * 2 + 1;
}
#包括
#包括
#包括
#包括“winbgi2.h”
int s,w;
int i;
int x[20],y[20],vx[20],vy[20],m[20];
void init(int a[20]、int b[20]、int c[20]、int d[20]、int e[20]);
void main(){
srand((无符号)时间(NULL));
int-min;
int max;
最小值=100;
最大值=1000;
s=最小值+随机数()%max;
w=最小值+随机数()%max;
图形(s、w);
初始化(&x[20]、&y[20]、&vx[20]、&vy[20]、&m[20]);
对于(i=1;i,代码中存在多个问题:
- 索引值是基于C的
0
。由20个元素组成的数组的有效索引值是0到19。循环应编写为:
for (i = 0; i < 20; i++)
a[i] = rand() % s;
- 您不应该在全局范围内定义变量,而应该在
main
函数的主体中定义局部变量,并在init
函数的主体中定义i
=-
不是运算符,中的语句c[i]=-20+rand()%40;
被解析为c[i]=-20+(rand()%40);
,这可能是您的意图,但您的演示具有误导性。请改为:
c[i] = -20 + rand() % 40;
- for
语句的;
在}
之后的
是无用的,应该删除
正如目前编写的那样,代码在许多地方调用未定义的行为,这意味着任何事情都可能发生。对代码的格式做些什么。另外,C中的数组从零开始索引这看起来很糟糕。此外,它是
int main(void){return 0;}
或int main(int argc,char*argv[]){return 0;}
在C中。顺序是C中的0 origin。您在调用init
函数时传递了错误的内容。传递&x[20]
会传递x
数组之外的一个元素的地址,该数组不存在,因此会导致未定义的行为。您要做的只是init(x,y,vx,vy,m)
。添加运算符&
的地址和下标[20]
会使其完全错误。您有很多。您的代码没有任何意义。您应该启用所有警告和调试信息,并使用调试器。
c[i] = -20 + rand() % 40;