跳过我的while语句,只为我的数组打印63个数字

时间:2014-03-20 21:23:26

标签: c arrays while-loop

因此,当我运行此程序时,我的程序会跳过所有内容并打印出一个63数字数组,如果我取出while语句它将运行并打印出一个数组,其中输入的数字为输入。我只是想弄清楚为什么它没有进行错误检查,我有一个类似的程序,我输入的方式完全相同,并且工作正常。

  1 #include<stdio.h>
  2 #include<stdlib.h>
  3 #include<time.h>
  4
  5 int check_input(int);
  6 void initialize_array(int array[],int);
  7 void print_array(int array[],int);
  8 void display_menu();
  9 int check_option(int);
 10 int common_numbers(int array[],int array2[],int);
 11 int count_numbers(int array[],int,int);  
 12 int mode(int array[],int);
 13 void print_histogram(int array[],int array2[],int);
 14
 15 #define MAX 100
 16
 17 int main()
 18 {
 19     int a[MAX];
 20     int b[MAX];
 21     int i;
 22
 23     while (check_input(i) == 0)
 24     {
 25         printf("\n Enter the size of the input:");
 26         scanf("%d", &i);
 27
 28         while (check_input(i) == 0)
 29
 30         {
 31             printf("\n Invalid input, enter the input again:");
 32             scanf("%d", &i);
 33         }
 34
 35         check_input(i);
 36     }
 37
 38
 39
 40
 41     initialize_array(a, i);
 42
 43     printf("\n Input array\n");
 44     print_array(a, i);
 45
 46 }
 47
 48 void initialize_array(int array[], int size)
 49 {
 50     srand(time(NULL));
 51     int x;
 52
 53     for (x = 0; x < size; x++)
 54     {
 55         array[x] = rand()%10;
 56     }
 57 }
 58
 59 int check_input(int a)
 60 {
 61     if(a > 0 || a <= 100)
 62     {
 63     a = 1;
 64     
 65     return a;
 66     }
 67 
 68     else 
 69     {
 70     a = 0;
 71     
 72     return a;
 73     }
 74 }
 75
 76 void print_array(int array[], int size)
 77 {
 78     int x;
 79
 80     for(x = 0; x < size; x++)
 81     {
 82         printf("%d ", array[x]);
 83     }
 84
 85     printf("\n");
 86 }

2 个答案:

答案 0 :(得分:4)

你需要改变你的状况

if(a > 0 || a <= 100)

if(a > 0 && a <= 100)

这样您就可以保证a始终在0到100之间。否则,您的if语句将始终为真。

此外,您应该初始化变量i,就像这样

int i = 0;

或者它将是一个未定义值的变量。

您可以对代码进行更多改进:

  1. 第35行不需要check_input(i);来电。
  2. 您无需在a功能中为check_input()变量设置值。只需return 1;return 0;而不是return a;

答案 1 :(得分:2)

您的程序会引发未定义的行为,i应该被初始化。 -1将是i的良好初始值。所以开始

 int i =-1;

然后将check_input中的条件更改为

if(a > 0 && a <= 100)

您希望i介于0100之间。问

if(a > 0 || a <= 100)

将始终提供true