标题:for和while的区别?
只看楼主
c392
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2020-1-5
结帖率:100%
已结贴  问题点数:20 回复次数:10 
for和while的区别?
    小白求大佬指点,下面有这道题目的两个解法,本人认为一样但运行结果不一样,
抱拳了
【问题描述】输入N个整数,剔除其中能被3或者5整除的元素,输出最后的数组
【输入形式】整数N,和N个整数
【输出形式】剔除数据后的结果,如果结果为空,则输出字符串NULL
【样例输入】5 1 2 3 4 5
【样例输出】1 2 4
【样例输入】5 12 6 3 9 5
【样例输出】NULL

#include<stdio.h>

int main()
{
    int a[100]= {0},b[100]= {0},i,j,k=0,n,sum=0,x,y;
    scanf("%d",&n);
    for(i=0; i<n; i++)
    {
        scanf("%d",&a[i]);
    }
    for(j=0; j<n; j++)
    {
        x=a[j]%5;
        y=a[j]%3;
        if(x==0||y==0)
        {
        continue;
        }
        if(x!=0&&y!=0)
        {
            b[k]=a[j];
            k++;
        }
    }
    for(int p=0; p<=k; p++)
    {
        sum+=a[p];
    }
    if(sum!=0)
    {
        for(int o=0; o<=k; o++)
        {
            printf("%d ",a[o]);
        }
    }
    if(sum==0)
    {
        printf("NULL");
    }
    return 0;
}

#include<stdio.h>

int main()
{
    int a[100]= {0},b[100]= {0},i,j,k=0,n,sum=0,x,y;
    scanf("%d",&n);
    for(i=0; i<n; i++)
    {
        scanf("%d",&a[i]);
    }
    for(j=0; j<n; j++)
    {
        x=a[j]%5;
        y=a[j]%3;
        if(x==0||y==0)
        {
        continue;
        }
        if(x!=0&&y!=0)
        {
            b[k]=a[j];
            k++;
        }
    }
    for(int p=0; p<=k; p++)
    {
        sum+=a[p];
    }
    if(sum!=0)
    {
        for(int o=0; o<=k; o++)
        {
            printf("%d ",a[o]);
        }
    }
    if(sum==0)
    {
        printf("NULL");
    }
    return 0;
}
搜索更多相关主题的帖子: scanf for 输出 sum int 
2020-01-05 11:01
forever74
Rank: 12Rank: 12Rank: 12
来 自:CC
等 级:贵宾
威 望:49
帖 子:1636
专家分:3940
注 册:2007-12-27
得分:3 
没细看,至少有几个问题:
你需要输出的是b数组也就是剩下的数据,你输出a数组干啥?
b数组里有效数据就是k个,下标从0到k-1,直接根据k干活就是,求和干啥?
你已经把要去掉的数据continue了,下面就没必要if(x!=0&&y!=0)了,当然,不是错误,只是有添足之憾。
两段的区别在哪儿?

[此贴子已经被作者于2020-1-5 12:06编辑过]


对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2020-01-05 12:04
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
得分:1 
楼主的问题提的很是时候,我刚刚被什么lrw什么次幂里的for  while  if循环搞的懵掉了,你又来一个,正好这一楼就当我的备忘录,以我现有的知识库,我认为for和while没有什么区别都是满足条件继续循环,否则跳出循环,continue  相当于一个break不过break是跳出整个循环,continue是跳出本次循环,不过面对你这题我也出错!!!!!!!!打不出NULL来!!!!
#include<iostream>
using namespace std;
int main()
{   int n;
    int a[n];
    int count=0;
    cin >> n;
    for(int i=0; i<n; ++i)
    {
        cin >> a[i];
    }
    for(int i=0; i<n; ++i)
    {   if(a[i]%3==0||a[i]%5==0)
        {   continue;
        }
        cout<< a[i]<<" ";
        count+=a[i];
        if(count=0)
        {   cout << "没有"<< endl;
        }
    }

}
。。。我只会用C++打C,凑合着看吧备注cin相当于scanf    其他的地方估计楼主能看懂

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-01-05 14:21
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
得分:1 
楼主咱们俩小白齐心协力看能把这题解决不,天呐!能打印出NULL的都是大神啊

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-01-05 14:37
forever74
Rank: 12Rank: 12Rank: 12
来 自:CC
等 级:贵宾
威 望:49
帖 子:1636
专家分:3940
注 册:2007-12-27
得分:1 

if(count==0)

忙中出错,道理都懂,就是用你的话说跟头摔得还少
这个问题有个偏方,就是写if的时候把常量写前面,这样忘记一个等号就会报错。
if(0==count)酱紫

[此贴子已经被作者于2020-1-5 17:16编辑过]


对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2020-01-05 16:27
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
得分:1 
回复 5楼 forever74
我确实栽了跟头,但你改为的跟头干嘛哩,我的是count+=a[i];你的是count+=a;
现在的问题不是一个==号的问题了,是continue这个熊孩子的问题,以本例题来看如果是5 1 2 3 4 5这个熊孩子会吧3 5给吃了,然后把1 2 4留给你,但是如果你输入5 5 5 5 5 5这个熊孩子是把所有的5都给你吃了,你就呆≡ ̄﹏ ̄≡看着熊孩子把糖吃完,渣都没给你留,所以count+=a[i];这个压根就没意义,因为a[i]被熊孩子给吃了,没办法知道a[i]是什么,所以count+=a[i];后面的几句话是我写着玩玩意思意思需要有个NULL

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-01-05 16:56
forever74
Rank: 12Rank: 12Rank: 12
来 自:CC
等 级:贵宾
威 望:49
帖 子:1636
专家分:3940
注 册:2007-12-27
得分:1 
我没有改过代码
应该是我的浏览器的问题

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2020-01-05 17:16
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
得分:1 
回复 7楼 forever74
我的基础太差了,以我现有知识储备,我没有更完美的解决方法,唉,啥时候我能像你一样啊

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-01-05 17:29
forever74
Rank: 12Rank: 12Rank: 12
来 自:CC
等 级:贵宾
威 望:49
帖 子:1636
专家分:3940
注 册:2007-12-27
得分:3 
把最后的if块挪到for块外面嘛。
收到的鲜花
  • 叶纤2020-01-05 19:43 送鲜花  1朵  

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2020-01-05 18:00
纯蓝之刃
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:76
帖 子:554
专家分:3690
注 册:2019-7-29
得分:6 
程序代码:
#include<stdio.h>

int main()
{
    int a[100]= {0},b[100]= {0},i,j,k=0,n,x,y;
    scanf("%d",&n);
    for(i=0; i<n; i++)
    {
        scanf("%d",&a[i]);
    }
    for(j=0; j<n; j++)
    {
        x=a[j]%5;
        y=a[j]%3;

        if(x!=0&&y!=0)
        {
            b[k]=a[j];
            k++;
        }
    }
    if(k!=0)
    {
        for(i=0; i<k; i++)
        {
            printf("%d ",b[i]);
        }
    }
    else
        printf("NULL");
    return 0;
}
收到的鲜花
  • 叶纤2020-01-05 19:44 送鲜花  1朵   附言:哇,直接把熊孩子给打跑了

一沙一世界,一花一天堂。无限掌中置,刹那成永恒。
2020-01-05 18:17



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-498815-1-1.html




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

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