我是C的新手,正在做家庭作业问题。我们需要编写一个程序,从用户那里获取10个数字,然后输出平均数,最高数和最低数。我看起来像正确的代码,但输出只是关闭。这是我到目前为止所拥有的
#include <stdio.h>
int main() {
int num1, num2, num3, num4, num5, num6, num7, num8, num9, num10;
printf("Enter 10 grades sperated by commas, then press enter: ");
scanf("%d,%d,%d,%d,%d,%d,%d,%d,%d,%d",num1,num2,num3,num4,num5,num6,num7,num8,&num9,&num10);getchar();
int numbers[] = {num1,num2,num3,num4,num5,num6,num7,num8,num9,num10};
int avg = (num1+num2+num3+num4+num5+num6+num7+num8+num9+num10)/10;
printf("The average is: %d",avg);
int high = num1;
for(int i=0; i<10; i++) {
if (numbers[i] > high) {
high = numbers[i];
}
}
printf("The highest grade is: %d",high);
int low = num1;
for(int i=0; i<10; i++) {
if (numbers[i] < low) {
low = numbers[i];
}
}
printf("The lowest number is: %d",low);
return 0;
}
如果有人能给我一些洞察我做错的事情,我会非常感激。谢谢!
答案 0 :(得分:3)
在致电scanf
时,您没有采用每个numX
的地址。将num9
和num10
全部传递给scanf
时,您只需使用scanf("%d,%d,%d,%d,%d,%d,%d,%d,%d,%d",&num1,&num2,&num3,&num4,&num5,&num6,&num7,&num8,&num9,&num10);
和&
的地址。
你想要的是:
scanf
在C中,numX
运算符为您提供变量的地址(也称为指针)。 {{1}}函数希望您将指针传递给变量,因此它可以修改实际变量。
另外,为了使您的代码不那么笨拙,您可能需要考虑删除所有{{1}}个变量,然后直接读入输入数组。
答案 1 :(得分:0)
请阅读this manual并回答:
int x;
x的类型是什么?怎么样&amp; x?scanf("%d", &num10);
成功读取值?答案 2 :(得分:0)
首先,我会专注于分离问题。创建一个读取输入的函数,另一个返回最小值的函数,另一个返回最大值的函数,后跟一个返回平均值的函数。此外,我可能会考虑使用数组来收集您尝试存储的所有数据,而不是声明大量的变量,从而避免所有输入。那么让我们对这个数组函数进行原型设计:
<强>原型:强>
int* get_numbers(int* size); // should return a pointer to that array
<强>实施强>
int* get_numbers(int* size)
{
int* numbers = NULL;
// collect data...
return numbers;
}