| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 796 人关注过本帖
标题:大家帮我看看
只看楼主 加入收藏
apiqqz
Rank: 2
等 级:论坛游民
威 望:2
帖 子:56
专家分:25
注 册:2011-9-2
结帖率:75%
收藏
 问题点数:0 回复次数:14 
大家帮我看看
下面程序输出的结果是()
 main()
 {
    char str[10],c=`a`;
    int i=0;
     for(;i<5;i++)
     str[i]=c++;
     printf("%s",str);
  }
 A . abcde        B.a         C.不确定          D.bcdef
  这道题我做的结果是 D,但是书上的答案是 C ,我不明白想请各位解释下
  另外在这里问下各位,在C语言的开发环境下数组的大小能不能无限制的定义?
  (小弟用的是windows 7(home basic)的操作系统,没办法运行visual C等程序所以麻烦大家了)
搜索更多相关主题的帖子: 结果 
2011-09-02 19:54
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
字符串结束标志

                                         
===========深入<----------------->浅出============
2011-09-02 20:07
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
收藏
得分:0 
回复 楼主 apiqqz
仅供参考: 选c   我们不确定系统是否使用ASCLL码,假如是,也应选a,把a赋值给数组再自家嘛,所以头个字符是a,第二个才是b………… 回楼上:修改为:(对于数组而言,无论元素类型如何,如果显式初始化,而且初始化的元素个数小于定义的数组长度时,编译器自动把剩余空间初始化为零。因此int a[5]={0};这类写法相当于全部初始化为零。
对于全局或静态变量,如果不显式初始化,所有空间都会被隐式初始化为零。
除此之外的局部自动变量,如果不显式初始化,所占空间为随机值。)所以不存在无结束符

[ 本帖最后由 A13433758072 于 2011-9-2 23:58 编辑 ]

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2011-09-02 21:18
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
C是对的,注意printf()中的信息。

授人以渔,不授人以鱼。
2011-09-02 22:01
莫丶
Rank: 2
来 自:济南大学
等 级:论坛游民
帖 子:48
专家分:45
注 册:2011-1-2
收藏
得分:0 
答案是C  
注意 printf("%s",str);
你直接打印str 是不会打印字符串结束标志的 所以会在abcde后面出现乱码
2011-09-02 22:18
apiqqz
Rank: 2
等 级:论坛游民
威 望:2
帖 子:56
专家分:25
注 册:2011-9-2
收藏
得分:0 
回复 楼主 apiqqz
那么这道题就是选A了?????,数组的第一个存储单元存的是a,以此类推后面的是bcde 了,那么为什么结果会是不确定呢,望详细回答这本二级教材讲的非常的粗糙
2011-09-02 22:22
apiqqz
Rank: 2
等 级:论坛游民
威 望:2
帖 子:56
专家分:25
注 册:2011-9-2
收藏
得分:0 
回复 5楼 莫丶
看看我这样的理解对不对,printf()函数输出的第一个字符为str 所指示的存储单元,而字符串后面的字符由于没有对应的项而由printf()系统自行随机分配值,因此程序中除了a[0]单元的值能正确输出之外其他的数组单元的值都不能正确的输出?


2011-09-02 22:48
莫丶
Rank: 2
来 自:济南大学
等 级:论坛游民
帖 子:48
专家分:45
注 册:2011-1-2
收藏
得分:0 
正确的打印应该用循环
for(i=0;i<5;i++)
printf("%s",str[i]);
这样的话只打印到str[4]=e
 
直接printf("%s",str)的话 str[5] str[6]一直到str[9]的值都是不确定的 ,所以会出现 abcde乱码乱码----的情况
2011-09-02 22:54
apiqqz
Rank: 2
等 级:论坛游民
威 望:2
帖 子:56
专家分:25
注 册:2011-9-2
收藏
得分:0 
回复 8楼 莫丶
只是在遇到数组中的结束符标志\0才乱码吗?
小弟对printf 函数理解的不深刻
2011-09-02 23:04
莫丶
Rank: 2
来 自:济南大学
等 级:论坛游民
帖 子:48
专家分:45
注 册:2011-1-2
收藏
得分:0 
回复 9楼 apiqqz
str[5]就开始乱码了 因为没有确定的值
2011-09-02 23:05
快速回复:大家帮我看看
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.068309 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved