所以本周我作业的第二部分是:编写一个程序,接受任意数量的正整数,由 用户,然后打印出最大和最小整数以及平均值 这两个。程序应该接受数据,直到用户发出数据输入信号为止 通过输入负值来完成。 该程序应使用作业 1 中的函数,即返回 两个整数参数中较大的一个,一个返回两个整数中较小的一个,以及一个 返回平均值。
我的能力远远超出了我的能力范围,这令人难以置信。非常担心这个模块,因为它似乎不适合我。 :(
我似乎可以弄清楚如何使用未知数量的整数来做到这一点。目前该程序抛出了一个奇怪的结果。
到目前为止我的代码是这样的:
#include <stdio.h>
#include <stdlib.h>
int getLo(int num1, int num2);
int getHi(int num1, int num2);
float getAv(int num1, int num2);
int main()
{
int num1, num2;
int count=0,i;
int *storedNumb;
printf("Enter the amount of integers you would like to enter:\n\n\n\n");
scanf("%d", &count);
printf("Enter %d positive integers:\n", count);
storedNumb= (int *) calloc(count,sizeof(int));
for(i=0; i<count; ++i)
{
scanf("%d",&storedNumb[i]);
printf("\nYou entered %d\n",storedNumb[i]);
}
float avg = getAv(num1, num2);
if (num1 <= 0){ // if statement prompting a positive input
printf("Please enter POSITIVE integers!\n");
return 0;}
else if (num2 <= 0){
printf("Please enter POSITIVE integers!\n");
return 0;
}
printf("The smallest number you entered is: %d\n", getLo(num1, num2));
printf("The largest number you entered is: %d\n", getHi(num1, num2));
printf("%.2f is the average of the integers you entered\n", avg);
return 0;
}
float getAv(int num1, int num2)
{
return (num1 + num2) / 2.;
}
int getLo(int num1, int num2)
{
if (num1 < num2)
{
return num1;
}
else
{
return num2;
}
}
int getHi(int num1, int num2)
{
if (num1 > num2)
{
return num1;
}
else
{
return num2;
}
}
最佳答案
尝试一些类似的事情
#include <stdio.h>
int main(int argc, const char * argv[]) {
int lo, hi, input;
scanf("\n%d", &input);
if(input >= 0) {
hi = input;
lo = input;
while(input >= 0) {
if(input > hi) {
hi = input;
}
if(input < lo) {
lo = input;
}
scanf("\n%d", &input);
}
}
printf("\nlo:%d", lo);
printf("\nhi:%d", hi);
printf("\navg:%d", (hi + lo)/2);
return 0;
}
关于c - 未知数量的用户输入整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40512094/