黑马程序员技术交流社区
标题: 数组逆序存放 BUG [打印本页]
作者: dawei233 时间: 2014-7-27 00:15
标题: 数组逆序存放 BUG
本帖最后由 dawei233 于 2014-7-27 09:20 编辑
其实题目很简单,就是课后那道:4>设计一个函数:将一维整型数组中的元素逆序存放。比如本来是1,3,4,2,逆序存放就变成了:2,4,3,1
- #include<stdio.h>
- int main()
- {
- int count,a[1000],x;
- printf("请输入你想创建的数组的长度:");
- scanf("%d\n",&count);
- printf("请输入数组的元素\n");
- for (int i=0; i<count; i++) {
- scanf("%d",&a[i]);
- }
- for(int i=0,j=count-1;i<j;i++,j--)
- {
- if(i!=j){
- x=a[i];
- a[i]=a[j];
- a[j]=x;
- }
- else
- break;
- }
- }
复制代码
一: scanf 函数那里是不是有点问题?
二:
Xcode中运行,结果是这样:
请输入你想创建的数组的长度:5
2 4 5 1 6
请输入数组的元素
(lldb) 2 4 5 1 6
error: '2' is not a valid command.
完全不知道为什么是酱紫。知道的童鞋麻烦帮帮忙,技术分的机会来了。。。 {:3_49:}{:3_50:}
作者: 大龄产妇 时间: 2014-7-27 00:35
scanf 里别用\n 因为默认是以\n结束,也就是没有接收就结束了
作者: 天蚕飞 时间: 2014-7-27 00:36
1、少个return语句
2、for循环当中的j哪来的,没有定义,改成这样试试
#include<stdio.h>
int main()
{
int count,a[1000],x;
int i,j;
printf("请输入你想创建的数组的长度:");
scanf("%d",&count);
printf("请输入数组的元素\n");
for (i=0; i<count; i++) {
scanf("%d",&a[i]);
}
for(i=0,j=count-1;i<j;i++,j--)
{
if(i!=j){
x=a[i];
a[i]=a[j];
a[j]=x;
}
else
break;
}
for(i = 0;i < count;i++)
{
printf("%d ",a[i]);
}
printf("\n");
}
作者: 阳光地带 时间: 2014-7-27 02:11
- for(int i=0; i<count/2 ;i++)
- {
- x = a[i];
- a[i] = a[count-1-i];
- a[count-1-i] = x;
- }
复制代码
不用谢
作者: dawei233 时间: 2014-7-27 09:20
本帖最后由 dawei233 于 2014-7-27 09:31 编辑
试了一下,还是这样子:error: '2' is not a valid command.{:3_65:}
作者: fantacyleo 时间: 2014-7-27 10:28
return不是必须的,而且人家j也定义了,虽然作用域只在for循环体内
作者: fantacyleo 时间: 2014-7-27 10:40
程序的逻辑没错,运行其实也是可以的。但问题就是沙发所说,scanf里不要随便加空白字符,如'\n'。一个空白字符可以匹配输入中的任意多个空白字符,所以你输入元素个数后敲回车没用,因为scanf还会继续等待下一个字符去匹配'\n',你只有输入一个非空白字符并回车,才会停止匹配。你输入的这个非空白字符将进入到输入数组元素的scanf的匹配过程中。所以,输入过程就变成了这样:
程序提示“请输入你想创建的数组的长度:”,输入一个数字,比如3,回车,scanf匹配了空白字符后继续进行匹配,等待你输入。这时你就可以输入各个元素了,比如“1 2 3”,再回车,程序提示“请输入数组的元素”,因为已经输入完毕元素,这时直接敲回车,scanf就会读入你刚才输入的1 2 3。这样程序可以正常运行,但显然提示输入的目的没有达到
作者: 天蚕飞 时间: 2014-7-27 11:45
我试了下没有错的,我建议你把scanf那块的\n去掉,然后,你看看是不是加了断点了,我刚才是试的时候也不小加了断点出来同样的问题,就问题的字面意思是说无效命令,我觉得很可能就是手误加了断点。至于前面的那个回复是我在vc下试的,我觉得程序员该偷懒,但是有些懒还是不要偷,return我认为是个习惯而已。以上是本人建议,觉得能用试下,不行的话勿喷呀,谢谢
作者: fantacyleo 时间: 2014-7-27 11:54
我不是讨论该不该加return,而是说return并非必须,所以不加return并非楼主程序出bug的原因所在
作者: 天蚕飞 时间: 2014-7-27 12:11
了解:lol
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |