回 帖 发 新 帖 刷新版面

主题:[讨论]求教  为何我的算法不能连续循环

#include    <stdio.h>
int main()
{
    int count=0;
    int number;
    while(count!=10)
    {
    int largest1=0,largest2=0;
    count++;
    printf("%d请输入数字:\n",count);
    scanf("%d",&number);
        
        if(largest1<number||largest2<number)
        {
            largest2=largest1;
            largest1=number;
            printf("%d %d\n",largest1,largest2) ;
        }
        else if(largest1>number||largest2<number)
        {
            largest2=number;
            printf("%d %d\n",largest1,largest2);

        }
        else(largest1>number||largest2>number) {
            printf("%d %d",largest1,largest2);
        }
        while(count!=10)
        {
        printf("%d请输入数字:\n",count+1);
        scanf("%d",&number);
        count++;
        break;
        }
}
}
这个从10个数中算出俩个最大的数 largest1 》largest2

回复列表 (共5个回复)

沙发

针对楼主的题目,首先编译器通不过,如果楼主编译器能通过,说明你很强大。
怎么说呢?
if()
{
}
else if()
{
}
else if()
{
}
else
{
}

楼主的
else(largest1>number||largest2>number) {
            printf("%d %d",largest1,largest2);
        }
编译器能通过?
还有前面写了int main(),需要返回一个整型,那后面就写个return 0;要么写着void main()也行。
不知道楼主学过数组没?我用数组实现一下,不懂的话,我再想想方法。
#include <stdio.h>
int main()
{
    int count=0;
    int number[10];
    int i, j;
    int temp;

    while(count!=10)
    {
        printf("请输入第%2d个数:", count + 1);
        scanf("%d", &number[count ++]);
    }
    for(i = 9; i > 0; i --)//冒泡排序法
    {
        for(j = 0; j < i; j ++)
        {
            if(number[j] < number[j + 1])
            {
                temp = number[j];
                number[j] = number[j+1];
                number[j+1] = temp;
            }
        }
    }

    printf("最大的两个数为:%2d %2d\n", number[0], number[1]);
    return 0;
}

板凳

您的意思是我的格式不是太规范吗?以前都能编译过的。但是我最大的疑惑在于我的算法和显示  单独计算的时候是符合我的想法的 整体运行 不是出错就是显示的俩个数顺序错了 抑郁。

3 楼

if()
{
}
else if()
{
}
else if()
{
}
else
{
}

你最后一个else后面还有个()。编译器应该不能通过吧?
什么叫做整体运行 不是出错就是显示的俩个数顺序错了?
我不是很明白楼主的意思哈,
我的想法是这样的,输入10个数,然后通过冒泡排序法从大到小排序
所以最大的二个数肯定是数组的第一个和第二个,也就是number[0], number[1]

4 楼


我的意思 我注释掉 其中的一些 if  else  运行的话 得到我想要的顺序 但不注释掉 就不能如愿

5 楼

#include    <stdio.h>
int main()
{
    int count=0;
    int number;

    int largest1=0,largest2=0;


    while(count!=10)
    {

    count++;
    printf("%d请输入数字:\n",count);
    scanf("%d",&number);
        
        if(largest1<=number)
        {
            largest2=largest1;
            largest1=number;
            printf("%d %d\n",largest1,largest2) ;
        }
        else if(largest1>number && largest2<number)
        {
            largest2=number;
            printf("%d %d\n",largest1,largest2);

        }
        else
            printf("%d %d\n",largest1,largest2);

    }

}

我来回复

您尚未登录,请登录后再回复。点此登录或注册