scanf的问题 实在是找不到错误原因

软件和网站开发以及相关技术探讨
回复
头像
543082593
帖子: 234
注册时间: 2008-11-07 8:41

scanf的问题 实在是找不到错误原因

#1

帖子 543082593 » 2009-06-30 0:35

代码: 全选

 #include <stdio.h>
  int main()
  {
         int i;
         scanf("%d ", &i);
         int a[i];
         int n;
         for (n=1; n<=i; n++)
         {
                 a[n]=n;
         }
         for (n=1; n<=i; n++)
         {
                  printf("%d ", a[n]);
         }
         return 0;
  }
运行的时候 要输入两次 郁闷
反正就是不正常
fall again
smooth criminal
they don't care about us
billie jean
beat it
dangerous
the lost children
childhood
ben
i will be there
speechless
she is out of my life
rock with you
...
LOVE U FOREVER
头像
windwhinny
帖子: 618
注册时间: 2007-09-26 17:34

Re: scanf的问题 实在是找不到错误原因

#2

帖子 windwhinny » 2009-06-30 0:51

scanf("%d\n ", &i);试试
ustcbbc
帖子: 22
注册时间: 2006-07-17 8:06

Re: scanf的问题 实在是找不到错误原因

#3

帖子 ustcbbc » 2009-06-30 0:54

scanf("%d ", &i);

scanf("%d", &i); 去掉空格,或者在输入的时候输入数字+空格 再回车。
头像
临水的季节
帖子: 446
注册时间: 2009-03-21 2:22

Re: scanf的问题 实在是找不到错误原因

#4

帖子 临水的季节 » 2009-06-30 1:16

543082593 写了:

代码: 全选

 #include <stdio.h>
  int main()
  {
         int i;
         scanf("%d ", &i);
         int a[i];
         int n;
         for (n=1; n<=i; n++)
         {
                 a[n]=n;
         }
         for (n=1; n<=i; n++)
         {
                  printf("%d ", a[n]);
         }
         return 0;
  }
运行的时候 要输入两次 郁闷
反正就是不正常
int a;这个不能用吧,定义一个数组,大小不能自己定义,这样,你把int a;改成int[100]就可以了吧
人之所以痛苦,那是因为你还不够强大
头像
cnkilior
论坛版主
帖子: 4984
注册时间: 2007-08-05 17:40

Re: scanf的问题 实在是找不到错误原因

#5

帖子 cnkilior » 2009-06-30 1:28

scanf最没有用了。
还是用

代码: 全选

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
int main (int argc, char *argv[])
{
       assert( argc == 2);
       int i=atoi(argv[1]);
       int n;
       int a[i];
      for (n=1; n<=i; n++)
         {
                 a[n]=n;
         }
         for (n=1; n<=i; n++)
         {
                  printf("%d ", a[n]);
         }
         return 0;
}
头像
cnkilior
论坛版主
帖子: 4984
注册时间: 2007-08-05 17:40

Re: scanf的问题 实在是找不到错误原因

#6

帖子 cnkilior » 2009-06-30 1:43

代码: 全选

#include <stdio.h>
  int main()
  {
         int i;
scanf("%d", &i);

代码: 全选

         int a[i];
         int n;
         for (n=1; n<=i; n++)
         {
                 a[n]=n;
         }
         for (n=1; n<=i; n++)
         {
                  printf("%d ", a[n]);
         }
         return 0;
  }
也是可以的,
头像
543082593
帖子: 234
注册时间: 2008-11-07 8:41

Re: scanf的问题 实在是找不到错误原因

#7

帖子 543082593 » 2009-06-30 2:21

恩 貌似 把scanf("%d ",&i) 中%d后的空格去掉就好了
fall again
smooth criminal
they don't care about us
billie jean
beat it
dangerous
the lost children
childhood
ben
i will be there
speechless
she is out of my life
rock with you
...
LOVE U FOREVER
poet
帖子: 2841
注册时间: 2006-09-11 22:47

Re: scanf的问题 实在是找不到错误原因

#8

帖子 poet » 2009-06-30 10:13

临水的季节 写了: int a;这个不能用吧,定义一个数组,大小不能自己定义,这样,你把int a;改成int[100]就可以了吧


可以这么用,1999年的C标准都定义了这个用法的。

可以搜搜关键词 C99 VLA。

那些老古董的 C 教材很害人啊。这些已经实行了十年的标准都还有人不知道,可能那些教材都已经20年以上历史了。
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

Re: scanf的问题 实在是找不到错误原因

#9

帖子 BigSnake.NET » 2009-06-30 12:07

去掉空格即可
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
anewbie
帖子: 159
注册时间: 2009-02-24 19:39

Re: scanf的问题 实在是找不到错误原因

#10

帖子 anewbie » 2009-07-05 18:14

poet 写了:
临水的季节 写了: int a;这个不能用吧,定义一个数组,大小不能自己定义,这样,你把int a;改成int[100]就可以了吧


可以这么用,1999年的C标准都定义了这个用法的。

可以搜搜关键词 C99 VLA。

那些老古董的 C 教材很害人啊。这些已经实行了十年的标准都还有人不知道,可能那些教材都已经20年以上历史了。


Nod.

直接 n1362.pdf 最彻底。
头像
tianyaqu
帖子: 97
注册时间: 2008-12-05 20:43
来自: 深圳

Re: scanf的问题 实在是找不到错误原因

#11

帖子 tianyaqu » 2009-07-06 11:28

poet 写了:
临水的季节 写了: int a;这个不能用吧,定义一个数组,大小不能自己定义,这样,你把int a;改成int[100]就可以了吧


可以这么用,1999年的C标准都定义了这个用法的。

可以搜搜关键词 C99 VLA。

那些老古董的 C 教材很害人啊。这些已经实行了十年的标准都还有人不知道,可能那些教材都已经20年以上历史了。

??!阿。。莫非我看的就是古董的C教材。。。。 :em20
道是何物,直教,生死相许?
回复