一阵三十六 发表于 2021-10-25 20:02:33

在声明变量时遇到的问题

目的:
写一个程序,统计用户输入的字符串中,各个元音字母出现的次数(包含大小写的 a、e、i、o、u)。

代码如下:
#include<stdio.h>
int main()
{
int a,e,i,o,u,n;
char ch;

printf("请输入一个英文句子:");
while (ch!='\n')
{
ch=getchar();
switch(ch)
{
   case'a':case'A':a++;continue;
   case'e':case'E':e++;continue;
   case'i':case'I':i++;continue;
   case'o':case'O':o++;continue;
   case'u':case'U':u++;continue;
   default:continue;
}
}
n=a+e+i+o+u;
printf("您输入的语句中,包含元音字母%d个!\n",n);
printf("其中:a(%d),e(%d),i(%d),o(%d),u(%d)",a,e,i,o,u);
return 0;
}


运行结果:


遇到的问题:
int e 的初始值不是0,根据测试,应该是1.
不管声明变量中e的位置在哪,e值是存在问题的
测试方法:
程序成功编译并运行之后直接敲回车,显示e的值为1.
我在声明变量中将e和i的位置对调,e值仍为1.

关于编译:
编译没有报错或者警告。
只有e的值不正常。
编译环境:
Dev-c++

求教问题:
为什么这里的e的值不是0呢?
其他的变量为什么没有问题呢?

jhq999 发表于 2021-10-25 22:53:39

本帖最后由 jhq999 于 2021-10-25 22:56 编辑

未初始化为零当然不是0。

一阵三十六 发表于 2021-10-25 23:12:47

jhq999 发表于 2021-10-25 22:53
未初始化为零当然不是0。

其他的呢?
为什么其他也没有初始化为零,却等于零呢?

jhq999 发表于 2021-10-26 06:06:38

一阵三十六 发表于 2021-10-25 23:12
其他的呢?
为什么其他也没有初始化为零,却等于零呢?

问系统,我那知道它分配给变量的那块内存原来的值是多少?分配完成还有没有其他动作,你试一试都初始化为零

阿萨德按时 发表于 2021-10-26 08:40:27

{:10_279:}

村里小黑 发表于 2021-10-26 08:58:13

你没有定义初始值是多少,系统是随机分配地址,可能存储e那个地方系统原来有值所以就会先等于1,其他也是恰巧分配的地址没有值而已

100gram 发表于 2021-10-26 09:01:32

需要给e定义初始值 要不然都是随机的数 根据系统分配
页: [1]
查看完整版本: 在声明变量时遇到的问题