| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1668 人关注过本帖
标题:编译能通过,运行后却得不到想要的答案..
只看楼主 加入收藏
fgftghth
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-6-13
收藏
得分:0 
还请斑竹说下一个问题就是,两个FOR嵌套使用时,在第2个FOR里面使用break时,到底是第2个for的循环后执行第1个for的循环,,还是跳出两个循环继续下个语句~~
2006-06-13 11:49
redstar00
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-4-19
收藏
得分:0 
#include<stdio.h>
void main()
{
int a[9];
int i,j,k=0;
for(i=0;i<9;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<8;i++)
{
for(j=i+1;j<9;j++)
{
if(a[i]==a[j])
{
k++;
}
}
}
if(i==8&&k==0)
{
k=0;
printf("%d",k);
}
else
{
printf("k=1");
}
}
2006-06-13 12:10
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 
以下是引用fgftghth在2006-6-13 11:49:54的发言:
还请斑竹说下一个问题就是,两个FOR嵌套使用时,在第2个FOR里面使用break时,到底是第2个for的循环后执行第1个for的循环,,还是跳出两个循环继续下个语句~~

在第2个FOR(内循环)里面使用break,则结束内循环、继续执行第1个FOR(外循环)。不能一口气从深层循环中完全解脱出来。如果不忌讳用goto语句,则下列代码效率更高:
#include<stdio.h>
void main()
{
int a[9];
int i,j,k=1;
for(i=0;i<9;i++)
scanf("%d",&a[i]);
for(i=0;i<8;i++)
for(j=i+1;j<9;j++)
if(a[i]==a[j]){k=0;goto finish;}
finish:
printf("%d",k);
}


落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-06-13 12:33
罗彬
Rank: 1
等 级:新手上路
帖 子:141
专家分:0
注 册:2006-4-24
收藏
得分:0 
里边的那个BREAK只是结束里边那个FOR,对外边的不起作用,要结束整个需要加2个break

2006-06-13 12:49
huangtaomvp
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2006-4-23
收藏
得分:0 


#include<stdio.h>
void main()
{
int a[9];
int i,j,k;
for(i=0;i<9;i++) scanf("%d",&a[i]);
for(i=0;i<8;i++)
{ for(j=i+1;j<9;j++)
{ if(a[i]==a[j])
{k=0;break;}
else k=1;
}
if(k==0)
break;
}

printf("%d\n",k);
}
看看这个,应该可以哦!!!!!!!


2006-06-13 16:29
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 
回复:(huangtaomvp)#include<stdio.h>void m...
楼上正确示意了break的“二级跳”,谢谢。

落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-06-13 18:25
编程女孩
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-6-12
收藏
得分:0 
以下是引用fgftghth在2006-6-13 10:57:46的发言:
#include<stdio.h>
void main()
{
int a[9];
int i,j,k;
for(i=0;i<9;i++) scanf("%d",a[i]);
for(i=0;i<8;i++)
for(j=i+1;j<9;j++)
{ if(a[i]==a[j]) {k=0;break;}
else k=1;
}
printf("%d",k);
}


我的意思是想输进9个一位数,判断这9个数是不是都不相同,相同就输出0,不同就输出1
可运行时却得不到正确的答案呢~~
最后输出有一个什么NULL POINTER ASSIGMENT~~~
谁知道是哪里出问题了,跟我说一声好吗~~谢谢您了~~

这样就可以了!
int main()
{
int target;
int a[9];
for(int i=0;i<9;i++)
{
int ppp;
scanf("%d",&ppp);
a[i] =ppp;
}
target =a[0];
for(int i=0;i<9;i++)
{
if(target!=a[i])
{
printf("有不同的!\n");
return 0;
}
}
printf("都相同啊!\n");
return 0;
}

你的那个break是跳离所有的循环
所有的循环都结束


2006-06-13 18:44
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 
回复:(编程女孩)以下是引用fgftghth在2006-6-13 10...
以下是引用编程女孩在2006-6-13 18:44:05的发言:

这样就可以了!
int main()
{
int target;
int a[9];
for(int i=0;i<9;i++)
{
int ppp;
scanf("%d",&ppp);
a[i] =ppp;
}
target =a[0];
for(int i=0;i<9;i++) //????????
{
if(target!=a[i])
{
printf("有不同的!\n");
return 0;
}
}
printf("都相同啊!\n");
return 0;
}

你的那个break是跳离所有的循环
所有的循环都结束 ?!别乱说一气


落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-06-13 18:53
快速回复:编译能通过,运行后却得不到想要的答案..
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.069304 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved