这道题C语言编程题我有一个测试点总是通不过,请问我错在哪?

题目:据说一个人的标准体重应该是其身高(单位:厘米)减去100、再乘以0.9所得到的公斤数。真实体重与标准体重误差在10%以内都是完美身材(即 | 真实体重 − 标准体重 | < 标准体重×10%)。已知市斤是公斤的两倍。现给定一群人的身高和实际体重,请你告诉他们是否太胖或太瘦了。

输入格式:
输入第一行给出一个正整数N(≤ 20)。随后N行,每行给出两个整数,分别是一个人的身高H(120 < H < 200;单位:厘米)和真实体重W(50 < W ≤ 300;单位:市斤),其间以空格分隔。

输出格式:
为每个人输出一行结论:如果是完美身材,输出You are wan mei!;如果太胖了,输出You are tai pang le!;否则输出You are tai shou le!。

源代码:
#include <stdio.h>

int main(void)
{
int N;
int height,weight;
int i;
double standard;
scanf("%d",&N);

for(i=0;i<N;i++)
{
scanf("%d %d",&height,&weight);

standard = (height-100)*0.9*2;

if(weight>0.9*standard&&weight<1.1*standard)
printf("You are wan mei!");
else
{
if(weight<standard)
printf("You are tai shou le!");
else
printf("You are tai pang le");
}
if(i != N-1)
printf("\n");
}

return 0;
}

程序没问题啊,能正常输出:

你说的通不过,是编译器报的错吗?

附了一个代码,是一次性输入之后,然后一次性依次每行输出:



#include<stdio.h>

#include<stdlib.h>


int main()

{


int N;

int height, weight;

int i;

double standard;

scanf("%d", &N);


int *data = (int*)malloc(2 * N * sizeof(int));

for (i = 0; i < 2 * N; i = i + 2)

{

scanf("%d %d", &data[i], &data[i + 1]);

}


for (i = 0; i < 2 * N; i = i + 2)

{

height = data[i];

weight = data[i + 1];


standard = (height - 100)*0.9 * 2;


if (weight > 0.9*standard&&weight < 1.1*standard)

printf("You are wan mei!\n");

else

{

if (weight < standard)

printf("You are tai shou le!\n");

else

printf("You are tai pang le!\n");

}


}

system("pause");

return 0;


}

追问

这个程序的问题应该是在某个测试点的答案错误,您的这段代码我提交了一下,结果比我的还多错了一个测试点( ̄□ ̄)

追答

你说的测试点是什么东西?

追问

追答

是没有加限制条件吗,比如限制N、H和W,可以试一下加上if判断语句。
不是很理解他这个评分标准到底是想干嘛,明明程序已经实现了。

追问

不知道还有没有限制条件,我把所有已知的信息都复制过来了。谢谢你一直回答我的问题。

追答

不客气

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-02-22
#include <stdio.h>
int main()
{
int H = 0;
double weight =0;
scanf("%d",&H);
printf("%0.1f",weight=(H-100)*0.9*2);
return 0;

}
主要是要注意保留小数点一位这个测试点,"%0.1f"
相似回答