这是洛谷上的一道新手题,考验新手对于C语言的运用。
题目:
题目描述
津津上初中了。妈妈认为津津应该更加用功学习,所以津津除了上学之外,还要参加妈妈为她报名的各科复习班。另外每周妈妈还会送她去学习朗诵、舞蹈和钢琴。但是津津如果一天上课超过八个小时就会不高兴,而且上得越久就会越不高兴。假设津津不会因为其它事不高兴,并且她的不高兴不会持续到第二天。请你帮忙检查一下津津下周的日程安排,看看下周她会不会不高兴;如果会的话,哪天最不高兴。
输入格式
输入包括 77 行数据,分别表示周一到周日的日程安排。每行包括两个小于 1010 的非负整数,用空格隔开,分别表示津津在学校上课的时间和妈妈安排她上课的时间。
输出格式
一个数字。如果不会不高兴则输出 00,如果会则输出最不高兴的是周几(用 1,2,3,4,5,6,71,2,3,4,5,6,7 分别表示周一,周二,周三,周四,周五,周六,周日)。如果有两天或两天以上不高兴的程度相当,则输出时间最靠前的一天。
输入输出样例
输入 #1
5 3 6 2 7 2 5 3 5 4 0 4 0 6
输出 #1
3
代码如下:
#include<stdio.h>
int max(int a,int b) //比较大小函数,分成三个范围
{
if(a>b)
return a; //a>b的话就传回a
if(b>a)
return b; //b>a的话就传回b
if(a==b)
return a; //如果a和b相等的话就传回a或b都行,我这里传回的a值
}
int main()
{
int u,o,i;
int a[7][2]; //声明数组输入数值
int b[7];
for(i=0;i<7;i++){
for(int j=0;j<2;j++)
scanf("%d",&a[i][j]); //输入数值
}
for(i=0;i<7;i++){
b[i]=a[i][0]+a[i][1];
}
u=max(b[0],b[1]); //疯狂循环(暴力解题所在位置)
o=max(b[2],u);
u=max(b[3],o);
o=max(b[4],u);
u=max(b[5],o);
o=max(b[6],u);
for(i=0;i<7;i++){
if(o==b[i]){ //判断最大值是哪一个数组的(哪一天)
break; //检测到了就退出循环
}
}
if(b[i]>8) //判断最大值是否超出题目要求8小时
printf("%d",i+1); //因为i在数组中,所以表示天数得加1
else
printf("0"); //没有超过八小时,则输出0
return 0;
}
里面我声明了一个判断大小的函数;
因为没试过a>b?a:b能不能在相等的时候起作用,如果有闲心也可以去试试;
中间比较大小有人可能想用冒泡排序,但是题上要求输出哪一天,如果要的话就得再声明一个和原来一样的数组,第一个数组用于排序,第二个数组用于找天数。
但是我采用暴力输出,原因嘛是因为这题只有7个数据,直接暴力;但是多用几个for或者if也是可以的。