初学者C程序,可查找三星s5电话的最低,最高和平均评分。评分是1-10。
我是一个初学者,所以认为这看起来非常简单,但我总是得到Min,Max和Mean的错误答案。我认为我的尝试是有道理的,但我不明白为什么结果没有正确返回。请帮忙。
//Assignment #1 Structured Programming
//Samsung Galaxy S5 Rating program
#include <stdio.h>
#include <conio.h>
#define SIZE 3
//Function to calculate average rating
int mean(const int rating[]);
int max(const int rating[]);
int min(const int rating[]);
int main (void)
{
int response[SIZE];
int count;
for (count=0;count<SIZE;count++)
{
printf ("Please enter your rating for the Samsung Galaxy S5 %d\n",count);
scanf ("%d",&response[count]);
}
for (count=0;count<=SIZE;count++)
{
printf("%d\n",response[count]);
}
mean(response);
max(response);
min(response);
getch();
return 0;
}
int mean(const int rating[])
{
int average;
int x;//counter for totalling array elements
int total=0;//variable to hould the sum of the array elements
for (x=0;x<SIZE;x++)
{
total+=rating[x];
}
average=total/SIZE;
printf ("The average rating for Samsung Galaxy S5 is %d\n",average);
}
int max(const int rating[])
{
int max;
int x;
for (x=0;x<=SIZE;x++)
{
if (rating[x]>rating[x+1])
{
max=rating[x];
}
}
printf ("Max rating for Samsung Galaxy S5 is %d\n",max);
}
int min(const int rating[])
{
int min;
int x;
for (x=0;x<=SIZE;x++)
{
if (rating[x]<rating[x+1])
{
min=rating[x];
}
}
printf ("Min rating for Samsung Galaxy S5 is %d\n",min);
}
答案 0 :(得分:3)
这是正确的书面程序
//Samsung Galaxy S5 Rating program
#include <stdio.h>
#define SIZE 3
//Function to calculate average rating
void get_mean(const int rating[])
{
float average;
int x;//counter for totalling array elements
int total=0;//variable to hould the sum of the array elements
for (x=0;x<SIZE;x++)
{
total+=rating[x];
}
average=(float)total/SIZE;
printf ("The average rating for Samsung Galaxy S5 is %.2f\n",average);
}
void get_max(int rating[])
{
int maximal = rating[0];
int x;
for (x=0; x<SIZE; x++)
{
if (rating[x]>maximal)
{
maximal = rating[x];
}
}
printf ("Max rating for Samsung Galaxy S5 is %d\n",maximal);
}
void get_min(int rating[])
{
int minimal=rating[0];
int x;
for (x=0;x<SIZE;x++)
{
if (rating[x]<minimal)
{
minimal=rating[x];
}
}
printf ("Min rating for Samsung Galaxy S5 is %d\n",minimal);
}
int main (void)
{
int response[SIZE];
int count;
for (count = 0; count < SIZE; count++)
{
printf ("Please enter your rating for the Samsung Galaxy S5 %d\n",count+1);
scanf ("%d",&response[count]);
}
for (count = 0; count < SIZE; count++)
{
printf("%d\n",response[count]);
}
get_mean(response);
get_max(response);
get_min(response);
return 0;
}
答案 1 :(得分:2)
你的错误对于新学习者来说很常见。你的问题在于语句和初始化变量。有时循环迭代4次,有时3次。
在循环中你需要记住一些事情 -
public interface IMiddleware
{
// No syntax for this
Task Invoke(... any);
}
// No syntax for this either, unless you know in advance what the parameters will be
await serviceProvider.InjectAndInvoke(middleware.Invoke);
时,循环实际迭代4次for(i=0;i<=3;i++)
和max()
的逻辑不正确更改行在行尾标记为已更改
min()