来看看 感激不尽
本帖最后由 轻拿轻放 于 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】会消失附上图算了
#include <stdio.h>
void main()
{
int n, a;
for( n=0; n<=100; ++n )
{
scanf("%d",&a);
printf("%d\t",a);
}
} 一个循环就能搞定。看看上面这位友人的程序。 18326638710 发表于 2013-11-20 22:15 static/image/common/back.gif
感谢您 但是 要怎么结束这个 循环呢 ?比如我想在我输入 6个数的时候结束,然后我把这6个数存放到数组中,然后在printf中把这6个数出来 云客联盟 发表于 2013-11-20 22:42 static/image/common/back.gif
一个循环就能搞定。看看上面这位友人的程序。
感谢您 但是 要怎么结束这个 循环呢 ?比如我想在我输入 6个数的时候结束,然后我把这6个数存放到数组中,然后在printf中把这6个数出来
但是上面的程序根本做不到这一点啊 精品好帖啦..... 轻拿轻放 发表于 2013-11-20 22:57 static/image/common/back.gif
感谢您 但是 要怎么结束这个 循环呢 ?比如我想在我输入 6个数的时候结束,然后我把这6个数存放到数组中, ...
输入六个数后回车不就行了么。 循环结构不谢 庸人自忧灬 发表于 2013-11-21 17:19 static/image/common/back.gif
循环结构不谢
实现 求实现 18326638710 发表于 2013-11-21 11:58 static/image/common/back.gif
输入六个数后回车不就行了么。
那要怎么结束呢 轻拿轻放 发表于 2013-11-21 17:44 static/image/common/back.gif
那要怎么结束呢
写判断 如果用户输入等于回车退出循环 n<=100 看这个停止的条件,你要输99次才能停止咯。或者有一种结束程序的方法,Ctrl+Z之后回车。不同的编译器貌似不同,有些是Ctrl+C、Ctrl+X。。 云客联盟 发表于 2013-11-21 21:42 static/image/common/back.gif
n
我把程序贴出来了 本帖最后由 云炀 于 2013-11-22 01:26 编辑
首先,我想问一下,你scanf进去的数字,怎么存进数组的~我是新手一个,反正我看了半天,就一个&tem和s=tem,那么,你将一个int变量赋值给一个指针,本身就会报错。这个问题,请参看沙发,纠正了。而我想说的是,为什么一定要用for循环呢?是强制规定的么?如果不是,请试试用while循环改写可能效果更好
while ( (scanf("%d",&tem) == 1) || ( < 100))
合理利用库函数的返回值,一方面可以少写很多代码,可读性更好,同时效果也更好,使用while循环可以达到即便不是键入 '#'也可以结束程序的效果 本帖最后由 轻拿轻放 于 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:31 static/image/common/back.gif
首先我是先将输入的值付给tem只要tem不等于#就将tem付给s【i】;
然后你的这个循环应该是只能输入1~100的 ...
大神们.努力加油哦!~ 热爱鱼C^_^ 本帖最后由 云炀 于 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,即便不使用'#'也可以退出程序,但是我不知道满不满足你的要求,我只是站在了另外一个角度去看这个问题 不得不说看不懂啊
页:
[1]
2