我们被分配编写一个程序,该程序从键盘读取整数列表并创建以下信息:整数的数量,整数的和和平均值,最小和最大整数。谢谢。
输入应为:"输入数字<返回> (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();
}
答案 0 :(得分:2)
无意识编码错误:
if(r<small);
{
small=r;
}
这里你在条件检查结束时推出了;
。因此,在每次迭代中small
都会使用r
进行更新。
启动问题:
您使用small
初始化了0
。但它不应该。它应该使用比输入的可能最大值更大的值进行初始化。在你的情况下,10
就足够了。
仅供参考: 12345输入有效,因为r
的最后一个值为1
,small
在每次迭代中都会更新。
答案 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;
}