Header.h 文件:
#pragma once
#include <stdlib.h>
#include <stdio.h>
float masRR(); //Заполнение массива mas (как автоматически, так вручную), n - кол-во эл в массиве
float masRR () {
float mas[100];
int n;
printf("Vvedite kol-vo elemtntov ");
if (scanf_s("%d", &n) != 1) {
printf("Error"); return 0;
}
int fl;
printf("Ecli vi hotite vveti massiv vrythnyu - vvedite 0, esli hotite avto vvod - 1\n ");
scanf_s("%d", &fl);
if (fl == 0) {
for (int i = 0; i < n; i++) {
printf("%d element = ", i + 1);
scanf_s("%f", &mas[i]);
}
}
else {
for (int i = 0, flZnak = 0; i < n; i++) {
float znah_i = 0;
znah_i = rand() % 200;
flZnak = rand() % 2;
if (flZnak == 0)
mas[i] = znah_i;
else
mas[i] = 0 - znah_i;
}
}
int nn = &n;
return nn; //Хочу использовать в main n, mas
}
实验室文件 3.1
#include "Header.h"
int main() {
float masRR ();
int n = *nn; //Без понятия как... Нужно чтобы из функции жил как и массив, так и n (кол-во эл массива)
//Дальше идет само задание, если тело функции float masRR () описывать вместо строчек выше - работает корректно
for (int i = 0; i < n; i++) {
printf("%d elemetn = %2.f\n", i+1, mas[i]);
}
int min = mas[0];
for (int i = 0; i < n; i++) {
if (min > mas[i])
min = mas[i];
}
printf("\nMin element = %d\n", min);
int firstElPol;
for (int i = 0; i < n; i++) {
if (mas[i] > 0) { firstElPol = i; break; }
}
int lastElPol;
for (int i = n; i > 0; i--) {
if (mas[i] > 0) { lastElPol = i; break; }
}
int sum = 0;
if (n > 2) {
for (int i = firstElPol + 1; i <= lastElPol - 1; i++) {
sum += mas[i];
}
printf("Sum megdy ferst and last pologitelnimi elementsmi = %d\n", sum);
}
return 0;
}
为方便起见,您在 main 中创建一个结构并将其作为指向函数的指针传递。