| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付买域名,送MP3、MP4
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY买空间,免费送域名(厦门中资源)
共有 513 人关注过本帖
标题:如何让它只显示一次啊??想不出来
收藏  订阅  推荐  打印 
dax
Rank: 1
等级:新手上路
帖子:7
积分:170
注册:2007-9-13
如何让它只显示一次啊??想不出来

题目: 输入20个整数存入一个整型数组,输出其中能被数组中其它(只需其中一个)元素整除的那些数组元素。
我写的:
#include<stdio.h>
main()
{
int a[20],i,j;
for(i=0;i<20;i++)
scanf("%d",&a[i]);
for(i=0;i<20;i++)
{
for(j=0;j<20;j++)
if((a[j]%a[i]==0)&&(i!=j))
printf("%d\n",a[i]);
}
}
我的会把得到的数显示很多次,怎么让它只显示一次??

搜索更多相关主题的帖子: 元素  整型  int  main  整数  
2007-11-20 15:47
land945
Rank: 1
等级:新手上路
帖子:12
积分:232
注册:2007-10-25

#include<stdio.h>
main()
{
int a[20],b[20],k=0,i,j;
for(i=0;i<20;i++)
scanf("%d",&a[i]);
for(i=0;i<20;i++)
{
for(j=0;j<20;j++)
if((a[i]%a[j]==0)&&(i!=j))
{b[k++]=a[i];break;}
}
for(j=0;j<k;j++)
printf("%3d",b[j]);
}
我测试过了,这样应该没有问题。

2007-11-20 17:42
lijitaoccnu
Rank: 1
等级:新手上路
帖子:5
积分:150
注册:2007-11-20

你们写的程序都没有考虑算法的复杂性,这类问题不要重复比较,遵循只往后看的原则:
#include<stdio.h>
void main()
{
int a[20],i,j;
for(i=0;i<20;i++)
scanf("%d",&a[i]);
for(i=0;i<20;i++)
{
for(j=i+1;j<20;j++)
{
if(a[i]%a[j]==0)
{
printf("%d ",a[i]);
break;
}
if(a[j]%a[i]==0)
{
printf("%d ",a[j]);
break;
}
}
}
printf("\n");
}
自己比较一下,体会一下哈。
2007-11-20 18:39
lijitaoccnu
Rank: 1
等级:新手上路
帖子:5
积分:150
注册:2007-11-20

又或者,在楼主程序里面加一个break:

#include<stdio.h>
void main()
{
int a[20],i,j;
for(i=0;i<20;i++)
scanf("%d",&a[i]);
for(i=0;i<20;i++)
{
for(j=0;j<20;j++)
if((a[i]%a[j]==0)&&(i!=j))
{
printf("%d ",a[i]);
break;
}
}
printf("\n");
}
就OK了/。

2007-11-20 21:08
szb123
Rank: 1
等级:新手上路
帖子:11
积分:210
注册:2007-11-20

同意二楼的观点
2007-11-20 21:51
zhouqingwuji
Rank: 2
等级:注册会员
帖子:56
积分:658
注册:2007-10-16

都很有见解。。nb

我就是我,不是别人!
2007-11-20 22:48
seavoice
Rank: 1
等级:新手上路
帖子:5
积分:150
注册:2007-11-16

你写的程序对每一个数组元素,都那之外的每个元素进行了除运算,因此重复的输出也是不可避免的
其实这个题目也很简单的,你的目的:只要出现一个整除的元素,那么内循环你让它停止即可,这样做就没问题了
main()
{int a[20];
int i=0,j=0;
clrscr();
printf("please input a:\n");
for(i=0;i<20;i++)
scanf("%d",&a[i]);
for(i=0;i<20;i++)
{
for(j=0;j<20;j++)
if(a[j]%a[i]==0 && i!=j) break;
printf("a[%d]=%d\n",i,a[i]);
}
getch();
}
不过上面写出的也只是雏形,因为马上宿舍熄灯了,所以只能那么写,你写的时候可以使之更为完善

2007-11-20 23:35
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.057898 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved