#include
void Print(int *d)
{
int i;
for(i=0;i<10;i++)
{
printf("%d",*(d+i));
}
}
void De(int *b,int c)
{
int i;int min=b[0];int max=b[9];
for(i=1;iif(*(b+i)min=*(b+i);
}
for(i=1;iif(*(b+i)>max) max=*(b+i);
}
}
int main()
{
int i;
int a[10];
int *p;
p=a;
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
De(p,10);
Print(p);
return 0;
}**@**
数组a[10]没有初始化
#include <stdio.h>
void Print(int *d)
{
int i;
for(i = 0; i < 10; i++)
{
printf("%d ", *(d + i)); // 添加一个空格便于区分每个元素
}
printf("\n"); // 换行便于输出多组测试数据
}
void De(int *b, int c)
{
int i, temp, min = b[0], max = b[0]; // 初始化最小值和最大值为数组第一个元素
int min_index = 0, max_index = 0; // 记录最小值和最大值的下标
for(i = 1; i < c; i++)
{
if(*(b + i) < min)
{
min = *(b + i);
min_index = i;
}
if(*(b + i) > max)
{
max = *(b + i);
max_index = i;
}
}
// 将最小值放到第一位
temp = b[0];
b[0] = min;
b[min_index] = temp;
// 将最大值放到最后一位
temp = b[c - 1];
b[c - 1] = max;
b[max_index] = temp;
}
int main()
{
int i;
int a[10];
int *p;
p = a;
while(1) // 添加一个循环,可以输入多组测试数据
{
printf("请输入10个整数:\n");
for(i = 0; i < 10; i++)
{
scanf("%d", &a[i]);
}
De(p, 10);
printf("处理后的数组:");
Print(p);
}
return 0;
}
你这函数只是在求最大最小值,可根本就没有进行数组元素值的交换啊
而且函数也有问题,如果b[0]恰好是最大值呢?或者b[9]是最小值呢?你连比较都没比较啊
把相关内容改成这样看看
void Print(int d[])
void De(int b[],int c)
De(a,10);
Print(a);
修改如下,改动处见注释,供参考:
#include<stdio.h>
void Print(int* d)
{
int i;
for (i = 0; i < 10; i++)
{
printf(" %d", *(d + i));
}
}
void De(int* b, int c)
{
int i, min = 0, max = 0, t; // 修改
//int min = b[0]; int max = b[9];
for (i = 1; i < c; i++)
{
if (*(b + i) < *(b + min)) min = i; //if(*(b + i) < min) min = *(b + i);
//}
//for (i = 1; i < c - 1; i++)
//{
if (*(b + i) > *(b + max)) max = i; // if(*(b+i)>max) max=*(b+i);
}
t = *(b + min); *(b + min) = *b; *b = t; //将最小值放第一位
if (max == 0) max = min; //如果最大值在第一位,则已被交换到 min 位置
t = *(b + max); *(b + max) = *(b + c - 1); *(b + c - 1) = t;//将最大值放最后一位
}
int main()
{
int i;
int a[10];
int* p;
p = a;
for (i = 0; i < 10; i++)
{
scanf("%d", &a[i]);
}
De(p, 10);
Print(p);
return 0;
}
4、 对于函数void f(int x);
,下面调用正确的是( )
A: int y=f(9);
B: f(9);
C: f(f(9));
D: x=f();
🙈同学们觉得答案是什么呢
🙉答案是 B 啦~
🙊 如果同学们有疑惑,且听我细细分析呀
本题主要考点:“正确调用函数的理解和应用”
💡解题关键:
返回值
和参数
进行正确调用即可➡️ 让我们一起来解题吧~
1️⃣函数的返回值为void
,所以调用的时候我们不需要去接收函数的返回值
2️⃣函数传参需要一个整型
,所以C
中的f(9)
不能作为参数,因为这个传的是f(9)
的返回值,即void
,不符合传int
✨综上:
B
啦~