浙江大学 PTA 程序 第一部分 输出倒三角图案 物体自由下落的距离 分段函数 华氏-摄氏温度转换表 求N分之一序列前N项和 求奇数分之一序列前N项和 求简单交错序列前N项和 生成3的乘方表 求组合数

练习2-3 输出倒三角图案 (5 分)

本题要求编写程序,输出指定的由“*”组成的倒三角图案。

输入格式:

本题目没有输入。

输出格式:

按照下列格式输出由“*”组成的倒三角图案。

* * * *
 * * *
  * *
   *
#include "stdio.h"
main()
{
    int i,j,k;
    for(k=0;k<4;k++)
    {
     for(j=0;j<=k;j++)
        
        printf(" ");
            for(i=4;i>k;i--)
                printf("* ");
    printf("\n");    
    }
}

 

练习2-4 温度转换 (5 分)

本题要求编写程序,计算华氏温度150°F对应的摄氏温度。计算公式:C=5×(F−32)/9,式中:C表示摄氏温度,F表示华氏温度,输出数据要求为整型。

输入格式:

本题目没有输入。

输出格式:

按照下列格式输出

fahr = 150, celsius = 计算所得摄氏温度的整数值
#include "stdio.h"
main()
{
	int c,f=150;
	c=5*(f-32)/9;
	printf("fahr = 150, celsius =%d",c);
}


练习2-6 计算物体自由下落的距离 (5 分)

一个物体从100米的高空自由落下。编写程序,求它在前3秒内下落的垂直距离。设重力加速度为10米/秒​2​​。

输入格式:

本题目没有输入。

输出格式:

按照下列格式输出

height = 垂直距离值

结果保留2位小数。

#include "stdio.h"
main()
{
    float h,s,js=10;
    s=3*js;
    h=(0+s)/2;
    printf("height =  %.2f\n",h);    
    
}

练习2-8 计算摄氏温度 (10 分)

给定一个华氏温度F,本题要求编写程序,计算对应的摄氏温度C。计算公式:C=5×(F−32)/9。题目保证输入与输出均在整型范围内。

输入格式:

输入在一行中给出一个华氏温度。

输出格式:

在一行中按照格式“Celsius = C”输出对应的摄氏温度C的整数值。

输入样例:

150

输出样例:

Celsius = 65
#include "stdio.h"
main()
{
	int c,f;
	scanf("%d",&f);
	c=5*(f-32)/9;
	printf("Celsius =%d",c);
}

练习2-9 整数四则运算 (10 分)

本题要求编写程序,计算2个正整数的和、差、积、商并输出。题目保证输入和输出全部在整型范围内。

输入格式:

输入在一行中给出2个正整数A和B。

输出格式:

在4行中按照格式“A 运算符 B = 结果”顺序输出和、差、积、商。

输入样例:

3 2

输出样例:

3 + 2 = 5
3 - 2 = 1
3 * 2 = 6
3 / 2 = 1
#include "stdio.h"
main()
{
	int A,B;
	scanf("%d%d",&A,&B);
	printf("%d + %d = %d\n",A,B,A+B);
	printf("%d - %d = %d\n",A,B,A-B);
	printf("%d * %d = %d\n",A,B,A*B);
	printf("%d / %d = %d\n",A,B,A/B);
}

练习2-10 计算分段函数[1] (10 分)

本题目要求计算下列分段函数f(x)的值:

公式

输入格式:

输入在一行中给出实数x。

输出格式:

在一行中按“f(x) = result”的格式输出,其中x与result都保留一位小数。

输入样例1:

10

输出样例1:

f(10.0) = 0.1

输入样例2:

0

输出样例2:

f(0.0) = 0.0
#include "stdio.h"
#include "math.h"
main()
{
	float i,result;
	scanf("%f",&i);
	if(i!=0)
		result=1/i;
	else result=0;
	printf("f(%.1f) = %.1f\n",i,result);
}

练习2-11 计算分段函数[2] (10 分)

本题目要求计算下列分段函数f(x)的值:

f2-11

注:可在头文件中包含math.h,并调用sqrt函数求平方根,调用pow函数求幂。

输入格式:

输入在一行中给出实数x。

输出格式:

在一行中按“f(x) = result”的格式输出,其中x与result都保留两位小数。

输入样例1:

10

输出样例1:

f(10.00) = 3.16
#include "stdio.h"
#include "math.h"
main()
{
	float i,result;
	scanf("%f",&i);
	if(i>=0)
		result=sqrt(i);
	else result=pow((i+1),2)+2*(i+1)+1/(i+1);
	printf("f(%.2f) = %.2f\n",i,result);
}

练习2-12 输出华氏-摄氏温度转换表 (15 分)

输入2个正整数lowerupperlowerupper≤100),请输出一张取值范围为[lowerupper]、且每次增加2华氏度的华氏-摄氏温度转换表。

温度转换的计算公式:C=5×(F−32)/9,其中:C表示摄氏温度,F表示华氏温度。

输入格式:

在一行中输入2个整数,分别表示lowerupper的值,中间用空格分开。

输出格式:

第一行输出:"fahr celsius"

接着每行输出一个华氏温度fahr(整型)与一个摄氏温度celsius(占据6个字符宽度,靠右对齐,保留1位小数)。

若输入的范围不合法,则输出"Invalid."。

输入样例1:

32 35

输出样例1:

fahr celsius
32   0.0
34   1.1

输入样例2:

40 30

输出样例2:

Invalid.
#include "stdio.h"

main()
{
    int lower,upper,i;
    scanf("%d%d",&lower,&upper);
    if(lower>upper)printf("Invalid.\n");
    else{
        printf("fahr celsius\n");
        for(i=lower;i<=upper;i+=2)
        printf("%d   %4.1f\n",i,(float)5*(i-32)/9);
        }    
}


练习2-13 求N分之一序列前N项和 (15 分)

本题要求编写程序,计算序列 1 + 1/2 + 1/3 + ... 的前N项之和。

输入格式:

输入在一行中给出一个正整数N。

输出格式:

在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后6位。题目保证计算结果不超过双精度范围。

输入样例:

6

输出样例:

sum = 2.450000
  #include "stdio.h"
    main()
    {
        int i,n;
        float sum=0;
        scanf("%d",&n);
        for(i=1;i<=n;i++)
        sum+=(float)1/i;
        printf("sum = %.6f\n",sum);
    }

练习2-15 求简单交错序列前N项和 (15 分)

计算序列 1 - 1/4 + 1/7 - 1/10 + ... 的前N项之和。 

 #include "stdio.h"
    main()
    {
        int i,n,j=-1;
        double sum=0;
        scanf("%d",&n);
        for(i=1;i<=n;i++)
        {j*=-1;
        sum+=(double)1/(3*i-2)*j;
        }
        printf("sum = %.3f\n",sum);
    }

练习2-17 生成3的乘方表 (15 分)

按照幂的递增顺序输出n+1行,每行格式为“pow(3,i) = 3的i次幂的值”。题目保证输出数据不超过长整型整数的范围
说明`pow(),sqrt()`函数次幂 参数应为 **double型**  int型不能正确显示结果
 

#include "stdio.h"
#include "math.h"
main()
{
    double i,n;    
    scanf("%lf",&n);
    for(i=0;i<=n;i++)
    {
     printf("pow(%.0lf,%.0lf) = %.0lf\n",n,i,pow(n,i)); 
    }
    
}


练习2-18 求组合数 (15 分)

本题要求编写程序,根据公式C​n​m​​ =​​n!/m!(n−m)!
​​ 算出从n个不同元素中取出m个元素(m≤n)的组合数。
建议定义和调用函数fact(n)计算n!,其中n的类型是int,函数类型是double。

//第一种简单的
#include "stdio.h"

double fact(int n)
{
	double res=1;
	for(;n>0;n--)res*=n;//2种循环选1个即可 
	//do{ res*=n;	}while(n-->1);//2种循环选1个即可 
	return res;
}
main()
{
	int m,n;
	scanf("%d%d",&m,&n);
	printf("result = %.0lf\n",fact(n)/fact(m)/fact(n-m));
}
//第二种基本的
#include "stdio.h"
double fact(int n)
{
	double res=1;
    //for(;n>0;n--)res*=n;//2种循环选1个即可 
	do{ res*=n;	}while(n-->1);//2种循环选1个即可 
	return res;
}
main()
{
	int m,n;
	double result;
	scanf("%d%d",&m,&n);
	result=fact(n)/fact(m)/fact(n-m);
	printf("result = %.0lf\n",result);
	
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值