1 #include <stdio.h> 2 #include <stdlib.h> 3 #define MAX 5 4 int input(int *array, int n) 5 { 6 int i; 7 printf("请输入 %d 个数 ", n); 8 for (i = 0; i < n; i++) { 9 printf("第 %d 个数 :", i + 1); 10 scanf("%d", &array[i]); 11 while (i > 0 && i < MAX && (array[i] < array[i - 1])) { 12 printf("less than previus number, try again! "); 13 scanf("%d", &array[i]); 14 } 15 if (i == MAX - 1) 16 printf("already completed input! "); 17 } 18 } 19 20 int search(int *array, int n, int key) 21 { 22 while (array[n - 1] != key) 23 n--; 24 return n; 25 } 26 27 int main() 28 { 29 int n; 30 int array[MAX]; 31 input(array, MAX); 32 while (1) { 33 int key; 34 printf("输入欲查找的数,并回车: "); 35 scanf("%d", &key); 36 n = search(array, MAX, key); 37 printf("the number you entered locates in %d ", n); 38 } 39 return 0; 40 }
经查,《C程序设计语言》(第二版.新版)138页,是这样说的“当scanf函数扫描完其格式串,或者碰到某些输入无法与格式控制说明匹配的情况时,该函数将中止”,
“该函数将中止”,所以就进入了while(1)的循环中。