一个C/C++控制台输入问题 10
我想确认一下可不可以进行如下的输入操作:在控制台上输入任意个非零的数字,此时并不对任何输入的数字进行操作。当一个零被输入并按下回车的时候重新开始从第一个数字读入程序并进行...
我想确认一下可不可以进行如下的输入操作:在控制台上输入任意个非零的数字,此时并不对任何输入的数字进行操作。当一个零被输入并按下回车的时候重新开始从第一个数字读入程序并进行操作,直到0位置。当然,这也许完全不可能。如果不可能,请告诉我。如果有办法做到以上操作,请指出具体方法。谢谢。这么做主要是为了节约内存需求,这样每次之读入一个输入,运行结束后再读入另一个,就不用在程序里先把输入都存起来。
可能有人误解了我的意思。
比如输入为1 2 3 4 5 6 0,我想要的输出为每个数的平方,但我不想在程序里保存之前读入的数字。我想这样:先把每个数字读入一遍,看是不是0。不是0就继续,是0的话停止往后读,然后重新退回1的位置,再把1读入一遍,算出1的平方,输出,然后读入2,算出平方,输出,一直到再次读入0位置。0以后的输入全部被舍弃掉。只有一个0而已,表示输入的结束。
这么做的目的是为了一次可以输入全部的输入,然后一次把全部的输出依次打印出来,而不是输入一个,回车,输出,然后下一个。
要求是全部输入用空格隔开,直到读入一个标志结束的输入位置。我希望可以有个一般性的方法,因为输入可能不一定是数字,我希望同样的方法以后可以被用在字符或字符串上。
我的要求是在程序里不存在任何形式的保存输入或输出的方法,在全部输入结束前不会有任何对输入的操作被执行,请注意这一点。几位的回答都进行了提前的操作,所以不符合要求。 展开
可能有人误解了我的意思。
比如输入为1 2 3 4 5 6 0,我想要的输出为每个数的平方,但我不想在程序里保存之前读入的数字。我想这样:先把每个数字读入一遍,看是不是0。不是0就继续,是0的话停止往后读,然后重新退回1的位置,再把1读入一遍,算出1的平方,输出,然后读入2,算出平方,输出,一直到再次读入0位置。0以后的输入全部被舍弃掉。只有一个0而已,表示输入的结束。
这么做的目的是为了一次可以输入全部的输入,然后一次把全部的输出依次打印出来,而不是输入一个,回车,输出,然后下一个。
要求是全部输入用空格隔开,直到读入一个标志结束的输入位置。我希望可以有个一般性的方法,因为输入可能不一定是数字,我希望同样的方法以后可以被用在字符或字符串上。
我的要求是在程序里不存在任何形式的保存输入或输出的方法,在全部输入结束前不会有任何对输入的操作被执行,请注意这一点。几位的回答都进行了提前的操作,所以不符合要求。 展开
4个回答
展开全部
可以阿,不知到你是想怎么输入,是1324121201213212021 这样输,取中间断呢,还是12 21 31 0 12 1 12 12 0 211 取0中间那段?
如果是第一种情况,你可以定义一个char ch;cin>>ch;当读到0开始对后续进行处理,读到第二个0结束,
第二种情况,你就定义一个int i;cin>>i;读到0开始对后续进行处理。。
没什么不可以阿
如果是第一种情况,你可以定义一个char ch;cin>>ch;当读到0开始对后续进行处理,读到第二个0结束,
第二种情况,你就定义一个int i;cin>>i;读到0开始对后续进行处理。。
没什么不可以阿
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不知道是不是你需要的。
#include<stdio.h>
void main()
{
unsigned long int i=0,s=0,w=0,d=1;
printf("请输入一个数字,并以回车结束(次数不能大于42亿!)\n");
scanf("%d",&i);
s=i;
while(i!=0) //取第一个数到第一个0中间的数字
{
while(1)
{
if(i%10==0)
{
i/=10;
if(i!=0)
{
s=i;
}
}
i=i/10;
if(i==0)
{
break;
}
}
if(i%10==0)
{
i=i/10;
}
}
i=1;
w=s;
while(s%10!=0) //算出第一个数到第一个0中间数字的位数
{
s/=10;
i*=10;
}
while(w%10!=0) //第一个0之前的数字分开计算
{
i/=10;
s=w/i; //取第一位数
w%=i; //舍弃第一位数
printf("\n第%d个数[%d]的平方为:%d\n",d++,s,s*s);//s 为当前数字
}
}
#include<stdio.h>
void main()
{
unsigned long int i=0,s=0,w=0,d=1;
printf("请输入一个数字,并以回车结束(次数不能大于42亿!)\n");
scanf("%d",&i);
s=i;
while(i!=0) //取第一个数到第一个0中间的数字
{
while(1)
{
if(i%10==0)
{
i/=10;
if(i!=0)
{
s=i;
}
}
i=i/10;
if(i==0)
{
break;
}
}
if(i%10==0)
{
i=i/10;
}
}
i=1;
w=s;
while(s%10!=0) //算出第一个数到第一个0中间数字的位数
{
s/=10;
i*=10;
}
while(w%10!=0) //第一个0之前的数字分开计算
{
i/=10;
s=w/i; //取第一位数
w%=i; //舍弃第一位数
printf("\n第%d个数[%d]的平方为:%d\n",d++,s,s*s);//s 为当前数字
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
那么可以加个数组
比如:
double array[20];
int i=0; //i来计数
int num;
cin>>num;
bool flag=true;
while(true)
{
if(num==0)
{
flag=false;//退出循环
}
else
{
//在此添加你的操作
array[i++]=num*num*num;
}
cin>>num;
}
//然后一个for循环
//输出所有的值
for(int j=0;j<i;j++)
cout<<array[j]<<" ";
比如:
double array[20];
int i=0; //i来计数
int num;
cin>>num;
bool flag=true;
while(true)
{
if(num==0)
{
flag=false;//退出循环
}
else
{
//在此添加你的操作
array[i++]=num*num*num;
}
cin>>num;
}
//然后一个for循环
//输出所有的值
for(int j=0;j<i;j++)
cout<<array[j]<<" ";
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
为什么要保存之前读入的数字呢? 读一个就处理一个,然后读下一个,前一个读了什么保存它干啥用?
如果“不存在保存输入或输出的方法”,那你读到0之后怎么回退? 让用户再输入一次? 还是靠神仙帮你?还不是要靠某种保存输入的方法吗
如果“不存在保存输入或输出的方法”,那你读到0之后怎么回退? 让用户再输入一次? 还是靠神仙帮你?还不是要靠某种保存输入的方法吗
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询