PTA21——40题

7-21 三角形面积

请编写程序,输入三角形的底 b 和高 h,计算并输出三角形的面积 a。

输入格式

b 和 h

输出格式

a

输入样例

19.77 48.36

输出样例

478.04

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

7-22 求序列平方和   部分正确

请编写程序,输入正整数 n,计算平方和 s=12+22+32+⋯+n2。

输入格式

整数 n

注:n 在 int 类型范围内,格式限定符采用 %d。

输出格式

实数 s

注:s 在 double 类型范围内,格式限定符采用 %.15g。

输入样例

100

输出样例

338350
//部分正确 #include<stdio.h>
// int main(){
//     int n,m;
// double s;
// scanf("%d",&n);
// for(m=1;m<=n;m++)
//     s=m*m+s;
// printf("%.15g",s);
// return 0;
// }

#include <stdio.h>
int fun(int n)
{
	return n*n;
}
int main()
{
	int i,n;
	double s=0;
	scanf("%d",&n);
	for(i=1;i<=n;i++)
	s+=fun(i);
	printf("%.15g\n",s);
    return 0;
}

7-23 求序列立方和   部分正确

编写程序,输入正整数 n,计算立方和 s=13+23+33+⋯+n3。

输入格式

整数 n

注:n 在 int 类型范围内,格式限定符采用 %d。

输出格式

实数 s

注:s 在 double 类型范围内,格式限定符采用 %.15g。

输入样例

40

输出样例

672400
#include<stdio.h>
int main(){
    int n,m;
    double s;
    scanf("%d",&n);
    for(m=1;m<=n;m++)
        s=m*m*m+s;
    printf("%.15g\n",s);
    return 0;
}
// #include <stdio.h>
// int fun(int n)
// {
// 	return n*n*n;
// }
// int main()
// {
// 	int i,n;
// 	double s=0;
// 	scanf("%d",&n);
// 	for(i=1;i<=n;i++)
// 	s+=fun(i);
// 	printf("%.15g",s);
//     return 0;
// }

7-24 书香节    部分正确

当当网每年书香节都推出购书优惠活动:每满100元就减50元。请编写程序,输入你购书的金额,计算并输出可减金额和付款金额。

输入格式

购书金额

输出格式

可减金额
付款金额

样例输入1

228.76

样例输出1

100.00
128.76

样例输入2

1000.0

样例输出2

500.00
500.00
#include<stdio.h>
int main(){
    double a;
    double b,m;
    scanf("%lf",&a);
    b=a/100*50;
    m=a-b;
    printf("%.2lf\n%.2lf\n",b,m);
    return 0;
}
// #include <stdio.h>
// int main()
// {
// 	double a,m,s;
// 	scanf("%lf",&a);
// 	m=a/100*50;
// 	s=a-m;
// 	printf("%.2lf\n%.2lf",m,s);
	
// 	return 0;
// }

7-25 买U盘(误差修正版)

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

输入格式

活动经费和 U 盘单价

输出格式

可购买 U 盘的最大数量

输入样例

660.8 47.2

输出样例

14

输入样例2

504.9 19.8

输出样例2

25

要求:考虑实数的误差。

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

7-26 聪明的高斯

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

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

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

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

输入格式

n

输出格式

s

输入样例

100000

输出样例

5000050000

提示:本题要使用 long long int 类型。

//变量用long  %lld
#include<stdio.h>
int main()
{
	long long int n,s;
    scanf("%lld", &n);
    s=n*(n+1)/2;
    printf("%lld", s);
    return 0;
 }

7-28 何时空仓

某仓库现存货物 s 箱,每天上午出货 m 箱、下午进货 n 箱,若s≥m>n≥0,则第 k 天将会出现空仓的情况。请你帮仓库管理员编写程序,输入s、m 和 n,计算并输出 k。

输入格式

s,m,n  (s≥m>n≥0)

输出格式

k

输入样例

4705 268 193

输出样例

61
#include<stdio.h>
int main()
{                   
    int s,m,n,k=0;
    scanf("%d %d %d",&s,&m,&n);
    while(s>0){
        k++;
        s=s-m;
        if(s<=0)
        break;
        s=s+n;
    }
    printf("%d\n",k);
    return 0;    
}

7-29 烟囱的高度

已知人离烟囱的距离为 a,人的眼睛离地高度为 b,人看烟囱顶时的仰角为 θ,求烟囱的高度 h。

输入格式

a b θ

注:a、b 的单位为米,均为小数。仰角 θ 的单位为角度,包括度、分和秒数,其中度、分为整数,秒数为小数。

输出格式

h

注:h 的单位为米。

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

输入样例

27.8 1.2 32 48 59.5

输出样例

19.13

#include <stdio.h>

int main(){
	double a,b,m,n,s,h;//,h1,h2;
	double p=3.1415926;
	scanf("%lf %lf",&a,&b);
	scanf("%lf %lf %lf",&m,&n,&s);
	h=m+(n/60)+(s/3600);
	h=h*(p/180); 
	//h2=a*((sin*h1)/(cos*h1))+b;
	//printf("%.2lf",h2);
	printf("%.2lf",a*(sin(h)/cos(h))+b);
	return 0;
	}

7-30 求矩形面积 

已知一个矩形的长和宽,计算该矩形的面积。矩形的长和宽用整数表示,由键盘输入。

输入格式:

输入在一行中给出2个绝对值不超过1000的整数A和B,表示矩形的长和宽。

输出格式:

在一行中输出矩形的面积。

输入样例:

4 3

输出样例:

12
#include <stdio.h>
int main()
{
int a,b,s;
scanf("%d %d",&a,&b);
s=a*b;
printf("%d\n",s);
return 0;
}

7-31 求圆周长和面积 

已知一个圆的半径,计算该圆的周长和面积,结果保留2位小数。半径用实数表示,由键盘输入。设圆周率等于3.14159。

输入格式:

输入在一行中给出1个实数r,表示圆的半径。

输出格式:

在一行中输出圆的周长和面积,结果保留2位小数。数据之间留一个空格。

输入样例:

3

输出样例:

18.85 28.27
#include <stdio.h>

int main()
{
	int r;
	double s, c;
    double p=3.14159;
    scanf("%d", &r);	
	s = p*r*r;
	c = 2*p*r;
	printf("%0.2lf %0.2lf", c, s);
	return 0;
}

7-32 交换两实数的整数部分

输入两个实数,将其整数部分交换后输出,结果保留2位小数。

输入格式:

输入2个实数A和B。

输出格式:

输出交换整数部分之后的两个实数。数据之间以一个“,”分隔。

输入样例:

23.45 54.22

输出样例:

54.45,23.22
#include<stdio.h>
int main()
{
    double  A,B,e,f,m,n;
    int a,b;
    scanf("%lf %lf",&A,&B);
    a=(int)A;
    b=(int)B;
    e=A-a;
    f=B-b;
    m=b+e;
    n=a+f;
    printf("%.2lf,%.2lf\n",m,n);
    return 0;
}

7-33 温度转换

输入一个华氏温度f(整数),要求根据公式c=5(f-32)/9计算并输出摄氏温度,其中f由键盘输入,结果保留1位小数。

输入格式:

输入在一行中给出1个绝对值不超过1000的整数f,表示华氏温度。

输出格式:

在一行中输出摄氏温度,结果保留1位小数。

输入样例:

100

输出样例:

37.8
#include<stdio.h>
int main()
{
    
double f;
double c;
    scanf("%lf", &f);
    c = 5*(f-32)/9;
    printf("%.1lf\n", c);
    return 0;
 
}

7-34 反序显示一个四位数

从键盘上输入一个四位整数,将结果按反序显示出来。

输入格式:

输入在一行中给出1个四位整数a。

输出格式:

在一行中输出a的反序数。

输入样例:

1234

输出样例:

4321
#include<stdio.h>
int main()
{
    int n,a,b,c,d;
    scanf("%d",&n);//1234
    a=n/1000;//1
    b=(n%1000)/100;//2
    c=((n%1000)%100)/10;//3
    d=(((n%1000)%100)%10);//4
    n= d*1000+c*100+b*10+a;
    printf("%d",n);
    return 0;
}

7-35 英文字母的大小写转换

输入一个大写字母c1和一个小写字母c2,把c1转换成小写,c2转换成大写,然后输出。

输入格式:

输入在一行中给出2个字母,第1个是大写字母c1,第2个是小写字母c2。

输出格式:

在一行中输出把c1转换成小写,c2转换成大写后的结果。数据之间留一个逗号。

输入样例:

Y e

输出样例:

y,E
int main()
{
      char a,b;
      scanf("%c %c",&a,&b);
      if(a >= 'a' && a <= 'z')
          a -= 32;
      else if(a >= 'A' && a <= 'Z')
         a += 32;
    if(b >= 'a' && b <= 'z')
          b -= 32;
      else if(b >= 'A' && b <= 'Z')
         b += 32;
    printf("%c,%c",a,b);
    return 0;
}

7-36 4位整数的数位和

输入一个4位数的整数,求其各数位上的数字之和。

输入格式:

输入在一行中给出1个4位的正整数n。

输出格式:

在一行中输出n的各数位上的数字之和。

输入样例:

1234

输出样例:

10
#include<stdio.h>
int main(){
    int a,m,n,t,f;
    scanf("%d",&a);
    m=a%10;
    n=a/10%10;
    t=a/100%10;
    f=a/1000%10;
    printf("%d",(m+n+t+f));
    return 0;
}

7-37 5门课的平均分

输入5门课程成绩(整数),求平均分(结果保留1位小数)。

输入格式:

输入在一行中给出5个整数,表示5门课成绩。

输出格式:

在一行中输出5门课的平均分(结果保留1位小数)。

输入样例:

66 77 88 99 79

输出样例:

81.8
#include <stdio.h>
int main()
{
   
  float a,b,c,d,e,m;
    scanf("%f %f %f %f %f",&a,&b,&c,&d,&e);
    m=(a+b+c+d+e)/5;
    printf("%0.1f",m);
    return 0;
}

7-38 等边三角形面积

数学基础对于程序设计能力而言很重要。对于等边三角形面积,请选择合适的方法计算之。

输入格式:

测试数据有多组,处理到文件尾。每组测试输入1个实数表示等边三角形的边长。

输出格式:

对于每组测试,在一行上输出等边三角形的面积,结果保留2位小数。

输入样例:

1.0
2.0

输出样例:

0.43
1.73
//s=sqrt(3)a*a/4等边三角形的面积
#include <stdio.h>
#include <math.h>
int main()
{
	float a,t,s;
	while(scanf("%f",&a)!=EOF)
	{
		s=sqrt(3)*a*a/4;
		printf("%.2f\n",s);
	}
	return 0;
}

7-39 程序改错:温度转化

以下程序的功能是:输入一个华氏温度,求出对应的摄氏温度是多少。两种温度之间的关系为C=5/9(F-32),其中的C和F分别代表摄氏温度和华氏温度。

#include <stdio.h>;

int main(void);

{int f,c;

scanf("%d%d",f,c);

c=5/9(f-32);

printf("摄氏温度=%d\n",c);

return 0

}

调试运行该程序,改正程序中所有的语法错误和逻辑错误。

输入格式:

输入一个代表华氏温度的数。

输出格式:

输出摄氏温度的值,保留两位小数,最后换行。

输入样例:

100

输出样例:

37.78
#include<stdio.h>
int main()
{
float f,c;
//double c;
    scanf("%f", &f);
    c = 5*(f-32)/9;
    printf("%.2lf", c);
    return 0;
 
}

7-40 统计闰年个数

现行格里高利历法的置闰规则可以概括为:四闰百不闰,四百闰。编程序实现:输入一个年份,求出到这一年的年末总共经历了多少个闰年,限定不能使用循环结构。假定从公元第一天开始,就实施格里高利历法。

(提示:求出经历了多少个4年、多少个100年、多少个400年。
1.假如所有能被4整除的年份都是闰年,那么到第n年的年末总共经历了多少个闰年?
2.假如所有能被100整除的年份都不是闰年,那么到第n年的年末总共减少多少个闰年?
3.假如所有能被400整除的年份都是闰年,那么到第n年的年末总共增加多少个闰年?)

输入格式:

输入一个代表年份的正整数。

输出格式:

输出闰年个数,最后换行。

输入样例:

2020

输出样例:

490
#include<stdio.h>
int main()
{
    int x,y,z,m,n;
    scanf("%d",&x);
    m=x/400;
    z=x/100;
    n=x/4;
    y=m+n-z;
    printf("%d",y);
    return 0;
}

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值