我真的是个新手。我从来没有做过这样的事情,所以我对这段代码有问题。我得到了一个模板,可以像这样在不同的函数中编写代码,尽管我自己添加了findPos函数。我收到了"assignment makes from pointer without a cast“的警告,而且我的max、min、sum、avg以及max和min的位置显然都不是正确的数字。我只是想知道有没有人能把我引向正确的方向。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int findMin(int arr[], int size);
int findMax(int arr[], int size);
int findSum(int arr[], int size);
int findPos(int arr[], int size);
int size;
int i;
int max;
int min;
int avg;
int sum;
int pos;
int main()
{
srand(time(0));
printf("Enter an integer: ");
scanf("%d", &size);
int arr[size];
max = findMax;
min = findMin;
pos = findPos;
sum = findSum;
avg = sum / size;
printf("max:%7d\tpos:%d\t\n", max, pos);
printf("min:%7d\tpos:%d\t\n", min, pos);
printf("avg:%7d\n", avg);
printf("sum:%7d\n", sum);
printf("\n");
printf(" Pos : Val\n");
printf("-------------\n");
for (i = 0; i < size; i++) {
arr[i] = (rand() % 1001);
printf("%4d :%6d\n", i, arr[i]);
}
return 0;
}
int findMin(int arr[], int size)
{
min = arr[0];
for (i = 0; i < size; i++) {
if (arr[i] < min) {
min = arr[i];
}
}
return min;
}
int findMax(int arr[], int size)
{
max = arr[0];
for (i = 0; i < size; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
}
int findSum(int arr[], int size)
{
sum = 0;
for (i = 0; i < size; i++) {
sum = sum + arr[i];
}
return sum;
}
int findPos(int arr[], int size)
{
for (i = 0; i < size; i++) {
pos = i;
}
return pos;
}发布于 2021-01-21 10:23:15
max = findMax;
min = findMin;
pos = findPos;
sum = findSum;将函数指针而不是返回值赋值给整型变量。你必须做一些像max = findMax(arr, size)这样的事情。同样,在这种情况下,您应该在调用arr之前为其赋值。
发布于 2021-01-21 15:08:50
代码中有几个问题。让我遍历相同的
在创建的阵列中填充数据
由于数据必须在执行任何操作之前呈现所创建的数组,
printf("\n");
printf(" Pos : Val\n");
printf("-------------\n");
for (i = 0; i < size; i++) {
arr[i] = (rand() % 1001);
printf("%4d :%6d\n", i, arr[i]);
}此代码段应重新排序,并移动到函数调用的上方,紧跟在int arr[size];之后
函数调用
您的所有函数(即findMax、findMin、findPos、findSum )都需要两个参数
created
读取的大小值
假设您希望将函数的返回值存储在主int变量max、min、pos、sum、avg中
这些语句
max = findMax;
min = findMin;
pos = findPos;
sum = findSum;应替换为函数调用,如
max = findMax(arr, size);
min = findMin(arr, size);
pos = findPos(arr, size);
sum = findSum(arr, size);最终的主代码将是
int main()
{
srand(time(0));
printf("Enter an integer: ");
scanf("%d", &size);
int arr[size];
printf("\n");
printf(" Pos : Val\n");
printf("-------------\n");
for (i = 0; i < size; i++) {
arr[i] = (rand() % 1001);
printf("%4d :%6d\n", i, arr[i]);
}
max = findMax(arr, size);
min = findMin(arr, size);
pos = findPos(arr, size);
sum = findSum(arr, size);
avg = sum / size;
printf("max:%7d\tpos:%d\t\n", max, pos);
printf("min:%7d\tpos:%d\t\n", min, pos);
printf("avg:%7d\n", avg);
printf("sum:%7d\n", sum);
return 0;
}https://stackoverflow.com/questions/65819727
复制相似问题