C++:这段代码出个什么错误

#include<stdio.h>voidmain(){chara[80];inti,n;n=0;do{a[n]=getchar();n++;}while(a[n]!='... #include<stdio.h>
void main()
{
char a[80];int i, n;
n=0;

do
{
a[n]=getchar();n++;
}
while(a[n]!='\n');
for(i=0;i<=n;i++)
putchar(a[n]);
}
运行后出为来结果
展开
 我来答
997705704
2012-10-01 · 超过12用户采纳过TA的回答
知道答主
回答量:38
采纳率:0%
帮助的人:32.2万
展开全部
do
{
a[n]=getchar();n++;
}
while(a[n]!='\n');
应该改为:
do
{
a[n]=getchar();
}
while(a[n++]!='\n');

明白了么
追问
这很好,但仍有问题,for后打不出来
追答
for(i=0;i<=n;i++)
putchar(a[n]);

改为:
for(i=0;i<n;i++)putchar(a[i]);
kingboy5555
2012-10-01 · TA获得超过224个赞
知道答主
回答量:163
采纳率:0%
帮助的人:145万
展开全部
do循环的循环条件永远不为假,因为n++后a[n]不会为'\n'。

改成for循环吧
int main(int argc, char* argv[])
{
char a[80], c, n = 0;

for (c = getchar(); c != '\n'; ++n)
{
a[n] = c;
c = getchar();
}
a[n] = '\0';

printf("%s", a);
getchar();
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
530617859
2012-10-01 · 超过16用户采纳过TA的回答
知道答主
回答量:45
采纳率:0%
帮助的人:46.9万
展开全部
do
{
a[n]=getchar();n++;
比如说a[0]='a';n++后为1,while(a[1]!='\n')这就会错因为a[1]你并没有给 它初始化,所以系统会错。
}
while(a[n]!='\n');
所以 改为:
do
{
a[n]=getchar();
}
while(a[n++]!='\n');
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wanglixin1001
2012-10-01 · TA获得超过4174个赞
知道大有可为答主
回答量:1758
采纳率:80%
帮助的人:876万
展开全部
修改后的代码:
#include<stdio.h>
int main()
{
char a[80];
int i, n;
n=0;
do
{
a[n]=getchar();n++;
}
while(a[n-1]!='\n'); //因为n++了,所以这里是n-1
for(i=0;i<=n;i++)
putchar(a[i]); //这里不是a[n]哦
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式