【发布时间】:2014-10-29 22:18:43
【问题描述】:
我正在尝试使用自己编写的随机数生成器函数,但我想在 main 函数中调用 rng 并将生成的数字保存到 main 中的两个数组中。我假设我必须将某种指针传递给 rng();让它编辑主要的数组?如何实际格式化该指针?不允许使用字符串或全局数组...
所以我想用一个指针代替 r[i] 以便函数编辑 main 中的数组而不是函数中的数组。
do{
printf("\nthis is the row number\n\n");
for ( i = 0; i < 11; i++){
r[i] = rand()%8;
printf("%d\n", r[i]);
}
printf("\nthis is the column number\n\n");
for ( i = 0; i < 11; i++){
c[i] = rand()%8;
printf("%d\n", c[i]);
}
我希望上面的这一位将它生成的随机数保存到 row[] 并将第二位保存到 main 中的 column[]。
int main (){
int row[11];
int column[11];
rng();
整个代码如下所示
#include <stdio.h>
#include "stdlib.h"
#include "time.h"
int * rng( ){
int x;
int *t;
x=1;
t=&x;
int y;
int *g;
y=1;
g=&y;
static int r[11];
static int c[11];
int i;
int j;
srand(time( NULL ) );
do{
printf("\nthis is the row number\n\n");
for ( i = 0; i < 11; i++){
r[i] = rand()%8;
printf("%d\n", r[i]);
}
printf("\nthis is the column number\n\n");
for ( i = 0; i < 11; i++){
c[i] = rand()%8;
printf("%d\n", c[i]);
}
for (i=0; i<11; i++){
for(j= i+1 ;j<11;j++){
if ((r[i]+1)*(r[i]+1)*(c[i]+1)==(r[j]+1)*(r[j]+1)*(c[j]+1)){
printf("\nOops duplicate number, recalculating\n");
*t=2;
*g=2;
printf("%i", *t);
printf("%i", *g);
}
if (((r[0]+1)*(r[0]+1)*(c[0]+1)!=(r[1]+1)*(r[1]+1)*(c[1]+1))&&
((r[0]+1)*(r[0]+1)*(c[0]+1)!=(r[2]+1)*(r[2]+1)*(c[2]+1))&&
((r[0]+1)*(r[0]+1)*(c[0]+1)!=(r[3]+1)*(r[3]+1)*(c[3]+1))&&
((r[0]+1)*(r[0]+1)*(c[0]+1)!=(r[4]+1)*(r[4]+1)*(c[4]+1))&&
((r[0]+1)*(r[0]+1)*(c[0]+1)!=(r[5]+1)*(r[5]+1)*(c[5]+1))&&
((r[0]+1)*(r[0]+1)*(c[0]+1)!=(r[6]+1)*(r[6]+1)*(c[6]+1))&&
((r[0]+1)*(r[0]+1)*(c[0]+1)!=(r[7]+1)*(r[7]+1)*(c[7]+1))&&
((r[0]+1)*(r[0]+1)*(c[0]+1)!=(r[8]+1)*(r[8]+1)*(c[8]+1))&&
((r[0]+1)*(r[0]+1)*(c[0]+1)!=(r[9]+1)*(r[9]+1)*(c[9]+1))&&
((r[0]+1)*(r[0]+1)*(c[0]+1)!=(r[10]+1)*(r[10]+1)*(c[10]+1))&&
((r[1]+1)*(r[1]+1)*(c[1]+1)!=(r[2]+1)*(r[2]+1)*(c[2]+1))&&
((r[1]+1)*(r[1]+1)*(c[1]+1)!=(r[3]+1)*(r[3]+1)*(c[3]+1))&&
((r[1]+1)*(r[1]+1)*(c[1]+1)!=(r[4]+1)*(r[4]+1)*(c[4]+1))&&
((r[1]+1)*(r[1]+1)*(c[1]+1)!=(r[5]+1)*(r[5]+1)*(c[5]+1))&&
((r[1]+1)*(r[1]+1)*(c[1]+1)!=(r[6]+1)*(r[6]+1)*(c[6]+1))&&
((r[1]+1)*(r[1]+1)*(c[1]+1)!=(r[7]+1)*(r[7]+1)*(c[7]+1))&&
((r[1]+1)*(r[1]+1)*(c[1]+1)!=(r[8]+1)*(r[8]+1)*(c[8]+1))&&
((r[1]+1)*(r[1]+1)*(c[1]+1)!=(r[9]+1)*(r[9]+1)*(c[9]+1))&&
((r[1]+1)*(r[1]+1)*(c[1]+1)!=(r[10]+1)*(r[10]+1)*(c[10]+1))&&
((r[2]+1)*(r[2]+1)*(c[2]+1)!=(r[3]+1)*(r[3]+1)*(c[3]+1))&&
((r[2]+1)*(r[2]+1)*(c[2]+1)!=(r[4]+1)*(r[4]+1)*(c[4]+1))&&
((r[2]+1)*(r[2]+1)*(c[2]+1)!=(r[5]+1)*(r[5]+1)*(c[5]+1))&&
((r[2]+1)*(r[2]+1)*(c[2]+1)!=(r[6]+1)*(r[6]+1)*(c[6]+1))&&
((r[2]+1)*(r[2]+1)*(c[2]+1)!=(r[7]+1)*(r[7]+1)*(c[7]+1))&&
((r[2]+1)*(r[2]+1)*(c[2]+1)!=(r[8]+1)*(r[8]+1)*(c[8]+1))&&
((r[2]+1)*(r[2]+1)*(c[2]+1)!=(r[9]+1)*(r[9]+1)*(c[9]+1))&&
((r[2]+1)*(r[2]+1)*(c[2]+1)!=(r[10]+1)*(r[10]+1)*(c[10]+1))&&
((r[3]+1)*(r[3]+1)*(c[3]+1)!=(r[4]+1)*(r[4]+1)*(c[4]+1))&&
((r[3]+1)*(r[3]+1)*(c[3]+1)!=(r[5]+1)*(r[5]+1)*(c[5]+1))&&
((r[3]+1)*(r[3]+1)*(c[3]+1)!=(r[6]+1)*(r[6]+1)*(c[6]+1))&&
((r[3]+1)*(r[3]+1)*(c[3]+1)!=(r[7]+1)*(r[7]+1)*(c[7]+1))&&
((r[3]+1)*(r[3]+1)*(c[3]+1)!=(r[8]+1)*(r[8]+1)*(c[8]+1))&&
((r[3]+1)*(r[3]+1)*(c[3]+1)!=(r[9]+1)*(r[9]+1)*(c[9]+1))&&
((r[3]+1)*(r[3]+1)*(c[3]+1)!=(r[10]+1)*(r[10]+1)*(c[10]+1))&&
((r[4]+1)*(r[4]+1)*(c[4]+1)!=(r[5]+1)*(r[5]+1)*(c[5]+1))&&
((r[4]+1)*(r[4]+1)*(c[4]+1)!=(r[6]+1)*(r[6]+1)*(c[6]+1))&&
((r[4]+1)*(r[4]+1)*(c[4]+1)!=(r[7]+1)*(r[7]+1)*(c[7]+1))&&
((r[4]+1)*(r[4]+1)*(c[4]+1)!=(r[8]+1)*(r[8]+1)*(c[8]+1))&&
((r[4]+1)*(r[4]+1)*(c[4]+1)!=(r[9]+1)*(r[9]+1)*(c[9]+1))&&
((r[4]+1)*(r[4]+1)*(c[4]+1)!=(r[10]+1)*(r[10]+1)*(c[10]+1))&&
((r[5]+1)*(r[5]+1)*(c[5]+1)!=(r[6]+1)*(r[6]+1)*(c[6]+1))&&
((r[5]+1)*(r[5]+1)*(c[5]+1)!=(r[7]+1)*(r[7]+1)*(c[7]+1))&&
((r[5]+1)*(r[5]+1)*(c[5]+1)!=(r[8]+1)*(r[8]+1)*(c[8]+1))&&
((r[5]+1)*(r[5]+1)*(c[5]+1)!=(r[9]+1)*(r[9]+1)*(c[9]+1))&&
((r[5]+1)*(r[5]+1)*(c[5]+1)!=(r[10]+1)*(r[10]+1)*(c[10]+1))&&
((r[6]+1)*(r[6]+1)*(c[6]+1)!=(r[7]+1)*(r[7]+1)*(c[7]+1))&&
((r[6]+1)*(r[6]+1)*(c[6]+1)!=(r[8]+1)*(r[8]+1)*(c[8]+1))&&
((r[6]+1)*(r[6]+1)*(c[6]+1)!=(r[9]+1)*(r[9]+1)*(c[9]+1))&&
((r[6]+1)*(r[6]+1)*(c[6]+1)!=(r[10]+1)*(r[10]+1)*(c[10]+1))&&
((r[7]+1)*(r[7]+1)*(c[7]+1)!=(r[8]+1)*(r[8]+1)*(c[8]+1))&&
((r[7]+1)*(r[7]+1)*(c[7]+1)!=(r[9]+1)*(r[9]+1)*(c[9]+1))&&
((r[7]+1)*(r[7]+1)*(c[7]+1)!=(r[10]+1)*(r[10]+1)*(c[10]+1))&&
((r[8]+1)*(r[8]+1)*(c[8]+1)!=(r[9]+1)*(r[9]+1)*(c[9]+1))&&
((r[8]+1)*(r[8]+1)*(c[8]+1)!=(r[10]+1)*(r[10]+1)*(c[10]+1))&&
((r[9]+1)*(r[9]+1)*(c[9]+1)!=(r[10]+1)*(r[10]+1)*(c[10]+1))){
printf("\nno errors\n");
*t=2;
*g=1;
printf("%i", *t);
printf("%i", *g);
break;
}
}
}
}while(*t==*g);
}
int main (){
int map[8][8];
int row[11];
int column[11];
//int *p;
int i;
// p = row[];
rng(row, column);
【问题讨论】:
-
MCVE 会很有帮助。
-
同意,很抱歉我没有时间这样做。