遇到一个变量初始化的问题!
判断一个正整数的位数1 # include <stdio.h>
2
3 int main(void)
4 {
5 int num, indiv, ten, thousand, tenthousand, place;
6 char ch;
7
8 printf("请输入一个不超5位的正整数(1-99999):");
9 scanf("%d", &num);
10
11 while (num > 99999 || num < 0 || (ch = getchar()) != '\n') //如果输入的数字大于99999,或者小于0,或者是字符,则要求重新输入(0-99999)
12 {
13 printf("您输入的数字有误,请重新输入:");
14 scanf("%d", &num);
15 }
16
17 if (num > 9999)
18 {
19 place = 5;
20 printf("您输入的是%d位数\n", place);
21 }
22 else //num <= 9999
23 {
24 if (num > 999)
25 {
26 place = 4;
27 printf("您输入的是%d位数\n", place);
28 }
29 else //num <= 999
30 {
31 if (num > 99)
32 {
33 place = 3;
34 printf("您输入的是%d位数\n", place);
35 }
36 else //num <= 99
37 {
38 if (num > 9)
39 {
40 place = 2;
41 printf("您输入的是%d位数\n", place);
42 }
43 else //num <= 9 && num >= 1
44 {
45 place = 1;
46 printf("您输入的是%d位数\n", place);
47 }
48 }
49 }
50 }
51
52 return 0;
53 }
随机测试时,所有其他字符都能被过滤, 唯独“-”“+”被识别为数字
[student@server c_program]$ ./ex4-9
请输入一个不超5位的正整数(1-99999):a
您输入的数字有误,请重新输入:b
您输入的数字有误,请重新输入:e
您输入的数字有误,请重新输入:\
您输入的数字有误,请重新输入:]
您输入的数字有误,请重新输入:[
您输入的数字有误,请重新输入:/
您输入的数字有误,请重新输入:.
您输入的数字有误,请重新输入:,
您输入的数字有误,请重新输入:=
您输入的数字有误,请重新输入:-
您输入的是5位数
[student@server c_program]$ ./ex4-9
请输入一个不超5位的正整数(1-99999):+
您输入的是5位数
我估摸着是变量没有初始化造成的,可是如何解释这种情况呢?
[此贴子已经被作者于2016-9-26 00:08编辑过]