读书人

【大神】为什么错了

发布时间: 2013-12-19 00:33:34 作者: rapoo

【求助大神】为什么错了?

Input
输入有多组测试数据,首先是一个整数T,表示有多少组测试数据。
对于每一组测试数据,第一行是一个整数n,表示班里总共有多少个学生。
接下来有n行,每行有4个整数,代表一个学生的高数(Higher Mathematics),C语言(C languaue),英语(English)和毛邓三(Mao Deng San)的成绩。

Output
对于每一组输入,输出相应需要补考的人数。

Sample Input
1
4
78 88 68 58
59 67 67 80
79 60 60 61
60 0 60 60

Sample Output
3






#include<stdio.h> 
int main()
{
int i,m,n,a[100],t,sum,k;
int p;
scanf("%d",&n);
for(p=1;p<=n;p++)
{
scanf("%d",&i);//读入i个同学
k=i;
sum=0;
while(i)
{
for(m=0;m<4;m++)
{
t=0;
scanf("%d",&a[m]);//读入每个同学的4科成绩
if(a[m]<60)
t++;
sum=sum+t;
}
i--;
}
printf("%d\n",sum);
}
return 0;
}

[解决办法]
#include <stdio.h>
#include <typeinfo.h>

int main()
{
int i,m,n,t,sum,k;
int a[4][100];
int p;
scanf("%d", &n);

for(p=1; p<=n; p++)
{
scanf("%d", &i);//读入i个同学
k = i;
sum = 0;

while(i)
{
for(m = 0; m < 4; m++)
{
t=0;
scanf("%d", &a[i][m]);//读入每个同学的4科成绩
if(a[i][m]<60)
t++;
sum = sum + t;
}
i--;
}
printf("%d\n", sum);
}

return 0;
}

[解决办法]
#include <stdio.h>
#include <typeinfo.h>

int main()
{
int i,m,n,t,sum,k;
int a[4][100];
int p;
bool i_flag;
scanf("%d", &n);

for(p=1; p<=n; p++)
{
scanf("%d", &i);//读入i个同学
k = i;
sum = 0;

while(i)
{
i_flag = true;//新同学开始重新计数
for(m = 0; m < 4; m++)
{
t=0;
scanf("%d", &a[i][m]);//读入每个同学的4科成绩
if(a[i][m]<60)
{
t++;
}
if(true == i_flag)//这个同学已经挂科了,他的其他科目不能重复计数
{
sum = sum + t;
i_flag = false;
}
}
i--;
}
printf("%d\n", sum);
}

return 0;
}
// Input
// 输入有多组测试数据,首先是一个整数T,表示有多少组测试数据。
// 对于每一组测试数据,第一行是一个整数n,表示班里总共有多少个学生。
// 接下来有n行,每行有4个整数,代表一个学生的高数(Higher Mathematics),C语言(C languaue),英语(English)和毛邓三(Mao Deng San)的成绩。
//
// Output
// 对于每一组输入,输出相应需要补考的人数。
//
// Sample Input
// 1
// 4
// 78 88 68 58
// 59 67 67 80
// 79 60 60 61
// 60 0 60 60
//
// Sample Output
// 3

[解决办法]
引用:
Compilation Error

VC6.0编译通过
#include <stdio.h>

int main()
{
int i,m,n,t,sum,k;
int a[4][100];
int p;
bool i_flag;
scanf("%d", &n);

for(p=1; p<=n; p++)
{
scanf("%d", &i);//读入i个同学
k = i;
sum = 0;

while(i)
{
i_flag = true;//新同学开始重新计数
for(m = 0; m < 4; m++)
{
t=0;
scanf("%d", &a[i][m]);//读入每个同学的4科成绩


if(a[i][m]<60)
{
t++;
}
if(true == i_flag)//这个同学已经挂科了,他的其他科目不能重复计数
{
sum = sum + t;
i_flag = false;
}
}
i--;
}
printf("%d\n", sum);
}

return 0;
}


[解决办法]
请检查scanf的返回值。

代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生自己领悟和上厕所!
单步调试和设断点调试是程序员必须掌握的技能之一。

读书人网 >C++

热点推荐