查错#include <stdio.h> #include <stdlib.h> #include <time.h> int Random() { int r; srand(rand()+time(NULL)); r=rand()%4+1; return r; }//随机数生成 int* Jud(const char map[][10],int x,int y) { static int j[4]={1,1,1,1}; if(map[x][y-1]!='*'||y==0) j[0]=0;//left if(map[x][y+1]!='*'||y==9) j[1]=0;//right if(map[x-1][y]!='*'||x==0) j[2]=0;//up if(map[x+1][y]!='*'||x==9) j[3]=0;//down return j; }//执行判断 void Print(char map[][10]) { for(int i=0;i<10;i++) { for(int j=0;j<10;j++) printf("%c ",map[i][j]); printf("\n"); } }//输出地图 int main() { char map[10][10]; int i,j,m;//x接受随机值 for(i=0;i<10;i++) { for(j=0;j<10;j++) map[i][j]='*'; }//初始化 map[0][0]='A';//第一个是A //Print(map); int x=0,y=0;//记录坐标 int end=1;//标志结束 char c='A'; while(end!=0||c!='Z') { int* j; j=Jud(map,x,y); while(1) { int m=Random(); if(!j[0]&&!j[1]&&!j[2]&&!j[3]) end=0; break; if(!j[m-1]) continue; else break; } switch(m) { case 1: map[x][--y]=c++; break; case 2: map[x][++y]=c++; break; case 3: map[--x][y]=c++; break; case 4: map[++x][y]=c++; break; } } Print(map); return 0; }
时间: 2024-02-01 16:04:07 浏览: 31
在代码中,有一个问题需要修正:
1. 在 while 循环中,判断语句的括号不正确,导致程序无法正常结束,应该改为如下代码:
```
while (end && (j[0] || j[1] || j[2] || j[3])) {
int* j;
j = Jud(map, x, y);
while (1) {
int m = Random();
if (!j[0] && !j[1] && !j[2] && !j[3]) {
end = 0;
break;
}
if (!j[m - 1]) {
continue;
}
else {
break;
}
}
switch (m) {
case 1:
map[x][--y] = c++;
break;
case 2:
map[x][++y] = c++;
break;
case 3:
map[--x][y] = c++;
break;
case 4:
map[++x][y] = c++;
break;
}
}
```
修改后的代码如下:
相关问题
/*通过数组名引用数组元素*/ #include<stdio.h> #include<stdlib.h> #include<time.h>//引入头文件 int main() { int i,a[10]; strand(time(0));//改变随机数发生器的种子 printf("The passing random numbers endows with a value for several:\n"); for(i=0;i<10;i++) *(a+i)=rand()%90+10;//随机生成2位的数字赋给数组元素 for(i=0;i<10;i++) printf("a[%d]=%d\n",i,*(a+i)); printf("\n"); return 0; } 哪里有错
这段代码中有一个错误。`strand`函数应该是`rand`函数,因为`strand`函数并不是C/C++标准库中的函数,而是可能是代码中定义的一个函数或者是笔误。正确的代码应该是:
```
/*通过数组名引用数组元素*/
#include<stdio.h>
#include<stdlib.h>
#include<time.h>//引入头文件
int main()
{
int i,a[10];
srand(time(0));//改变随机数发生器的种子
printf("The passing random numbers endows with a value for several:\n");
for(i=0;i<10;i++)
*(a+i)=rand()%90+10;//随机生成2位的数字赋给数组元素
for(i=0;i<10;i++)
printf("a[%d]=%d\n",i,*(a+i));
printf("\n");
return 0;
}
```
注意到`srand`函数应该是声明在头文件`<stdlib.h>`中的。
编写代码要求:在main中调用希尔函数 #include <stdio.h> #include <stdlib.h> #include <time.h> #define TRUE 1 #define FALSE 0 #define SIZE 20 //#define SIZE 100000 //以随机数的方式初始化数组 void Initarray_random(int data[],int length) { int i; srand((unsigned)time(NULL)); for(i=1;i<=SIZE; i++) data[i] = rand() % SIZE; } //输出数组中的各个数据的值 void Printarray(int data[],int length) { int i; for(i=1;i<=length; i++) printf("%d ",data[i]); printf("\n"); } //希尔排序 void ShellSort(int r[], int length, int delt[], int n) { int i, j, k, gap, temp; for(k=0; k<n; ++k) { gap = delt[k]; for(i=gap; i<length; ++i) { temp = r[i]; for(j=i-gap; j>=0 && r[j]>temp; j-=gap) { r[j+gap] = r[j]; } r[j+gap] = temp; } } } #include <stdio.h> #include "sort.h" #include<iostream> using namespace std; int main() { int *data,i; int delta[3]={4,2,1}; data=(int * )malloc((SIZE+1)*sizeof(int)); Initarray_random(data,SIZE);//以随机数方式初始化数组 cout << "随机数组为:"; Printarray(data,SIZE); //输出数组中的值 free(data); return 0; }
好的,这是您的要求,以下是可以调用希尔函数的完整代码:
sort.h文件:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define TRUE 1
#define FALSE 0
#define SIZE 20
//#define SIZE 100000
//以随机数的方式初始化数组
void Initarray_random(int data[],int length) {
int i;
srand((unsigned)time(NULL));
for(i=1;i<=SIZE; i++)
data[i] = rand() % SIZE;
}
//输出数组中的各个数据的值
void Printarray(int data[],int length) {
int i;
for(i=1;i<=length; i++)
printf("%d ",data[i]);
printf("\n");
}
//希尔排序
void ShellSort(int r[], int length, int delt[], int n) {
int i, j, k, gap, temp;
for(k=0; k<n; ++k) {
gap = delt[k];
for(i=gap; i<length; ++i) {
temp = r[i];
for(j=i-gap; j>=0 && r[j]>temp; j-=gap) {
r[j+gap] = r[j];
}
r[j+gap] = temp;
}
}
}
main.cpp文件:
#include <stdio.h>
#include "sort.h"
#include<iostream>
using namespace std;
int main() {
int *data,i;
int delta[3]={4,2,1};
data=(int * )malloc((SIZE+1)*sizeof(int));
Initarray_random(data,SIZE);//以随机数方式初始化数组
cout << "随机数组为:";
Printarray(data,SIZE);//输出数组中的值
ShellSort(data, SIZE, delta, 3); // 调用希尔排序函数
cout << "排序后的数组为:";
Printarray(data, SIZE);
free(data);
return 0;
}
相关推荐
![application/x-gzip](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)