c语言中的数组问题和scanf问题

caofa0532 2012-08-28 08:54:43
1.数组。
不能定义a[],必须定义为a[n];才可以。
C语言不是可以定义a[]吗?在linux系统下不行吗?或者需要怎么样调整一下?
2.scanf问题。
如 scanf("%d \n", &n);则在运行的时候会让你输入两次数值才可以(实际上第一次输入的数值被赋给n,然后需要再次输入回车后,程序才继续),为什么?

谢谢!
...全文
351 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanglu343280746 2012-08-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
1
除了尚未普及的最新标准外,所有C/C++标准均要求数组在定义时确定大小
你可以用int a[] = { 3, 5 }这种较为方便的写法,编译器替你去数=后面有多少个元素,以此来确定数组大小
但无论如何,数组大小必须确定,这点没有任何商量的余地

2
我很想知道你为啥要在scanf函数里写\n。
你要求输入一个整数,然后还要求输入一个回车符?
[/Quote]
++
AnYidan 2012-08-28
  • 打赏
  • 举报
回复
好好看看语法
caofa0532 2012-08-28
  • 打赏
  • 举报
回复
ok 知道啊
谢谢!
caofa0532 2012-08-28
  • 打赏
  • 举报
回复
ok 知道啊
谢谢!
图灵狗 2012-08-28
  • 打赏
  • 举报
回复
1、不能定义a[],你想定义动态数组的话,可以用指针,调用malloc/free等函数来管理;
2、改为scanf("%d", &n)就可以了,不要加\n。
baichi4141 2012-08-28
  • 打赏
  • 举报
回复
1
除了尚未普及的最新标准外,所有C/C++标准均要求数组在定义时确定大小
你可以用int a[] = { 3, 5 }这种较为方便的写法,编译器替你去数=后面有多少个元素,以此来确定数组大小
但无论如何,数组大小必须确定,这点没有任何商量的余地

2
我很想知道你为啥要在scanf函数里写\n。
你要求输入一个整数,然后还要求输入一个回车符?
赵4老师 2012-08-28
  • 打赏
  • 举报
回复
关键是要理解“编译期”和“运行时”的区别。

“变量赋值”和“变量初始化”不是一回事!
“变量赋值”发生在运行期,其写法遵循赋值语法规定。
“变量初始化”发生在编译期,其写法遵循初始化列表语法规定。
天外淡云 2012-08-28
  • 打赏
  • 举报
回复
开始多看书才是王道!

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧