菜鸟有问求助大牛!

Ya212 2012-09-22 01:51:14
关于for(;;),我看到网上有说是相当于while(1)的意思,但是还是比较模糊,求大牛做个详细解释,感激不尽啊。
今天上机课的题,写完了我的原来是for(i = 0;i < m;i ++),但是只能输入4个选项,第五个选项就会自动关闭,看了老师的代码后,改成for(;;)就ok了,但是不知道是怎么回事,求大牛解释啊,在下感激不尽啊。。

include"stdio.h"
/*菜单*/
int Menu_Select()
{
char s;
int cn;
printf("1:StoreData\n");
printf("2:PrintData\n");
printf("3:SumData\n");
printf("4:SortData\n");
printf("5:LocateData\n");
printf("6:NumData\n");
do
{
s = getchar();
cn = int(s) - 48;
}
while(cn < 0 || cn >6);
return cn;
}
/*查找某个数在数组中的个数*/
int NumData(int a[],int k,int j)
{
int i;
int n = 0;
for(i = 0;i < k;i ++ )
if(a[i] == j )
n++;
return n;
}
/*利用冒泡排序法给数从小到大排序*/
void SortData(int a[],int k)
{
int i,j,t;
for(i = 0; i < k - 1;i ++)
for(j = 0;j < k - i - 1; j ++)
if(a[j] > a[j + 1])
{
t = a[j];
a[j] = a[j + 1];
a[j + 1] = t;
}
}
/*定位某数在数组中的位置*/
int LocateData(int a[],int k,int j)
{
int i,n;
for(i = 0;i < k;i ++)
if( j == a[i])
{n = i;break;}
else
n = -1;
return n+1;
}
/*对所有数求和*/
int SumData(int a[],int k)
{
int i,s = 0;
for(i = 0;i < k;i ++)
s = s + a[i];
return s;
}
/*储存数据*/
void StoreData(int a[],int k)
{
int i;
for(i = 0;i < k;i ++)
scanf("%d",&a[i]);
return;
}
/*输出数据*/
void PrintData(int a[],int k)
{
int i;
for(i = 0;i < k;i ++)
printf("%d ",a[i]);
printf("\n");
return;
}
int main(int argc, char* argv[])
{
int i,k[6], m = 5,sum = 0,j=0,p =0,x = 10,t = 7,l;
for(;;) // the position of error
{
switch(Menu_Select())
{
case 1: StoreData(k,m);break;
case 2: PrintData(k,m);break;
case 3: sum = SumData(k,m);
printf("the sum = %d\n",sum);
break;
case 4: SortData(k,m);
for(i = 0;i < m;i ++)
printf("%d ",k[i]);
printf("\n");
break;
case 5: j = LocateData(k,m,x);
printf("%d is in no.%d\n",x,j);
break;
case 6: NumData(k,m,t);
l = NumData(k,m,t);
printf("the number of %d is %d\n",t,l);
break;
default:printf("see you!!!!!");
}
}
return 0;
}
...全文
197 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
皮特尔 2012-09-24
  • 打赏
  • 举报
回复
作用就是使程序无限循环(死循环),从而不会自动退出,不停执行switch语句。如果没有for(;;),则程序只执行一次就结束了。
楼主可以把for(;;)注释掉看看效果。
hikobe8 2012-09-24
  • 打赏
  • 举报
回复
嗯嗯,注释了就不可以运行第二次了。死循环的话不就是一直都在运行,一直都在占用内存啊,不会结束吗
hikobe8 2012-09-24
  • 打赏
  • 举报
回复
好吧,本人愚拙,还是不太明白,for(;;)是一个空循环,还是死循环?原谅我这种初学者,不懂得东西我一定要弄懂,不然很难受的,我今天也试了while(1),也能运行的,但是还是不明白这个for(;;)到底用来干什么的,给我讲讲这个程序中它的作用吧
指针从不野 2012-09-23
  • 打赏
  • 举报
回复
代码是放在两个宏之间的,对于for循环,

for(//初始条件;//终止判断条件;//每次循环结束执行操作)
{
//循环体
//初始条件可以放在循环外面,所以可以为空
//终止判断条件为空的话就为进入无限循环
//最后一个操作也可以为空,或者放在循环体内执行
}
include"stdio.h"
/*菜单*/
int Menu_Select()
{
char s;
int cn;
printf("1:StoreData\n");
printf("2:PrintData\n");
printf("3:SumData\n");
printf("4:SortData\n");
printf("5:LocateData\n");
printf("6:NumData\n");
do
{
s = getchar();
cn = int(s) - 48;
}
while(cn < 0 || cn >6);
return cn;
}
/*查找某个数在数组中的个数*/
int NumData(int a[],int k,int j)
{
int i;
int n = 0;
for(i = 0;i < k;i ++ )
if(a[i] == j )
n++;
return n;
}
/*利用冒泡排序法给数从小到大排序*/
void SortData(int a[],int k)
{
int i,j,t;
for(i = 0; i < k - 1;i ++)
for(j = 0;j < k - i - 1; j ++)
if(a[j] > a[j + 1])
{
t = a[j];
a[j] = a[j + 1];
a[j + 1] = t;
}
}
/*定位某数在数组中的位置*/
int LocateData(int a[],int k,int j)
{
int i,n;
for(i = 0;i < k;i ++)
if( j == a[i])
{n = i;break;}
else
n = -1;
return n+1;
}
/*对所有数求和*/
int SumData(int a[],int k)
{
int i,s = 0;
for(i = 0;i < k;i ++)
s = s + a[i];
return s;
}
/*储存数据*/
void StoreData(int a[],int k)
{
int i;
for(i = 0;i < k;i ++)
scanf("%d",&a[i]);
return;
}
/*输出数据*/
void PrintData(int a[],int k)
{
int i;
for(i = 0;i < k;i ++)
printf("%d ",a[i]);
printf("\n");
return;
}
int main(int argc, char* argv[])
{
int i,k[6], m = 5,sum = 0,j=0,p =0,x = 10,t = 7,l;
for(;;) // the position of error
{
switch(Menu_Select())
{
case 1: StoreData(k,m);break;
case 2: PrintData(k,m);break;
case 3: sum = SumData(k,m);
printf("the sum = %d\n",sum);
break;
case 4: SortData(k,m);
for(i = 0;i < m;i ++)
printf("%d ",k[i]);
printf("\n");
break;
case 5: j = LocateData(k,m,x);
printf("%d is in no.%d\n",x,j);
break;
case 6: NumData(k,m,t);
l = NumData(k,m,t);
printf("the number of %d is %d\n",t,l);
break;
default:printf("see you!!!!!");
}
}
return 0;
}
JiMoKuangXiangQu 2012-09-23
  • 打赏
  • 举报
回复
就是个语法,不用使劲研究,代码写多就自然明白了
Gloveing 2012-09-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

还是不明白啊,楼上的说while(条件)为真就执行,那for(;;)空的啊,就是无限执行啊?
[/Quote]
for(;;)
初始条件没设置,结束的条件也没限制,所以就是相当于while(1)
似梦飞花 2012-09-23
  • 打赏
  • 举报
回复
你就当他是无限循环就是了
hikobe8 2012-09-23
  • 打赏
  • 举报
回复
还是不明白啊,楼上的说while(条件)为真就执行,那for(;;)空的啊,就是无限执行啊?
q451157067 2012-09-22
  • 打赏
  • 举报
回复
for(;条件;)
如果条件为空 就是无限执行了
while(条件)
如果条件为真就是执行了

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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