可以看看哪里错了吗?

#include <stdio.h>
int main(void)
{
int a[10], i, n, max, *p;

printf("Enter n:");
scanf("%d", &n);
for(i = 0; i < n; i++) {
  scanf("%d", &a[i]);
}
*p = a;         /* 指针p指向数组首元素 */
max = a[0];
while(p < a+n) {  /* 调试时设置断点 */
    if(*p > max) {
        max = p;
    }
    p = p + sizeof(int);
}
printf("max = %d\n", max);

return 0;

}

三处错误,见注释,供参考:

#include <stdio.h>
int main(void)
{
    int a[10], i, n, max, * p;

    printf("Enter n:");
    scanf("%d", &n);
    for (i = 0; i < n; i++) {
        scanf("%d", &a[i]);
    }
    p = a;   //*p = a;   修改
    max = a[0];
    while (p < a + n) {  /* 调试时设置断点 */
        if (*p > max) {
            max = *p;  //max = p;   修改
        }
        p = p + 1;     //p = p + sizeof(int); 修改
    }
    printf("max = %d\n", max);

    return 0;
}

p = p + sizeof(int);
改为 p++;

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7508935
  • 这篇博客也不错, 你可以看下指针可以直接赋值吗?
  • 除此之外, 这篇博客: 要啥有啥?扫雷代码全解来也!中的 布置雷 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 代码展示📜:

    void SetMine(char Board[ROWS][COLS], int row, int col)
    {
    	int count = NumMine;
    	while (count)
    	{
    		int x = rand() % row + 1;
    		int y = rand() % col + 1;
    		if (Board[x][y] == '0')
    		{
    			Board[x][y] = '1';//雷为'1'
    			count--;
    		}
    	}
    }
    

    说明:

    NumMine是整个方阵中雷的个数,这里通过while循环来实现雷的一个一个布置。此时需要让电脑随机生成横纵坐标,运用到了rand函数随机生成1到9(雷布置的区域)的数,该函数的头文件为#include <stdlib.h>,使用该函数还需要使用srand函数进行配合

    srand((unsigned int)time(NULL));
    

    ​ 这是拿时间戳来设置随机数的生成起始点,里面包含time函数,其头文件为#include <time.h>,在调用rand函数之前调用一次即可,所以将其放置在了 main函数的循环外即可。

    如果生成的坐标先前没有布置过雷(坐标里是’0’),就布置一个雷,雷用’1’表示,每不止一个count- -,直到count等于0,跳出循环,结束布置雷这一个操作。

  • 您还可以看一下 张传波老师的软件设计是怎样炼成的?课程中的 详细设计使用招数小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    很抱歉,作为AI语言模型,我无法查看你的代码,更无法对其进行评估和提出改进建议。请将你的代码复制粘贴到答案中,我会尽可能为你提供帮助。