PTA1——20题

7-1 然后是几点  分数 15

有时候人们用四位数字表示一个时间,比如 1106 表示 11 点零 6 分。现在,你的程序要根据起始时间和流逝的时间计算出终止时间。

读入两个数字,第一个数字以这样的四位数字表示当前时间,第二个数字表示分钟数,计算当前时间经过那么多分钟后是几点,结果也表示为四位数字。当小时为个位数时,没有前导的零,例如 5 点 30 分表示为 530;0 点 30 分表示为 030。注意,第二个数字表示的分钟数可能超过 60,也可能是负数。

输入格式:

输入在一行中给出 2 个整数,分别是四位数字表示的起始时间、以及流逝的分钟数,其间以空格分隔。注意:在起始时间中,当小时为个位数时,没有前导的零,即 5 点 30 分表示为 530;0 点 30 分表示为 030。流逝的分钟数可能超过 60,也可能是负数。

输出格式:

输出不多于四位数字表示的终止时间,当小时为个位数时,没有前导的零。题目保证起始时间和终止时间在同一天内。

输入样例:

1120 110

输出样例:

1310
#include<stdio.h>
int main(){
    int a;//开始时间
    int sum;//开始时间总分钟
    int m;//开始总分钟数+流逝分钟
    int b;//流逝时间
    int end;//终止时间
    scanf("%d %d",&a,&b);
    sum=a/100*60+a%100;
    m=sum+b;
    end=m/60*100+m%60;
//     while(end<0) 不是同一天的情况
//         end=end+24*60;
    printf("%.3d",end);
    return 0;
}

7-2 发奖金 分数 10

某企业发放奖金,请你编写程序,帮助出纳员用最少的纸币发放奖金。其中奖金精确到元。

注:纸币面额为 100 元、50 元、20 元、10 元、5 元、2 元和 1 元。

输入格式

金额 (以元为单位,小于 10000 的整数)

输出格式

按钞票面额由大到小的顺序输出各种钞票的张数(参见输出样例)

输入样例

5382

输出样例

100元: 53张
 50元:  1张
 20元:  1张
 10元:  1张
  5元:  0张
  2元:  1张
  1元:  0张
#include<stdio.h>
int main(){
int sum;
int a,j,b,k,c,x,d,n,e,y,h,m,i;
scanf("%d",&sum);
a=sum/100;
j=sum%100;
b=j/50;
k=j%50;
c=k/20;
x=k%20;
d=x/10;
n=x%10;
e=n/5;
y=n%5;
h=y/2;
i=y%2;
m=i/1;
printf("100元: %2d张\n",a);
printf(" 50元:  %d张\n",b);
printf(" 20元:  %d张\n",c);
printf(" 10元:  %d张\n",d);
printf("  5元:  %d张\n",e);
printf("  2元:  %d张\n",h);
printf("  1元:  %d张\n",m);
return 0;
}

7-3 推算星期 分数 10

若告诉你今天是星期几,请问:过几天后是星期几?

请编写程序,输入今天的星期数 w 和所过的天数 n,计算并输出未来这一天的星期数 d。

注:用整数值 0 ~ 6 表示星期日、星期一、... 、星期六。

星期
星期日0
星期一1
星期二2
星期三3
星期四4
星期五5
星期六6

输入格式

w 和 n

输出格式

d

注:题目保证 w、n 和 d 的值都在 int 类型的表示范围内。

输入样例

3 100

输出样例

5
#include<stdio.h>
int main()
{
   int w, n;
   scanf("%d %d", &w, &n);
   n= n%7;
   switch((w+n)%7)
   {
   	case 0:
   		printf("%d", 0);
   		break;
   	case 1:
   		printf("%d", 1);
   		break;
   	case 2:
   		printf("%d", 2);
   		break;
   	case 3:
   		printf("%d", 3);
   		break;
   	case 4:
   		printf("%d", 4);
   		break;
   	case 5:
   		printf("%d", 5);
   		break;
   	case 6:
   		printf("%d", 6);
   		break;
//    	default:
//    			printf("错误");
   }
    return 0;
}

7-4 逢7击掌 分数 15

一群人围坐成一圈玩报数的游戏。游戏规则是:

从1开始报数,若遇到7的倍数或者个位为7的数则击掌代替,若犯错则要受罚。

可是这些人都太聪明了,竟然没人犯错!请问同样聪明的你,当报数到 n 时,总击掌次数 c 是多少?

输入格式

n

输出格式

c

输入样例

21

输出样例

4
#include <stdio.h>
int main()
{
   int n; //待输入数据 77
   int c = 0; //计数器 0
   scanf("%d",&n);
   c =c+n / 7;              //是7的倍数  10
   c = c+(n - 7) / 10 + 1;   //个位数为7   12
   c = c-(n - 7) / 70 + 1;   //个位数为7且为7的倍数(从7开始,每70个一个),这些数重复计数了,需要减去
   printf("%d\n", c);
   return 0;
}

// #include<stdio.h>
// int main()
// {
// 	int n,c=0;
// 	int sum=0;
// 	scanf("%d",&n);
// 	if(n>=70)
// {
// 	sum=n/70*16;
// 	c+=sum;
// } 
// 	for(int i=1;i<=n%70;i++)
// {
// 	if(i%7==0||i%10==7)
// {
// 	c++;
// }
// }
// 	printf("%d",c);
// 	return 0;
// }
// 部分正确:
// #include <stdio.h>
// int main()
// {
//    int n, c = 0;  //n是待输入数据,c是计数器
//    scanf("%d", &n);
//    for (int i = 1; i <= n; i++) {
//        //如果符合条件,计数器+1
//        if ( i%7 == 0 || i%10 == 7)
//            c++;
//    }
//    printf("%d\n",c);
//    return 0;
// }

7-5 数油桶(简)  分数 10

工人师傅将油桶码成如下图所示的梯形,数了数底层的油桶数和层数,就知道有多少油桶了。你知道他是怎么算的吗?

输入格式

底层油桶数和层数

输出格式

油桶的数量

输入样例

7 4

输出样例

22
#include<stdio.h>
int main()
{
   int a, b;
   scanf("%d%d", &a, &b);
   int d = (b*(a+(a-(b-1))))/2;
   printf("%d", d);
    return 0;
}


7-6 聪明的高斯(简) 分数 10

著名德国数学家高斯(Gauss)上小学时,老师让大家计算:

1+2+3+4+⋯+100= ?

当大家都还在埋头做加法时,高斯却最先算出了答案。你知道他是怎么算的吗?

请编写程序,输入正整数 n,计算 s=1+2+3+4+⋯+n,输出 s 的值。

输入格式

n

输出格式

s

输入样例

100

输出样例

5050
#include<stdio.h>
int main(){
    int n=0;
    int s;
    int m;
    scanf("%d",&n);
    for(m=1;m<=n;m++)
        s=m+s;
    printf("%d",s);
    return 0;
}
// #include<stdio.h>
// int main()
// {
//     int n,s;
//     scanf("%d",&n);
//     s=n*(n+1)/2;
//     printf("%d",s);
//     return 0;
// }

7-7 快速求和 分数 10

请编写程序,输入整数 n,快速计算:

输入格式

n

输出格式

s

要求:输出 5 位小数,末位四舍五入。

输入样例1

4

输出样例1

0.80000

输入样例2

300

输出样例2

0.99668


#include <stdio.h>
#include <math.h>
int main()
{
    int n;
    double s;
    scanf("%d",&n);
    s=n*1.0/(n+1);//小数,所以乘以1.0
    printf("%.5f",s);
}
//s=1/n-1/(n+1)
//s=n/(n+1)

7-8 买U盘 分数 10

IT 协会举办程序设计竞赛,准备购买 U 盘作奖品。请编写程序,根据活动经费和 U 盘单价预估可购买 U 盘的最大数量。

输入格式

活动经费和 U 盘单价

输出格式

可购买 U 盘的最大数量

输入样例1

807.5 47.5

输出样例1

17

输入样例2

514.7 19.8

输出样例2

25
#include <stdio.h>
int main()
{
	double a,b;
	int c;
	scanf("%lf %lf",&a,&b);
	c = a/b;
	printf("%d",c);
	return 0;
}

7-9 买复印纸 分数 10

某办公室到年底准备将剩余的办公经费全部用于购买复印纸。请编写程序,输入办公经费的余额和每包复印纸的单价,计算并输出最多可购买多少包复印纸。

输入格式

办公经费的余额和每包复印纸的单价

输出格式

可购复印纸的最大数量

输入样例1

611.2 38.2

输出样例1

16

输入样例2

1369.2 23.4

输出样例2

58
#include <stdio.h>
int main()
{
	double a,b;
	int c;
	scanf("%lf %lf",&a,&b);
	c = a/b;
	printf("%d",c);
	return 0;
}

7-11 全能球员 分数 10

已知有 n 名球类运动员,其中:

a 人会篮球,b 人会排球,c 人会足球;

p 人会篮球和排球,q 人会篮球和足球,r 人会排球和足球。

请问:三种球都会的人数 x 是多少?

输入格式

n、a、b、c、p、q 和 r

输出格式

x

输入样例

38 20 17 26 7 12 11

输出样例

5
#include <stdio.h>
int main()
{
	int n,a,b,c,p,q,r,x;
	scanf("%d %d %d %d %d %d %d",&n,&a,&b,&c,&p,&q,&r);
	x=n-(a+b+c-p-q-r);
	printf("%d",x);
	return 0;
 }

7-12 打妖怪 分数 10

话说孙大圣保唐僧西天取经,路上遇到一妖怪。妖怪共有 v 滴血,大圣每打一棒就能使妖怪失去 h 滴血,妖怪一旦没血就会立即死去。大圣打了 n 棒将妖怪打死。

请编写程序,输入 v 和 h,输出 n。

输入格式

v 和 h

输出格式

n

注:题目保证 a、b 和 n 的值都在 int 类型的表示范围内。

输入样例

2510 1000

输出样例

3
#include <stdio.h>
int main()
{
	int v,h,n;
	scanf("%d %d",&v,&h);
    if(v%h!=0)
    {
		n=v/h+1;
	}
	else
	{
	n = v/h;
}
	printf("%d",n);
	return 0;
}

7-13 小明的家庭合影 分数10 

青岛旅游,拍了很多照片。回家以后小明把有自己的照片全都放进了自己的相册中,然后从剩余照片中把有妈妈的照片都放进了妈妈的相册中,最后把剩下来的照片都放进了爸爸的相册中。

爸爸回来以后把小明和妈妈相册中有自己的照片取出来放进了自己的相册中,一共有 a 张。

妈妈回来以后又把小明和爸爸相册中有自己的照片取出来放进了自己的相册中,一共有 b 张。

根据 a 和 b 来判断,小明是和妈妈的合影多,还是和爸爸的合影多呢?

假设小明和妈妈的合影比和爸爸的合影多 c 张,请编写程序,求 c 的值。

输入格式

a b

输出格式

c

提示:c 可能为正数、负数或零。

输入样例

3 6

输出样例

3
#include<stdio.h>
int main(){
	int a,b,c;
	scanf("%d %d",&a,&b);
	printf("%d",b-a);
	return 0; 
} 

7-16 旅游派车 分数 10

某企业组织 n 名职工春游,每辆旅游车可容纳 b 名乘客,需要 k 辆旅游车。请你编写程序,帮助工作人员计算需要派多少辆车。

输入格式

n 和 b

输出格式

k

输入样例

85 36

输出样例

3
#include<stdio.h>
int main()
{
    int n , b ,k;
    scanf("%d%d",&n,&b);
    if((n%b)!=0){
        k=(n/b)+1;
    }
    else{
    k=n/b;
        }
    printf("%d",k);
    return 0;
}

7-18 花生换核桃 分数 10

小松鼠有很多花生,小熊有很多核桃。小松鼠想找小熊换核桃:每 9 颗花生换回 2 颗核桃。

请帮小松鼠算算最多能换得多少核桃?

输入格式

花生数

输出格式

核桃数

注:题目保证所有值都在 int 类型的表示范围内。

输入样例

50

输出样例

10
#include <stdio.h>
int main()
{
	int a,b,c;
	scanf("%d",&a);
	c = a/9;
	b = c*2;
	printf("%d",b);
	return 0;
}

7-19 装酒 分数 10

已知酒瓶容量为 b 升,现有 w 升酒,需要 n 只瓶子才能盛下全部这些酒。请编写程序,输入 p 和 t,计算并输出 n。

输入格式

b 和 w

输出格式

n

样例输入1

9.45 85.05

样例输出1

9

样例输入2

0.85 146.6

样例输出2

173
#include<stdio.h>
int main()
{
    double b,w,n;
    scanf("%lf %lf",&b,&w);
    n=w/b;
    if(n-(int)n!=0)//n-整n
        n++;
	printf("%d",(int)n);
    return 0;
}

7-20 学分差 分数 10

本学期小张完成了 z 个学分,小王完成了 w 个学分,两人相差 s 个学分。

请编写程序,输入 z 和 w,计算并输出 s。

输入格式

z 和 w

输出格式

s

输入样例1

17 23

输出样例1

6

输入样例2

25 21

输出样例2

4
#include<stdio.h>
int main(){
    int z,w,s;
    scanf("%d %d",&z,&w);
    if (z>=w)
    {
        s=z-w;
    }
    else
    {
        s=w-z;
    }
    printf("%d",s);
    return 0;
}
// 简单


版权声明:本文为m0_65558669原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。