C++新手小白求救各位大佬!!!我的程序为何不对?

WYHMingMing WYHMingMing 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我最近正在跟着一本书——《信息学奥赛一本通(C++版)》学习C++,书后练习题里有一道题如下:

【题目描述】
监护室每小时测量一次病人的血压,若收缩压在90-140之间并且舒张压在60-90之间(包含端点值)则称之为正常,现给出某病人若干次测量的血压值,计算病人保持正常血压的最长小时数。

【输入】
第一行为一个正整数n(n<100),其后有n行,每行2个正整数,分别为一次测量的收缩压和舒张压。

【输出】
输出仅一行,血压连续正常的最长小时数。

【输入样例】
4
100 80
90 50
120 60
140 90
【输出样例】
2

我的程序如下:


# include <cstdio>
using namespace std;
int main()
{
int hour, systolic, diastolic, last_keep = 0, next_keep = 0, not_normal = 0;
//定义hour小时数、systolic收缩压、diastolic舒张压、last_keep和next_keep保持小时数和not_normal不正常小时数整型变量
scanf("%d", &hour); //scanf输入小时数
for (int i = 1; i <= hour; ++i) //利用for循环让用户输入hour遍血压
{
scanf("%d %d", &systolic, &diastolic); //scanf输入收缩压和舒张压
if ((90 <= systolic) && (systolic <= 140) && (60 <= diastolic) && (diastolic <= 90)) //判断血压是否正常
{
if (not_normal == 0) //判断血压是否还没有不正常过
{
last_keep += 1; //(不正常之前的)保持小时数加1
}
else //血压已经不正常过了
{
next_keep += 1; //(不正常之后的)保持小时数加1
if (next_keep > last_keep) //判断新保持小时数是否破纪录了
{
last_keep = next_keep; //更新记录,不管前面的连续保持,以这个新纪录为新起点继续
next_keep = 0; //更新标准后归零
not_normal = 0; //更新标准后归零
}
}
}
else //血压不正常
{
if (not_normal == 0) //判断是不是第一次不正常
{
not_normal += 1; //不正常次数加1
}
}
}
printf("%d\n", last_keep); //printf输出最长纪录
return 0; //结束程序
}


那本书有一个配套的测评网站——http://ybt.ssoier.cn:8088/,我把程序传上去之后它说答案错误,我很纳闷,看了书后参考答案,参考答案如下:


#include <cstdio>
using namespace std;
int main()
{
int a,b,i,n,t,m,j,max=0; //max储存病人血压连续正常的最长小时数
scanf("%d", &n); t=0;
for(i=1;i<=n;++i) //循环判断每个小时中,病人的血压是否正常
{
scanf("%d%d",&a,&b);
if (a>=90&&a<=140&&b>=60&&b<=90)
//判断在i个小时中,病人的血压是否正常
{
t++;
if (t>max) max=t;
}
else t=0; //这个病人血压不正常,则清零t
}
printf("%d\n",max);
return 0;
}


我看完后很纳闷,我的程序哪里错了?

求各位大佬们指教指教!!!感谢!!!十分感谢!!!
...全文

相关推荐

评论 6
收藏 已收藏
分享
返回顶部
WYHMingMing
C++ 语言 65,214 成员 250,514 内容