数,总和,平均,最小,最大

时间:2015-09-18 05:52:03

标签: c algorithm

我们被分配编写一个程序,该程序从键盘读取整数列表并创建以下信息:整数的数量,整数的和和平均值,最小和最大整数。谢谢。

输入应为:"输入数字<返回> (99999停止)"

到目前为止,我有这段代码,但我得到的答案是错误的。只有输入12345才能正确。

 #include<stdio.h>
 #include<conio.h>

 main()
 {
     int n,count=0,r,ave,small=0,large=0,sum=0;
     clrscr();
     printf("Enter numbers:");
     scanf("%i",&n);
     while(n!=0)
     {
            r=n%10;
            n/=10;
            sum=sum+r;
            count++;
            if(r>large)
            {
                 large=r;
            }
            if(r<small);
            {
             small=r;
            }
     }
     ave=sum/count;
     printf("Sum: %i\n",sum);
     printf("Total: %i\n",count);
     printf("Average:%i\n",ave);
     printf("Smallest:%i\n",small);
     printf("Largest:%i\n",large);
     getch();
}

4 个答案:

答案 0 :(得分:2)

无意识编码错误:

if(r<small); { small=r; }

这里你在条件检查结束时推出了;。因此,在每次迭代中small都会使用r进行更新。

启动问题: 您使用small初始化了0。但它不应该。它应该使用比输入的可能最大值更大的值进行初始化。在你的情况下,10就足够了。

仅供参考: 12345输入有效,因为r的最后一个值为1small在每次迭代中都会更新。

答案 1 :(得分:0)

尽量不要将小到0初始化,只需将其保存为变量。

答案 2 :(得分:0)

您需要为整数写入%d。 并取小= 9,然后你得到正确的答案。

答案 3 :(得分:0)

Amaya试试这个:

#include<stdio.h>
#include<conio.h>
#include<vector>
int OutputRemainder(int number)
{ 
   return number%10;
}
int OutputLargestNumber(std::vector<unsigned int> paramArr)
{
   int max=0;

   for(int i=0; i< paramArr.size(); i++)
   {

      if(paramArr.at>max)
      {
         max = paramArr.at;
      }
   }
  return max;
}
int OutputSmallestNumber(std::vector<unsigned int> paramArr)
{
   int min=paramArr.at(0);

   for(int i=0; i< paramArr.size(); i++)
   {

      if(paramArr.at<min)
      {
         min = paramArr.at;
      }
    }
   return min;
}
float AverageOfAllNumbers(std::vector<unsigned int> paramArr)
{
  float sum=0;
  float cond = paramArr.size();
  for(int i=0; i< cond; i++)
  {
     sum += paramArr.at;
  }
  return sum/paramArr.size();
}
int SumOfAllNumbers(std::vector<unsigned int> paramArr)
{
  int sum=0;
  for(int i=0; i< paramArr.size(); i++)
  {
     sum += paramArr.at;
  }
 return sum;
}



int main()
{
   unsigned int numberInput=0;
   unsigned int inputCount=0;
   float average=0;
   unsigned int smallestNumber=0;
   unsigned int largestNumber=0;
   unsigned int sum=0;
   std::vector<unsigned int> arr;

   printf("Enter numbers: ";
   scanf("%d",&numberInput);


   while(numberInput!=0)
   { 
      arr.push_back(OutputRemainder(numberInput));
      numberInput = numberInput/10;
   }

   largestNumber = OutputLargestNumber(arr);
   printf("\nLargest Number: %d", largestNumber);

   smallestNumber = OutputSmallestNumber(arr);
   printf("\nSmallest Number: %d", smallestNumber);

   average = AverageOfAllNumbers(arr);
   printf("\nAverage of Numbers: %f", average);

   sum = SumOfAllNumbers(arr);
   printf("\nSum of Numbers: %d", sum);

   inputCount = arr.size();
   printf("\nCount of Numbers: %d", inputCount);


   return 0;

}