搜索

c语言的一个小程务序,对于结果有些不理解!谁能帮忙看看?

发布网友 发布时间:2024-10-22 23:40

我来回答

7个回答

热心网友 时间:2024-11-05 16:24

因为你的数组没有初始化

C的变量有全局变量(也就是外部变量)和局部变量的区别
全局变量会在被声明的时候被初始化为0或NULL, 而局部变量声明时则没有,变量内部可能是任何东西,需要人工初始化.

char a[15] = {0};
或者char a[15] = "";
就好了

热心网友 时间:2024-11-05 16:25

这个应该是个任意字符,也就是说内存中本来就有的数据
用%s输入多个字符,是不会以\0来结束的
在c中,程序运行时,会申请一定的内存空间来作为变量的存储地方
在没有初始化或者没有赋值的情况下,这些内存空间是存在一些数据的(每个内存空间一定存在着数据,即使是0,也是数据,呵呵)

一般的理解是这个不一定是a。
要是确定是a的话,有可能是a数组的数组名,这个牵扯到程序在申请变量占内存空间的顺序

其实你可以同时打开两个着程序看看。一般的理解是这个字符时任意的,不可能固定
你多输入几个试试,不要只*是3个字符。一般来说一个程序多次打开,他会申请同一个内存空间来运行这个程序

热心网友 时间:2024-11-05 16:25

scanf命令从一个非空字符开始,直到遇到一个空字符才结束,这个过程是不保留回车的。。这样录入的信息会更安全,保证scanf接收到的字符都是非空字符,你如果输入ABC,其余后面显示的数据都是内存当中的数据,未被初始化的数据,它们可能是任何一个字符。。

热心网友 时间:2024-11-05 16:26

可能是你内存中(a[15]中)有别的字符串。你在初始化的时候这样写就可以了:char a[15]={""};

热心网友 时间:2024-11-05 16:26

其实从第四个开始是随机的,因为你在scanf之前没有吧数组a清零。

热心网友 时间:2024-11-05 16:27

你用%s录入,建议用%s输出,%c会把字符数组每个字符输出,包括未初始化的后面的12个字符。

热心网友 时间:2024-11-05 16:28

因为你的数组没有进行初始化 所以里面都是垃圾数据
还有scanf如果里面是%s的话 不读取回车
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
Top