| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 998 人关注过本帖
标题:如何让它只显示一次啊??想不出来
只看楼主 加入收藏
dax
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2007-9-13
收藏
 问题点数:0 回复次数:6 
如何让它只显示一次啊??想不出来

题目: 输入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
专家分:0
注 册:2007-10-25
收藏
得分:0 

#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
专家分:0
注 册:2007-11-20
收藏
得分:0 
你们写的程序都没有考虑算法的复杂性,这类问题不要重复比较,遵循只往后看的原则:
#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
专家分:0
注 册:2007-11-20
收藏
得分:0 

又或者,在楼主程序里面加一个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
专家分:0
注 册:2007-11-20
收藏
得分:0 
同意二楼的观点
2007-11-20 21:51
zhouqingwuji
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2007-10-16
收藏
得分:0 
都很有见解。。nb

我就是我,不是别人!
2007-11-20 22:48
seavoice
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-11-16
收藏
得分:0 
你写的程序对每一个数组元素,都那之外的每个元素进行了除运算,因此重复的输出也是不可避免的
其实这个题目也很简单的,你的目的:只要出现一个整除的元素,那么内循环你让它停止即可,这样做就没问题了
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 | TOP | 手机版

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