scanf("%d", &a[i]);
这里%d后面不要空格
以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:
你的程序可能出现了缓冲区溢出的情况,导致程序崩溃或输出乱码。为了解决这个问题,你可以使用fgets函数代替scanf函数来读取用户输入的数字,同时使用sscanf函数将读取的字符串转换为数字,并将其存入数组中。具体代码如下:
#include <stdio.h>
#define MAX_NUMS 10
int main()
{
int nums[MAX_NUMS];
char input[20];
for (int i = 0; i < MAX_NUMS; i++) {
printf("请输入第%d个数字:", i+1);
fgets(input, sizeof(input), stdin);
if (sscanf(input, "%d", &nums[i]) != 1) {
printf("输入的不是数字,请重新输入!\n");
i--;
}
}
printf("输入的数字为:");
for (int i = 0; i < MAX_NUMS; i++) {
printf("%d ", nums[i]);
}
printf("\n");
return 0;
}
在这个代码中,我们使用fgets函数来读取用户输入的数字,并将其存储在一个字符数组input中。然后,我们使用sscanf函数将input中的字符串转换为数字,并将其存储在数组nums中。如果用户输入的不是数字,则会提示用户重新输入。最后,我们输出输入的数字。
希望这个思路能够帮助你解决问题。
代码如下:
#include"pch.h"
#include<stdio.h>
void SWAP(int*p1, int*p2);
int main()
{
int a[10];
for (int i = 0; i < 10; i++)
{
scanf_s("%d", &a[i]);
}
int*min = &a[0];
int*max = &a[0];
for (int i = 0; i < 10; i++)
{
if (a[i]>*max)
{
max = &a[i];
}
if (a[i]<*min)
{
min = &a[i];
}
}
printf("%d %d\n", *min, *max);
printf("交换前地址%p,%p\n", min, max);
SWAP(min,max);
return 0;
}
void SWAP(int*p1,int*p2)
{
int*temp;
temp = p2;
p2 = p1;
p1 = temp;
printf("%d %d\n", *p1, *p2);
printf("交换后地址%p,%p\n",p1, p2);
}
结果如下: