题目:
我的代码:
#include <stdio.h>
#include <math.h>
int main()
{
int num[50];
int i;
for (i = 0; i < 50; i++)
{
scanf_s("%d", num[i]);
}
int len = sizeof(num);
int A1=0,A2=0,A3=0,A5=0;
int sum = 0,number=0;
float A4 = 0;
for (i = 0; i < len; i++)
{
if (num[i] % 5 == 0)
{
if (num[i] % 2 == 0)
A1 += num[i];
}
if (num[i] % 5 == 1)
{
int result=pow(-1, i);
A2 += result;
}
if (num[i] % 5 == 2)
A3++;
if (num[i] % 5 == 3)
{
number++;
sum += num[i];
}
if (num[i] % 5 == 4)
{
if (num[i] > A5)
{
A5 = num[i];
}
}
}
A4 = sum / number;
printf("%d %d %d %0.1f %d", A1, A2, A3, A4, A5);
return 0;
}
先不管N的问题 在我输入例子中的值的情况下 为啥不能正常输出呢?
#include <stdio.h>
int main()
{
int num[50];
int i;
int len = sizeof(num) / sizeof(num[0]);
for (i = 0; i < len; i++)
{
scanf_s("%d", &num[i]);
}
int A1=0,A2=0,A3=0,A5=0;
int number=0;
float sum = 0;
float A4 = 0;
int count = 0;
for (i = 0; i < len; i++)
{
if (num[i] % 5 == 0)
{
if (num[i] % 2 == 0)
A1 += num[i];
}
if (num[i] % 5 == 1)
{
count++;
if (count % 2 == 0) {
A2 -= num[i];
}
else {
A2 += num[i];
}
}
if (num[i] % 5 == 2)
A3++;
if (num[i] % 5 == 3)
{
number++;
sum += num[i];
}
if (num[i] % 5 == 4)
{
if (num[i] > A5)
{
A5 = num[i];
}
}
}
A4 = sum / number;
printf("%d %d %d %0.1f %d", A1, A2, A3, A4, A5);
return 0;
}
经各位指出的错误修改后的代码如下,但还是不能正确输出
13行错了那表示字节数并不是元素个数,改成int len = sizeof(num)/sizeof(num[0]);
在计算A2的时候你的逻辑有问题,你都没有计算到num[i],修改为:
在上面定义 int A2_count=0;
if (num[i] % 5 == 1)
{
A2_count++;
if(A2_count % 2==0) {
A2 -= num[i];
}else {
A2 += num[i];
}
}
再次,你计算A4的时候,sum的类型修改为float 然后做一个取一位小数的处理即可。其它的值都是正确的。望采纳!!
for (i = 0; i < 50; i++)//因为你这里要循环输入50次,如果你先不管N,你可以把50改成你要输入的个数试试看看
{
scanf_s("%d", &num[i]);//这里&缺了
}