因此,当我运行此程序时,我的程序会跳过所有内容并打印出一个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 }
答案 0 :(得分:4)
你需要改变你的状况
if(a > 0 || a <= 100)
到
if(a > 0 && a <= 100)
这样您就可以保证a
始终在0到100之间。否则,您的if
语句将始终为真。
此外,您应该初始化变量i
,就像这样
int i = 0;
或者它将是一个未定义值的变量。
您可以对代码进行更多改进:
check_input(i);
来电。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
介于0
和100
之间。问
if(a > 0 || a <= 100)
将始终提供true
。