寻找偶数,求和,求平均

键盘输入若干整数(遇负数结束),要求将其中的偶数输出(每行3个偶数)并输出偶数的平均值(小数点后面保留2位)。要求1:分别用for循环和while循环实现。(注:编写两个源程序)要求2:提交截图(含源代码及运行结果)
示例输入:2 3 4 6 17 82 15 12 -9
输出:2 4 6
82 12
这些偶数的平均值是:21.20
提示:2和82是左对齐

使用for循环实现:

#include <stdio.h>

int main()
{
    int num, count = 0, sum = 0;
    printf("请输入若干整数,以负数结束:\n");
    for (int i = 0; ; i++) {
        scanf("%d", &num);
        if (num < 0) {
            break;
        }
        if (num % 2 == 0) {
            count++;
            sum += num;
            printf("%-6d", num);
            if (count % 3 == 0) {
                printf("\n");
            }
        }
    }
    if (count % 3 != 0) {
        printf("\n");
    }
    if (count > 0) {
        printf("这些偶数的平均值是:%.2f\n", (float)sum / count);
    } else {
        printf("没有输入偶数\n");
    }
    return 0;
}

使用while循环实现:

#include <stdio.h>

int main()
{
    int num, count = 0, sum = 0;
    printf("请输入若干整数,以负数结束:\n");
    scanf("%d", &num);
    while (num >= 0) {
        if (num % 2 == 0) {
            count++;
            sum += num;
            printf("%-6d", num);
            if (count % 3 == 0) {
                printf("\n");
            }
        }
        scanf("%d", &num);
    }
    if (count % 3 != 0) {
        printf("\n");
    }
    if (count > 0) {
        printf("这些偶数的平均值是:%.2f\n", (float)sum / count);
    } else {
        printf("没有输入偶数\n");
    }
    return 0;
}

博主看一下这两种实现方式是否满足要求

没输入一个整数就判断,小于0就结束,偶数累加

示例输入:2 3 4 6 17 82 15 12 -9
输出:2 4 6
82 12
#include <stdio.h>
int main()
{
    int n,sum=0,count=0;
    scanf("%d",&n);
    while(n>= 0)
    {
        if(n%2==0)
        {
            sum += n;
            count++;
            printf("%d ",n);
            if(count % 3 == 0)
                printf("\n");
        }
        scanf("%d",&n);
    }
    if(count % 3 != 0)
        printf("\n");
    if(count != 0)
        printf("%.2f",sum*1.0/count);
    else
        printf("0");
}

参考GPT和自己的思路:好的,这是一个比较简单的问题,以下是for循环和while循环的源代码:

for循环实现:

#include <stdio.h>
int main()
{
    int sum=0, cnt=0, n;
    printf("请输入整数:");
    for(;;)
    {
        scanf("%d", &n);
        if(n<0) break;
        if(!(n%2))
        {
            cnt++;
            printf("%-5d",n);
            sum+=n;
            if(cnt%3==0) printf("\n");
        }
    }
    printf("\n这些偶数的平均值是:%.2lf\n",(double)sum/cnt);
    return 0;
}

while循环实现:

#include <stdio.h>
int main()
{
    int sum=0, cnt=0, n;
    printf("请输入整数:");
    while(1)
    {
        scanf("%d", &n);
        if(n<0) break;
        if(!(n%2))
        {
            cnt++;
            printf("%-5d",n);
            sum+=n;
            if(cnt%3==0) printf("\n");
        }
    }
    printf("\n这些偶数的平均值是:%.2lf\n",(double)sum/cnt);
    return 0;
}

注意,两个程序都不做除数为0的检查,如果没有输入任何偶数,除法会导致程序出错。同时,输出格式要求为左对齐,需要使用printf格式化输出。