1至n不重复输出c语言,C语言 习题 输入n个数,输出不重复的数及它们的和

难住本小白的一道c语言题目,搞了两天才出来,不多比比,直接上题

题目:输入n个整数,输出不重复整数及它们的和。

//讲真,当时那道题,读了两遍愣是没懂・・・・・・

此题笔者认为有两个难点,

1.“如何输入n个整数”,当按下回车键时结束输入,其中n是不定的,(不能要求先输入n的值,那样难度直接降低)

ps:如果是字符的话,直接用s[i]!=’\n’就行,其中s[i]是字符数组的某一个元素

但是本题是整数啊,是整数!当然如果说你用某一个整数来作为结束的标志,虽然可以,但是并不能令人满意

2.“如何删除重复的数”,笔者的思路是把不重复的数放进另一个数组,肯定会有别的思路,敬请指教,这个难点主要是逻辑上的问题,不说了直接上代码 #include int main() {int a[10],b[10],i=0,j=0,k=0,m=0,sum=0; char ch; int flag; do { scanf("%d",&a[i]); i++; }while((ch=getchar())!='\n'); k=i; for(i=0;i

其中第一个难点是用while((ch=getchar())!=’\n’);实现的,好吧,我承认,这是在网上看到的,竟然没想到getchar()有如此奇效。第二个难点就是for循环里的,其实也算不上很难,就是逻辑上有些不好想,(尤其是我这样的新手)。

----------------------------------------------------分割线--------------------------------------------------------

下面在提供一种方法,不是笔者写的,宿友的一个同学的作品,必须承认,虽然笔者不太懂,但是这个代码很简洁,就是有一个问题,当输入个数在4个及4个以下时,是无法结束的,直接放代码 #include #include #include int main() {int a[10],b[5]; int sum=0; int i; memset(a,0,sizeof(a)); for(i=0;i<5;i++) {scanf("%d",&b[i]); } for(i=0;i<5;i++) {if(a[b[i]]==0) {printf(" %d",b[i]); sum+=b[i]; a[b[i]]=1; } } printf("\n%d",sum); return 0; }

希望某个大佬解释下吧・・・・・・就写到这了,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值