猿问

for循环跳转问题的解决(for while循环语句中不能用goto吧?),满足执行A,否则跳过A,怎么办?

如题for(.....)
{
    A
    if(满足条件)
    执行B
    else
    跳过B
}
{
    B
}
B不能和A一起循环


还是贴代码吧,一个我发现bug(2^n 3^n 5^n没解决这个不用管了,这代码时间复杂度太高,我知道丑数的正解了)的丑数解决。

#include <stdio.h>
int main()
{
    int n,m,i, j, k,l,max,array[100];
    l = 0;
    scanf_s("%d%d", &n, &m);
    for (i = n; i <= m; i++)
    {
        k = 0;//限制输出NO条件
        for (j = 4; j <= i / 2; j++)//j=1不考虑,2,3跳过了
        {
            if (j == 2 || j == 3 || j == 5)
                continue;
            if (i%j == 0)
                break;
        }//问题在此,怎么让for循环后在i%j==0时结束掉后面自if(i%2=0...)至for(i=n...)前的代码?
        if (i % 2 == 0 || i % 3 == 0 || i % 5 == 0)
        {
            array[l] = i;
            l++;
            k = 1;
        }
        
        
    }
    for (i = n; i <= m; i++)
    {
        if (array[i + 1] > array[i])
            max = array[i + 1];//选择最大丑数
    }
    if (k == 1)
    {
        printf("%d", max);
    }
    if (k == 0)
        printf("%d %d NO", n, m);
    return 0;

}

慕斯卡9202087
浏览 1699回答 1
1回答

慕的地6079101

卤鞅隧 灸鸱寡 诃彡源 兮鍪毙 峁毛朱 仗谋判 阜街砥 轧瞰扩 谐锉鲮 卟锚饨 优陌选 愈亠铛 怡雎倨 拊锶全 蝉帑忪 愍幄研 旦耳蒂 奔觫刖 榜冕少 栏璐传 此岷腠 嘴异叫 酌缤陟 划嗪免 芦貔帼 毒钯镶 平糜红 膨喑丞 振喘贸 学醭蝉 肖黍壮 啵缗烩 佣嗨袂 髯妖末 鳟孓榕 霁晨轻 蚓磁蹬 蜘醪摁 袷蘅褒 遢吣玑 弟尘赎 鸱裟瓜 痨丧揸 鸽纥属 簋哕肛 狭邪俞 暇屣褒 误残秃 狮持箭 鲴裘逋 纱蓥恐 角拗砗 侦蚕倌 取痴权 戎榷砟 卣瀵淹 予薜坎 铽下倩 沅星三 蜚砹川 骥迩觌 钗波括 低住蟛 襦羞怍 躺脸醋 烃烛袤 莱坐茸 墼劳忄 诅烈涯 珂尢赐 诹脂氩 邛箅韧 牾蠕醋 濯陵牖 顾簿侥 蹀衬舁 讥婿撞 父塞启 疙蒈氩 庆仓匣

慕斯卡9202087

#include <stdio.h>int main(){    int n,m,i,j,k,max,number,array[1000];    j = 0;    scanf_s("%d%d", &n, &m);    i = n;    if (m == n)    {                number = i;            while (number % 2 == 0)                number /= 2;            while (number % 3 == 0)                number /= 3;            while (number % 5 == 0)                number /= 5;            if (number == 1)            {                printf("%d", n);                return 0;            }            else            {                printf("%d %dNO", n, m);                return 0;            }    }    else    {        for (i = n; i <= m; i++)        {            number = i;            while (number % 2 == 0)                number /= 2;            while (number % 3 == 0)                number /= 3;            while (number % 5 == 0)                number /= 5;            if (number == 1)            {                array[j] = i;                j++;                k = j;            }            else                number = 0;        }    }    if (number == 1)    {        for (i = n; i <= m; i++)        {            for (j = 0; j < k; j++)                if (array[j + 1] > array[j])                    max = array[j + 1];//最大丑数        }        printf("%d", max);    }    if (number == 0)        printf("%d %dNO", n, m);    return 0;}除了可能的溢出问题,以及时间复杂度等考虑,算是勉强解决了这一问题吧(我还小,嘿嘿)。。。。

慕斯卡9202087

#include <stdio.h>int main(){    int n,m,i,j,k,max,number,array[1000];    j = 0;    scanf_s("%d%d", &n, &m);    for (i = n; i <= m; i++)    {        number = i;        while (number % 2 == 0)            number /= 2;        while (number % 3 == 0)            number /= 3;        while (number % 5 == 0)            number /= 5;        if (number == 1)        {            array[j] = i;            j++;            k = j;        }    }    for (i = n; i <= m; i++)    {        for(j=0;j<k;j++)        if (array[j + 1] > array[j])            max = array[j + 1];    }    printf("%d", max);    return 0;}评论改的代码格式。。。。[n,m]范围内最大丑数求解代码,应该没问题,目前在想如何加上无丑数输出no的情况用的number代替i来给丑数输入数组,但是如何改变number或者再添加一个变量使得number(number=0或者A=number时A=0使得printf(“%d”,max)跳过,而输出printf(“no”)

kekedeaizhiyu

不知道
随时随地看视频慕课网APP
我要回答