|
Posted on 2011-10-03 00:40 Uriel 阅读(331) 评论(0) 编辑 收藏 引用 所属分类: 考研&保研复试上机题
这套在交大的题目中算是很水的。。
1. 日期差值 大水不解释
//2009年上海交通大学计算机研究生机试题 日期差值
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

 int chk(int y) {
 if(y % 4 == 0) {
if(y % 400 == 0) return 1;
else if(y % 100 == 0) return 0;
else
return 1;
}
return 0;
}

int y, yy, m, mm, d, dd;
 int mon1[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
 int mon2[] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
char s[20];

 int main() {
int i;
 while(~scanf("%s", s)) {
y = (s[0] - '0') * 1000 + (s[1] - '0') * 100 + (s[2] - '0') * 10 + s[3] - '0';
m = (s[4] - '0') * 10 + s[5] - '0';
d = (s[6] - '0') * 10 + s[7] - '0';
scanf("%s", s);
yy = (s[0] - '0') * 1000 + (s[1] - '0') * 100 + (s[2] - '0') * 10 + s[3] - '0';
mm = (s[4] - '0') * 10 + s[5] - '0';
dd = (s[6] - '0') * 10 + s[7] - '0';
int ans = 0;
for(i = y + 1; i < yy; ++i) ans += chk(i) + 365;
 if(y != yy) {
 for(i = 1; i < mm; ++i) {
if(chk(yy)) ans += mon2[i - 1];
else
ans += mon1[i - 1];
}
ans += dd;
 for(i = m + 1; i <= 12; ++i) {
if(chk(y)) ans += mon2[i - 1];
else
ans += mon1[i - 1];
}
if(chk(y)) ans += mon2[m - 1] - d + 1;
else
ans += mon1[m - 1] - d + 1;
}
 else {
 if(m == mm) {
ans += dd - d + 1;
}
 else {
if(chk(y)) ans += mon2[m - 1] - d + 1;
else
ans += mon1[m - 1] - d + 1;
ans += dd;
 for(i = m + 1; i < mm; ++i) {
if(chk(yy)) ans += mon2[i - 1];
else
ans += mon1[i - 1];
}
}
}
printf("%d\n", ans);
}
return 0;
}
2. 取中值 一开始理解错。。以为是排序后的中值。。
//2009年上海交通大学计算机研究生机试题 取中值
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<algorithm>
using namespace std;

int l1, l2, a[1000010], b[1000010], c[1000010];

 int main() {
int cse, i, s1, e1, s2, e2, nt;
scanf("%d", &cse);
 while(cse--) {
scanf("%d %d", &l1, &l2);
for(i = 0; i < l1; ++i) scanf("%d", &a[i]);
for(i = 0; i < l2; ++i) scanf("%d", &b[i]);
scanf("%d %d", &s1, &e1);
scanf("%d %d", &s2, &e2);
nt = e1 + e2 - s1 - s2 + 3;
nt >>= 1;
if(nt <= e1 - s1 + 1) printf("%d\n", a[s1 + nt - 2]);
else
printf("%d\n", b[s2 + (nt + s1 - e1 - 1) - 2]);
}
return 0;
}
3. 字母统计 大水不解释
//2009年上海交通大学计算机研究生机试题 字母统计
#include<stdio.h>
#include<ctype.h>
#include<stdlib.h>
#include<string.h>

int fg[26];
char s[10000];

 int main() {
int i;
 while(gets(s) != NULL) {
memset(fg, 0, sizeof(fg));
 for(i = 0; s[i]; ++i) {
if(isupper(s[i])) fg[s[i] - 'A']++;
}
for(i = 0; i < 26; ++i) printf("%c:%d\n", i + 'A', fg[i]);
}
return 0;
}
|