首页 > 解决方案 > 我的 break 语句没有破坏我的代码中的 while 语句?

问题描述

我正在尝试编写一个用户可以输入正数的程序,但如果用户输入负数,则程序应该中断并打印出这些数字的最小、最大、总和和平均值。问题是,当用户输入 0 并且在 while 函数之后不运行代码时,代码会中断。

#include <stdio.h>

int main(void) {

int integer, small, bigg, sum, i;
float average;

while (1) {

    printf("Enter an integer: ");
    scanf_s("%d", &integer);
    i++;
    integer = bigg = small;

    if (integer > bigg) {
        bigg = integer;
    }

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

    sum = integer + sum;
    average = sum / i;

    if (integer < 1) {
        break;
    }
}

printf("The smallest number is: %d", small);
printf("The biggest number is: %d", bigg);
printf("\nThe sum of the number: %d", sum);
printf("The average value is: %f", average);

return 0;
}

标签: c

解决方案


默认情况下不初始化局部变量。最初它们的值是不确定的。还有一些其他问题(请参阅评论以获取解释)。

你想要这样的东西:

#include <stdio.h>
#include <limits.h>     // needed for INT_MAX and INT_MIN constants

int main(void) {
  int integer;
  int small = INT_MAX;   // initialize to biggest possible number
  int bigg = INT_MIN;    // initialize to smallest possible number
  int sum = 0;           // initialize to 0
  int i = 0;             // initialize to 0
  float average;

  while (1) {
    printf("Enter an integer: ");
    scanf_s("%d", &integer);
    i++;

    //// integer = bigg = small;    // this statement is pointless, it just
                                    // overwrites integer inputted 2 lines above

    if (integer > bigg) {
      bigg = integer;
    }

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

    sum = integer + sum;
    average = (float)sum / i;    // (float)sum : converts to float prior to division
                                 // because otherwise we'd have an integer division
    if (integer < 1) {
      break;
    }
  }

  printf("The smallest number is: %d\n", small);  // added \n so output is readable
  printf("The biggest number is: %d\n  ", bigg);
  printf("\nThe sum of the number: %d\n", sum);
  printf("The average value is: %f\n", average);

  return 0;
}

还有一个小问题。我让你自己去了解。


推荐阅读