轻拿轻放 发表于 2013-11-20 21:33:30

来看看 感激不尽

本帖最后由 轻拿轻放 于 2013-11-22 12:35 编辑

用C语言编程时,我定义了一个数组a,现在要将一列长度不知但小于100的序列用函数scanf输入数组,怎么实现?
(弄了一大半天,百度的找不到方法,我的困难时,要不到100的长度之前结束数组的输入怎么弄)
我把程序贴出来
#include<stdio.h>
#include<windows.h>      
void main()
{
      int s,i,j=0,tem;
      printf("请输入数(用空格来间隔以#来结束):"); //如,1 2 3 #
      for(i=0;i<5;i++)
                if(tem!='#')      //用tem来存放不需要存放如数组的数,也就是用来存放结束的标志
                   {
                            scanf("%d",&tem);
                              s=tem;
                              j++;      //用j来计算数组的个数
                   }
      else break;            //当输入#是结束循环
      printf("输入的个数为:%d\n",j);
      printf("数组为:\n");   //输出数组
      for(i=0;i<j;i++)
                printf("%d ",s);
      system("pause");
} 我粘贴出来的时候s【i】会消失附上图算了

18326638710 发表于 2013-11-20 22:15:28

#include <stdio.h>

void main()
{
   int n, a;
   for( n=0; n<=100; ++n )
{
          scanf("%d",&a);
                  printf("%d\t",a);
}

}

云客联盟 发表于 2013-11-20 22:42:48

一个循环就能搞定。看看上面这位友人的程序。

轻拿轻放 发表于 2013-11-20 22:57:52

18326638710 发表于 2013-11-20 22:15 static/image/common/back.gif


感谢您 但是 要怎么结束这个 循环呢 ?比如我想在我输入 6个数的时候结束,然后我把这6个数存放到数组中,然后在printf中把这6个数出来

轻拿轻放 发表于 2013-11-20 22:58:53

云客联盟 发表于 2013-11-20 22:42 static/image/common/back.gif
一个循环就能搞定。看看上面这位友人的程序。

感谢您 但是 要怎么结束这个 循环呢 ?比如我想在我输入 6个数的时候结束,然后我把这6个数存放到数组中,然后在printf中把这6个数出来

但是上面的程序根本做不到这一点啊

网络学习 发表于 2013-11-21 00:37:04

精品好帖啦.....

18326638710 发表于 2013-11-21 11:58:39

轻拿轻放 发表于 2013-11-20 22:57 static/image/common/back.gif
感谢您 但是 要怎么结束这个 循环呢 ?比如我想在我输入 6个数的时候结束,然后我把这6个数存放到数组中, ...

输入六个数后回车不就行了么。

庸人自忧灬 发表于 2013-11-21 17:19:00

循环结构不谢

轻拿轻放 发表于 2013-11-21 17:43:12

庸人自忧灬 发表于 2013-11-21 17:19 static/image/common/back.gif
循环结构不谢

实现 求实现

轻拿轻放 发表于 2013-11-21 17:44:15

18326638710 发表于 2013-11-21 11:58 static/image/common/back.gif
输入六个数后回车不就行了么。

那要怎么结束呢

゛落君灬殇丶 发表于 2013-11-21 17:51:26

轻拿轻放 发表于 2013-11-21 17:44 static/image/common/back.gif
那要怎么结束呢

写判断 如果用户输入等于回车退出循环

云客联盟 发表于 2013-11-21 21:42:49

n<=100 看这个停止的条件,你要输99次才能停止咯。或者有一种结束程序的方法,Ctrl+Z之后回车。不同的编译器貌似不同,有些是Ctrl+C、Ctrl+X。。

轻拿轻放 发表于 2013-11-22 00:45:56

云客联盟 发表于 2013-11-21 21:42 static/image/common/back.gif
n

我把程序贴出来了

云炀 发表于 2013-11-22 01:23:20

本帖最后由 云炀 于 2013-11-22 01:26 编辑

首先,我想问一下,你scanf进去的数字,怎么存进数组的~我是新手一个,反正我看了半天,就一个&tem和s=tem,那么,你将一个int变量赋值给一个指针,本身就会报错。这个问题,请参看沙发,纠正了。而我想说的是,为什么一定要用for循环呢?是强制规定的么?如果不是,请试试用while循环改写可能效果更好

while ( (scanf("%d",&tem) == 1) || ( < 100))

合理利用库函数的返回值,一方面可以少写很多代码,可读性更好,同时效果也更好,使用while循环可以达到即便不是键入 '#'也可以结束程序的效果

轻拿轻放 发表于 2013-11-22 12:31:36

本帖最后由 轻拿轻放 于 2013-11-22 12:32 编辑

云炀 发表于 2013-11-22 01:23 static/image/common/back.gif
首先,我想问一下,你scanf进去的数字,怎么存进数组的~我是新手一个,反正我看了半天,就一个&tem和s=tem, ...
首先我是先将输入的值付给tem只要tem不等于#就将tem付给s【i】;
然后你的这个循环应该是只能输入1~100的数上面的程序有两个地方错了
1.第10行 应该是s=em;
2.第17行是 printf(“%d”,s);
我也不知道怎么会粘贴出来就错了

ヽ朝暮是安然 发表于 2013-11-22 12:58:43

前面看的懂.后面 简直是天文数字!~

ヽ朝暮是安然 发表于 2013-11-22 13:01:18

轻拿轻放 发表于 2013-11-22 12:31 static/image/common/back.gif
首先我是先将输入的值付给tem只要tem不等于#就将tem付给s【i】;
然后你的这个循环应该是只能输入1~100的 ...

大神们.努力加油哦!~

江湖告急 发表于 2013-11-22 22:26:08

热爱鱼C^_^

云炀 发表于 2013-11-23 04:33:44

本帖最后由 云炀 于 2013-11-23 04:38 编辑

轻拿轻放 发表于 2013-11-22 12:31 static/image/common/back.gif
首先我是先将输入的值付给tem只要tem不等于#就将tem付给s【i】;
然后你的这个循环应该是只能输入1~100的 ...
你是用i作为for循环的结束条件,按照你描述的信息,是要输入最多99个数字,所以按照你给定的条件,i<100就结束循环,在for循环中,你使用了 tem != '#'附加了一个提前结束循环的条件,所以:

# include <stdio.h>

int main(void)
{
      int s,i=0,j,tem;

      printf("请输入数(用空格来间隔以#来结束):\n"); //如,1 2 3 #

      while ((scanf_s("%d",&tem) == 1) && (i < 5) )
      {
                s=tem;
                i++;      //用i来计算数组的个数
      }

      j = i;

      printf("输入的个数为:%d\n",i);
      printf("数组为:\n");   //输出数组
      for( i = 0 ; i < j; i++)
                printf("%d ",s);
      printf("\n");

      return 0;
}


上机试试,NO if, NO else, NO break,即便不使用'#'也可以退出程序,但是我不知道满不满足你的要求,我只是站在了另外一个角度去看这个问题

挺好k 发表于 2013-11-23 12:25:50

不得不说看不懂啊
页: [1] 2
查看完整版本: 来看看 感激不尽