7-1 A乘以B
分数 30
作者 陈越
单位 浙江大学
看我没骗你吧 —— 这是一道你可以在10秒内完成的题:给定两个绝对值不超过100的整数A和B,输出A乘以B的值。
输入格式:
输入在第一行给出两个整数A和B(−100≤A,B≤100),数字间以空格分隔。
输出格式:
在一行中输出A乘以B的值。
输入样例:
-8 13
输出样例:
-104
参考答案:
#include <stdio.h>
int main (void) {
int A, B;
scanf("%d %d", &A, &B);
printf("%d", A*B);
return 0;
}
7-2 新胖子公式
分数 20
作者 陈越
单位 浙江大学
根据钱江晚报官方微博的报导,最新的肥胖计算方法为:体重(kg) / 身高(m) 的平方。如果超过 25,你就是胖子。于是本题就请你编写程序自动判断一个人到底算不算胖子。
输入格式:
输入在一行中给出两个正数,依次为一个人的体重(以 kg 为单位)和身高(以 m 为单位),其间以空格分隔。其中体重不超过 1000 kg,身高不超过 3.0 m。
输出格式:
首先输出将该人的体重和身高代入肥胖公式的计算结果,保留小数点后 1 位。如果这个数值大于 25,就在第二行输出 PANG,否则输出 Hai Xing。
输入样例 1:
100.1 1.74
输出样例 1:
33.1
PANG
输入样例 2:
65 1.70
输出样例 2:
22.5
Hai Xing
参考答案:
#include <stdio.h>
int main (void) {
double weight, height;
scanf("%lf %lf", &weight, &height);
double flag = weight / (height * height);
printf("%.1lf\n", flag);
if(flag > 25){
printf("PANG");
}else{
printf("Hai Xing");
}
return 0;
}
7-3 整数的分类处理
分数 20
作者 陈越
单位 浙江大学
给定 N 个正整数,要求你从中得到下列三种计算结果:
-
A1 = 能被 3 整除的最大整数
-
A2 = 存在整数 K 使之可以表示为 3K+1 的整数的个数
-
A3 = 存在整数 K 使之可以表示为 3K+2 的所有整数的平均值(精确到小数点后 1 位)
输入格式:
输入首先在第一行给出一个正整数 N,随后一行给出 N 个正整数。所有数字都不超过 100,同行数字以空格分隔。
输出格式:
在一行中顺序输出 A1、A2、A3的值,其间以 1 个空格分隔。如果某个数字不存在,则对应输出NONE。
输入样例 1:
8
5 8 7 6 9 1 3 10
输出样例 1:
9 3 6.5
输入样例 2:
8
15 18 7 6 9 1 3 10
输出样例 2:
18 3 NONE
参考答案:
#include <stdio.h>
int main (void) {
int n;
scanf("%d", &n);
int A1, A2, A3, A3_count;
(A1 = -1), (A2 = A3 = A3_count = 0);
for(int i=0; i<n; i++){
int number;
scanf("%d", &number);
if(number % 3 == 0){
A1 = A1 > number ? A1 : number;
}else if((number - 1) % 3 == 0){
A2 ++;
}else if((number - 2) % 3 == 0){
A3 += number;
A3_count ++;
}
}
if(A1 != -1){
printf("%d ", A1);
}else{
printf("NONE ");
}
if(A2 != 0){
printf("%d ", A2);
}else{
printf("NONE ");
}
if(A3 != 0){
printf("%.1lf", (double)A3 / A3_count);
}else{
printf("NONE");
}
return 0;
}
7-4 寻找250
分数 20
作者 陈越
单位 浙江大学

对方不想和你说话,并向你扔了一串数…… 而你必须从这一串数字中找到“250”这个高大上的感人数字。
输入格式:
输入在一行中给出不知道多少个绝对值不超过1000的整数,其中保证至少存在一个“250”。
输出格式:
在一行中输出第一次出现的“250”是对方扔过来的第几个数字(计数从1开始)。题目保证输出的数字在整型范围内。
输入样例:
888 666 123 -233 250 13 250 -222
输出样例:
5
参考答案:
#include <stdio.h>
int main (void) {
int number, count = 1;
while(scanf("%d", &number)){
if(number == 250){
printf("%d", count);
break;
}else{
count ++;
}
}
return 0;
}
7-5 抓老鼠啊~亏了还是赚了?
分数 10
作者 周强
单位 青岛大学
某地老鼠成灾,现悬赏抓老鼠,每抓到一只奖励10元,于是开始跟老鼠斗智斗勇:每天在墙角可选择以下三个操作:放置一个带有一块奶酪的捕鼠夹(T),或者放置一块奶酪(C),或者什么也不放(X)。捕鼠夹可重复利用,不计成本,奶酪每块3元。
聪明的老鼠呢?它们每天可能会派出一只老鼠到墙角,看看墙角有啥:
-
若什么也没有(
X),老鼠们就不高兴了(Unhappy),会有长达一天(也就是第二天)的不高兴期。在不高兴期间,不派出老鼠。不高兴期结束之后,派出老鼠。 -
若有捕鼠夹(
T),这只老鼠被引诱吃掉奶酪并被打死(Dead),老鼠们会有长达两天(也就是第二和第三天)的伤心期。在伤心期间,不派出老鼠。伤心期结束之后,派出老鼠。在这种情况下,抓到1只老鼠可获得奖励10元,但同时也耗费了一块奶酪。注意,如果某一天放置了捕鼠夹但老鼠没有出现,则没有耗费奶酪。 -
若有奶酪(
C),老鼠吃了奶酪会很开心(Happy!),会有长达两天(第二和第三天)的兴奋期。在兴奋期间,即使叠加了不高兴或者伤心,也必定派出老鼠。在这种情况下,没抓到老鼠,而且耗费了一块奶酪。注意,如果某一天放置了奶酪但老鼠没有出现,则奶酪可以下次再用,没有耗费。
现在给你连续几天的操作序列,且已知第一天肯定会派出老鼠,请判断老鼠每天的状态,并计算盈利。
输入格式:
输入在一行中给出连续的由C或T或X组成的不超过70个字符的字符串,以$结束。字符串中每个字符表示这一天的操作( 即X:什么都不放;T:放捕鼠夹;C:放奶酪)。题目保证至少有一天的操作输入。
输出格式:
要求在第一行输出连续的字符串,与输入相对应,给出老鼠的状态:
-
!表示派出老鼠吃到奶酪 -
D表示派出老鼠被打死 -
U表示派出老鼠无所获 -
-表示没有派出老鼠
第二行则应输出一个整数表示盈利。(如果有亏损,则是负数)
输入样例1:
TXXXXC$
输出样例1:
D--U-!
4
输入样例2:
CTTCCX$
输出样例2:
!DD--U
11
参考答案:
#include <stdio.h>
int main (void) {
char str[100], out[100];
int index, money, sad, happy;
index = money = sad = happy = 0;
gets(str);
for(int i=0; i<strlen(str) && str[i] != '$'; i++){
int flag =0;
if(happy != 0){
happy --;
flag = 1;
}else if(sad != 0){
sad --;
flag = 0;
}else{
flag = 1;
}
if(flag){
if(str[i] == 'X'){
sad = 1;
out[index++] = 'U';
}else if(str[i] == 'T'){
sad = 2;
out[index++] = 'D';
money += 7;
}else if(str[i] == 'C'){
happy = 2;
out[index++] = '!';
money -= 3;
}
}else{
out[index++] = '-';
}
}
out[index] = '\0';
puts(out);
printf("%d", money);
return 0;
}
1149

被折叠的 条评论
为什么被折叠?



