for语句不能循环,只能执行一次。。。

#include<stdio.h>voidmain(){inti,j,n=5,k=0,s=0,a[100]={1,12,25,27,36},b[100]={23,28,3... #include<stdio.h>
void main()
{
int i,j,n=5,k=0,s=0,a[100]={1,12,25,27,36},b[100]={23,28,35,80,50},l[100],m[100];

for(i=0;i<n;i++)
printf("%d,%d\n",a[i],b[i]);
printf("\n");
for(i=0;i<n;i++) ///(这个for不能循环)
{ j=0;
a[0]=0;
for(i=1;i<n;i++)
{if(a[i]>b[j]) {a[i]=0;j=i;}
};
s++;
for(i=0;i<n;i++)
{if(a[i]!=0) {l[k]=a[i];m[k]=b[i];k++;}};
for(i=0;i<n;i++)
{a[i]=0;b[i]=0;}
for(i=0;i<k;i++)
{a[i]=l[i];b[i]=m[i];
};
n=k;
for(i=0;i<n;i++)
printf("%d,%d\n",a[i],b[i]);
};
printf("%d\n",s);
}

求高手指点
展开
 我来答
我要OBOBO
2010-11-11 · TA获得超过8618个赞
知道大有可为答主
回答量:1720
采纳率:0%
帮助的人:3719万
展开全部
2个问题,你的i有没有赋初始值都是一个死循环,因为do while语句里没改变i的值,如果是程序不完整,这就要看你具体的需求了:
第一个问题,赋初始值,这i从1开始到100,如果没赋值,这i从0开始到100,会多执行一次循环。
第二个问题,因为你i开始没赋值,所以直接用=则只要i是小于等于100的情况循环都会被执行,而使用一个范围,即大于等于1,小于等于100,则i只有在这个范围内才执行循环,还有就是你这个只能算是个伪代码,真正变成里不能直接写1=I=100 ,需要改为:do while i =1 And i = 100
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
行走的标本
2010-10-29 · TA获得超过179个赞
知道答主
回答量:168
采纳率:0%
帮助的人:144万
展开全部
每个for都用i做参数 嵌套的时候 里面的i和外面的i相同啊 这样里面的i==n时候跳出循环 到外层判断的时候也不符合循环条件了 依然跳出循环
要么每个for循环用不从的参数
要么用这种格式
for(int i=0;i<n;i++)也就是声明局部变量
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
vivo01
2010-10-29 · TA获得超过185个赞
知道小有建树答主
回答量:114
采纳率:0%
帮助的人:163万
展开全部
你的内层三个for循环,每个循环都改变了i的值,你经过 for(i=0;i<n;i++)
printf("%d,%d\n",a[i],b[i]);这个循环后,i的值成了n,当前你外层循环的i < n条件就不满足了,当然外层循环不可能执行多次。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
明日之后宋子衿
2010-10-29
知道答主
回答量:44
采纳率:0%
帮助的人:33.5万
展开全部
for(i=0;i<n;i++) ///(这个for)
{ j=0;
a[0]=0;
for(i=1;i<n;i++) 这里i发生改变最多做一次在这里i=n了,上面的就不能循环 {if(a[i]>b[j]) {a[i]=0;j=i;}
};
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chzhn
2010-10-29 · TA获得超过5343个赞
知道大有可为答主
回答量:2951
采纳率:0%
帮助的人:1474万
展开全部
不要循环套用次数过多,应该把里面的循环作为一个单独的函数来调用,那样就不会出错了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式