【发布时间】:2016-06-24 18:08:50
【问题描述】:
我有一个现有的程序,可以找到用户输入数字的最高、最低和平均值。但是,我不是在尝试进行这些计算并将它们放入单独的函数中。我的问题是我不明白如何将这些共享变量的计算以及其他内容放入它们自己的单独函数中。下面是我的代码,底部的 cmets 是我尝试过但失败的代码。
工作代码:
#include <stdio.h>
int main(){
int grades [100]; /*variables defining the array, the iterator, and input; which lets us take the input and validate before passing to the array*/
int i = 0;
int small, big, input;
printf("Enter a series of grades. When done, enter any number above 100.\n\n");
while (i <= 100) { //while loop to set maximum for array
printf("Enter grade:");
if (scanf("%d", &input) == 1) {
if (input >= 0 && input <=100) { //validate and impose constraints on grade values
grades[i] = input; //if good, add to array
i++;
}
else {
printf("\n\nExiting entry.\n");
printf("\n\nGrades entered:\n\n");
break; //exiting loop
}
}
}
int x, y;
big = small = grades[0];
for (y = 0; y < i; y++) {
if (grades[y] > big) {
big = grades[y];
}
else if (grades[y] < small) {
small = grades[y];
}
}
int sum = 0, avg = 0;
for (y = 0; y < i; y++) {
sum += grades[y];
}
avg = (double) sum / i; //formula for determining average
printf("Highest number : %d\n", big);
printf("Smallest number: %d\n", small);
printf("Average: %d\n", avg);
return 0;
}
故障代码:
int x, y;
for (x = 0; x < i; x++) {
printf("Grade: %d\n", grades[x]); //print array
}
big = small = grades[0];
for (y = 0; y < i; y++) { //for loop
large(grades,y);
smallest(grades,y);
}
int sum = 0, avg = 0;
for (y = 0; y < i; y++) { //for loop for determining sum of grades
sum += grades[y];
}
avg = (double) sum / i; //formula for determining average
printf("Highest number : %d\n", big);
printf("Smallest number: %d\n", small);
printf("Average: %d\n", avg);
return 0;
}
void large(int grades[], int y);
void smallest(int grades[], int y);
【问题讨论】:
-
传递的参数类型和有使用不正确,比如
grades是int,所以grades[y]会报错。