C语言数组输出问题!

#include<stdio.h>1intmain(void)2{3intc;4charmax[10];5c='A';6while(c<='F'){7max[c]=c++... #include <stdio.h> 1
int main (void) 2
{ 3
int c; 4
char max[10]; 5
c='A'; 6
while(c<='F'){ 7
max[c]=c++; 8
printf("%c\n",max[c]);} 9
} 10

为什么终端输出就6行空的阿!不是应该输出ABCDEF吗!求教下!8和9换成printf("%c\n",max[c]=c++);又可以输出了!这是为什么!有什么不同吗? 求大牛说详细点!本人新手!
展开
 我来答
leifangtang
推荐于2016-01-28 · 超过12用户采纳过TA的回答
知道答主
回答量:32
采纳率:100%
帮助的人:14.5万
展开全部
错在了max[c]数组越界了,你定义了max[10]数组下标最大为9,但是c='A'时,c的ASCII为65,max[c]=c++也就是max[65]=c++,造成数组越界,要想输出ABCDEF可以在你的基础上改成
#include <stdio.h>
int main (void)
{
int c;
int i=0;
char max[10];
c='A';
while(c<='F')
{
max[i]=c++;
printf("%c\n",max[i]);
i++;
}
}
德昂当
2015-01-30 · TA获得超过2842个赞
知道大有可为答主
回答量:1074
采纳率:100%
帮助的人:758万
展开全部
首先你对数组的使用超限了,max[10] 只有 max[0]到 max[9]
max[c] c='A' 'A'是65 已经超出了 max的内存范围,那部分是别的地方在用。
所以放在前面 你的 max[c]=c++可能没存进去,也可能存进去了,又被别的地方改掉了。

之所就放在后面可以,那是因为后面用的不是 max[c]中的值,而是 max[c]=c++这个表达式的值,也就是c的值。
再定义一个 int i=0;

while(c<='F'){ //或者 i<6
max[i]=c++;
printf("%c\n",max[i]);
i++;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lajibaodu
2015-01-30 · TA获得超过1067个赞
知道小有建树答主
回答量:694
采纳率:100%
帮助的人:241万
展开全部
因为c是A,它的ASC是65 你的max数组有65吗?
追问
懂了 谢谢!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
听不清啊
高粉答主

2015-01-30 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部
你的程序要这样写才对:
#include <stdio.h>
int main (void)
{
int c;
char max[10]={'0'};
c='A';
while(c<='F'){
max[c-'A']=c;
printf("%c\n",max[c-'A']);
c++;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ne0787411
2015-01-30 · TA获得超过151个赞
知道小有建树答主
回答量:131
采纳率:0%
帮助的人:120万
展开全部
#include <stdio.h>
int main (void)
{
int c;
int i=0
char max[10];
c='A';
while(c<='F'){
// max[c]=c++; 这种写法是一种未定义的行为,不要这样写
ma[i]=c++;
printf("%c\n",max[i]);
i++;
}
}
追问
那这么写好点! 能打出来吗!谢谢!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式