给数组输入若干大于等于0的整数,用负数作为输入结束标志,调用函数输出数组中的数据。不修改以下代码,只需补充完善后两个函数。 #define M 100 #include "stdio.h" void arrout(int *,int); int arrin(int *); void main() { int s[M],k; //k用来记录数组s中元素个数 k=arrin(s); arrout(s,k); } int arrin(int *a) { } void arrout(int *a, int n) { }
时间: 2023-12-12 11:02:05 浏览: 103
完善后的代码如下:
```c
#include "stdio.h"
#define M 100
int arrin(int *a);
void arrout(int *a, int n);
void main() {
int s[M],k;
k=arrin(s);
arrout(s,k);
}
int arrin(int *a) {
int i = 0, input;
do {
scanf("%d", &input);
if (input >= 0) {
a[i] = input;
i++;
}
} while (input >= 0 && i < M);
return i;
}
void arrout(int *a, int n) {
for (int i = 0; i < n; i++) {
printf("%d ", a[i]);
}
}
```
arrin函数的作用是输入数组中的元素,并返回数组中实际存储的元素个数。循环读取输入,如果输入值大于等于0,就将其存入数组中,同时i加1;否则跳出循环。最后返回i作为实际存储的元素个数。
arrout函数的作用是输出数组中的元素。循环遍历数组,依次输出每个元素。
相关问题
下面代码中,main函数三次调用函数fun,每次输入一组正整数,最后输出全部数据的最大值,最小值,总和,平均值。 定义函数fun,完成一组数据处理,每组数组个数不确定,以负数结束输入,空格分隔。
### 回答1:
下面的代码中,main函数调用了三次fun函数,每次输入一组正整数,最后输出所有数据的最大值、最小值、总和和平均值。fun函数用来处理一组数据,每组数据的个数是不确定的,以负数结束输入,数字之间用空格隔开。
### 回答2:
该程序主要是要通过调用函数fun来完成输入和处理数据的功能,然后在main函数中计算所有数据的最大值、最小值、总和、平均值。
首先我们来看一下函数fun的定义,根据题目描述,函数fun需要完成的功能有两个:
1. 输入一组正整数,以负数结束输入。
2. 处理输入的数据,包括计算最大值、最小值、总和和个数。
因此,可以将函数fun分为两个部分进行编写。首先是输入数据的部分,由于每组数据的个数不确定,我们需要使用循环来实现连续输入,直到输入负数为止。代码如下所示:
```
void fun(){
int num, max, min, sum, count;
max = INT_MIN;
min = INT_MAX;
sum = 0;
count = 0;
while(true){
cin >> num;
if(num < 0){
break;
}
max = num > max ? num : max;
min = num < min ? num : min;
sum += num;
count++;
}
// 处理完成后输出最大值、最小值、总和和平均值
cout << "Max: " << max << endl;
cout << "Min: " << min << endl;
cout << "Sum: " << sum << endl;
cout << "Avg: " << (double)sum / count << endl;
}
```
我们可以看到,在函数fun中,我们首先定义4个变量来存储最大值、最小值、总和和个数。然后使用while循环连续输入数值,直到输入负数为止。在输入过程中,我们需要实时更新最大值、最小值、总和和个数。最后,在循环结束后,根据已经处理好的数值,输出最大值、最小值、总和和平均值。
接下来,在main函数中,我们需要调用函数fun三次来依次输入三组数据,并计算所有数据的最大值、最小值、总和和平均值。因此,代码如下所示:
```
int main(){
for(int i = 0; i < 3; i++){
cout << "Please input data group " << i + 1 << ": ";
fun();
}
return 0;
}
```
我们可以看到,在main函数中,我们使用for循环调用函数fun三次,并在每次调用之前打印提示信息,以方便用户输入数据。在三次调用结束后,程序结束运行。
综上所述,该程序主要是通过调用函数fun来完成输入和处理数据的功能,然后在main函数中计算所有数据的最大值、最小值、总和、平均值。在实际编写过程中,我们需要注意输入数据的方式和格式,以及处理数据的精度和范围,以保证程序的正常运行和输出正确结果。
### 回答3:
题目中要求我们编写一个程序,通过三次调用函数fun,输入一组正整数,并输出这些数据的最大值、最小值、总和和平均值。
在编写程序之前,我们需要明确一些知识点。
1. 函数的定义和调用
在程序中,函数将一个任务(或一组任务)封装在内,并在代码的不同部分执行这个任务。函数有自己的参数和返回值。在这个程序中,我们将定义函数fun,它将一组数据处理并返回最大值、最小值、总和和平均值。
2. 循环结构
循环结构是一个在一个程序中重复执行给定的指令序列的结构。在这个程序中,我们将用循环结构来从用户那里接收输入,并在遇到负数时停止输入。
3. 比较运算符
比较运算符用于比较两个值并返回一个布尔值(真或假)。我们将使用比较运算符来检查输入的值是否为负数。
根据以上知识点,下面是实现的代码:
```python
#include <stdio.h>
double fun() { // 定义函数fun,返回值为double类型
double max = 0, min = 0, sum = 0, num = 0, n = 0;
// 定义变量max、min、sum、num和n
do {
scanf("%lf", &n); // 接收用户输入
if (n >= 0) {
num++; // 每输入一个数据,num加1
sum += n; // 累加所有数据
if (num == 1) {
max = min = n; // 第一个数据即为最大值和最小值
}
else {
if (n > max) {
max = n; // 更新最大值
}
else if (n < min) {
min = n; // 更新最小值
}
}
}
} while (n >= 0); // 当输入负数时停止输入
if(num == 0) { // 如果没有输入任何数据,则返回0
return 0;
}
return max, min, sum, sum / num; // 返回最大值、最小值、总和和平均值
}
int main() {
double number1, number2, number3, max, min, sum, average;
// 定义变量number1、number2、number3、max、min、sum和average
printf("请输入第一组数字:");
max = min = sum = 0; // 初始化max、min和sum
number1 = fun(); // 调用fun函数,接收第一组数字的结果
max = number1, min = number1, sum = number1;
printf("请输入第二组数字:");
number2=fun(); // 调用fun函数,接收第二组数字的结果
max = number2 > max ? number2 : max; // 取较大值
min = number2 < min ? number2 : min; // 取较小值
sum += number2;
printf("请输入第三组数字:");
number3=fun(); // 调用fun函数,接收第三组数字的结果
max = number3 > max ? number3 : max; // 取较大值
min = number3 < min ? number3 : min; // 取较小值
sum += number3;
average = sum / (number1 + number2 + number3); // 计算平均值
printf("最大值:%lf \n", max);
printf("最小值:%lf \n", min);
printf("总和:%lf \n", sum);
printf("平均值:%lf \n", average);
return 0;
}
```
以上是本题的一个解题思路和一段C语言代码实现,主要是用到循环结构和函数。先定义函数fun,每次输入一组数据时,调用该函数计算出这组数据的最大值、最小值、总和和平均值,再使用这些值计算出全部数据的最大值、最小值、总和和平均值。通过三次调用函数fun,我们可以得到全部数据的最大值、最小值、总和和平均值。
main函数三次调用函数fun,每次输入一组正整数,最后输出全部数据的最大值,最小值,总和,平均值。 定义函数fun,完成一组数据处理,每组数组个数不确定,以负数结束输入,空格分隔。
好的,这是一个关于程序设计的问题,我可以给您解答。以下是程序的实现方法:
```
#include<stdio.h>
void fun(int *max, int *min, int *sum, int *count) {
int num;
scanf("%d", &num);
*max = *min = *sum = num;
*count = 1;
scanf("%d", &num);
while (num > 0) {
*count += 1;
*sum += num;
if (num > *max) *max = num;
if (num < *min) *min = num;
scanf("%d", &num);
}
}
int main() {
int max, min, sum, count;
fun(&max, &min, &sum, &count);
fun(&max, &min, &sum, &count);
fun(&max, &min, &sum, &count);
printf("max=%d,min=%d,sum=%d,avg=%.2f", max, min, sum, (float)sum/count);
return 0;
}
```
程序中定义了函数fun,用于处理一组数据。函数接收四个指针参数:max、min、sum、count,分别表示数据的最大值,最小值,总和和个数。函数内部通过scanf从输入流中读取数据,直到输入负数为止。在处理数据的过程中,同时对max、min、sum、count进行了更新。在主函数中,调用fun三次,分别输入三组数据进行处理,并通过printf输出数据的最大值,最小值,总和和平均值。
希望对您有帮助!如果您还有其他问题,可以随时问我。
阅读全文