键盘输入若干整数(遇负数结束),要求将其中的偶数输出(每行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格式化输出。