c语言程序设计(浙大版)PTA(自我监督版(ง •_•)ง)

编程题

目录

编程题

练习2-1 Programming in C is fun!

练习2-3 输出倒三角图案

练习2-4 温度转换

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

练习2-8 计算摄氏温度

练习2-9 整数四则运算

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

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

练习2-12 输出华氏-摄氏温度转换表

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

练习2-14 求奇数分之一序列前N项和

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

练习2-17 生成3的乘方表

练习2-18 求组合数

习题2-1 求整数均值

习题2-2 阶梯电价

习题2-3 求平方与倒数序列的部分和

习题2-4 求交错序列前N项和

习题2-5 求平方根序列前N项和

习题2-6 求阶乘序列前N项和


练习2-1 Programming in C is fun!

#include <stdio.h>
int main(void){
    printf("Programming in C is fun!");
    return 0;
}

练习2-3 输出倒三角图案

#include <stdio.h>
 
int main(void) {
    int i, j;
    for ( i = 0; i < 4; i++ ) {    //行数,共有4行。
        for ( j = 0; j < i; j++ )
            printf(" ");           //每行的空格数。
        for ( j = 3-i; j > 0;j-- )
            printf("* ");          //每行的“* ”数。
        printf("*");               //每行最后一个“*”不带空格。
        printf("\n");              //换行
    }
    return 0;
}

练习2-4 温度转换

#include <stdio.h>
int main(){
    //根据公式计算并输出
    printf("fahr = 150, celsius = %d",5*(150-32)/9);
    
    return 0;
}

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

#include<stdio.h>
int main()
{
    float h;       //用h变量记录下落距离
    h=0.5*10*9;    //位移公式:h=½gt² 
    printf("height = %.2f",h);//保留小数点后两位,输出下落距离
    return 0;
}

练习2-8 计算摄氏温度

#include <stdio.h>
int main(){
    int h;                            //记录用户输入的华氏温度
    scanf("%d",&h);                    //用户输入
    printf("Celsius = %d\n",5*(h-32)/9); //计算并输出

    return 0;
}

练习2-9 整数四则运算

#include <stdio.h>
int main(){
    int a,b;    //记录需要计算的两个整数
    scanf("%d%d",&a,&b); /*注意%d%d 是按十进值格式输入两个数值。输入时,在两个数据之间可以用一个或多个空格、tab 键、回车键分隔。
如果使用 , 来分隔输入的 %d, 相应的输入时也需要添加, */

    //输出格式有空格
    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);//除

    return 0;
}

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

#include <stdio.h>
int main(){
    float x;        
    scanf("%f",&x);
    if(x==0){    //x为0时
        printf("f(0.0) = 0.0",x);    
    }else{        //x不为0时
        printf("f(%.1f) = %.1f",x,1/x);
    }

    return 0;
}

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

#include <stdio.h>
#include <math.h>
int main(){
    float x,result;
    scanf("%f",&x);
    if(x>=0){            //x大于等于0时
        result=sqrt(x);  //对x开根号
    }else{               //x小于0时
        result=pow(x+1,2) + 2 * x + 1 / x ;
    }
    printf("f(%.2f) = %.2f",x,result);

    return 0;
    
}

练习2-12 输出华氏-摄氏温度转换表

#include <stdio.h>
int main(){
    int lower,upper;
    float celsius;
    int i;
    scanf("%d%d",&lower,&upper);
    if(lower<=upper && upper <= 100){    //用户输入合法
        printf("fahr celsius\n");
        for(i=lower;i<=upper;i=i+2){     //循环输出温度对应表的每一行
            celsius=5.0 * (i-32) / 9;
            printf("%d%6.1f\n",i,celsius);
        }
    }else{        //用户输入不合法
        printf("Invalid.");
    }

    return 0;
}

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

#include <stdio.h>
int main(){
    int n,i;
    double sum=0;
    scanf("%d",&n);
    for(i=1;i<=n;i++){    //循环计算前n项的和
        sum += 1.0 / i;
    }

    printf("sum = %.6lf",sum);

    return 0;
}

练习2-14 求奇数分之一序列前N项和

#include <stdio.h>
int main(){
    int n,i;
    double sum=0;
    scanf("%d",&n);
    for(i=1;i<=2*n;i=i+2){    //循环计算前n项的和
        sum += 1.0 / i;
    }
    printf("sum = %.6lf",sum);
    return 0;
}

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

#include <stdio.h>
int main(){
    int i=1,n,num=1;    //num记录已进行到第num项
    float sum=0;        //记录前n项之和
    scanf("%d",&n);     //用户输入
    while(num<=n){      //将前n项循环相加
        if(num%2==0){    //若是奇数项则相加
            sum=sum-1.0/i;
        }else{            //若是偶数项则相减
            sum=sum+1.0/i;
        }
        num++;
        i=i+3;
    }
    printf("sum = %.3f",sum);    //输出结果

    return 0;
    
}

练习2-17 生成3的乘方表

#include <stdio.h>
#include <math.h>
int main(){
    int n,i;
    scanf("%d",&n);
    for(i=0;i<=n;i++){
        printf("pow(3,%d) = %.0f\n",i,pow(3,i));// %.0f表示浮点数不要小数点后的结果,取整
    }
    return 0;
}

练习2-18 求组合数

#include <stdio.h>
double fact(int n){    //计算n的阶乘
    double sum=1;
    for(int i=1;i<=n;i++){
        sum=sum*i;
    }
    return sum;
}
int main(){
    int m,n;
    double result;
    scanf("%d%d",&m,&n);
    result = fact(n)/(fact(m) * fact(n-m)); //调用定义的阶乘函数计算公式
    printf("result = %.0lf",result);        //按照格式要求输出结果

    return 0;
}

习题2-1 求整数均值

#include <stdio.h>
int main (){
    int a,b,c,d;
    double average,sum=0;
    scanf("%d%d%d%d",&a,&b,&c,&d);
    sum=a+b+c+d;
    average = sum / 4;
    printf("Sum = %.0lf; Average = %.1lf",sum,average);

    return 0;
}

习题2-2 阶梯电价

#include <stdio.h>
int main (){
    double electricity;    //电量
    double cost=0;         //电费
    scanf("%lf",&electricity);
    if(electricity < 0){
        printf("Invalid Value!");
    }else if(electricity<=50){
        cost = electricity * 0.53;
        printf("cost = %.2lf",cost);
    }else{
        cost =50 * 0.53+(electricity-50)*0.58;
        printf("cost = %.2lf",cost);
    }

    return 0;
}

习题2-3 求平方与倒数序列的部分和

#include <stdio.h>
int main(){
    int m,n;
    double sum=0;
    scanf("%d%d",&m,&n);
    for(;m<=n;m++){
        sum=sum+m*m+(1.0/m);
    }
    printf("sum = %.6lf",sum);
    return 0;
}

习题2-4 求交错序列前N项和

#include <stdio.h>
int main(){
    int n;
    int i,j;
    double sum=0;
    scanf("%d",&n);
    for(i=1,j=1;i<=n;i++,j=j+2){
        if(i%2!=0){
            sum=sum+(double)i/j;    //注意i/j,因i,j皆为整型,相除为0,则强制类型转换成浮点型
        }else{
            sum=sum-(double)i/j;
        }
    }
    printf("%.3lf",sum);
    return 0;
}

习题2-5 求平方根序列前N项和

#include <stdio.h>
#include <math.h>
int main(){
    int n;
    double sum=0;
    scanf("%d",&n);
    while(n>0){
        sum = sum + sqrt(n);
        n--;
    }
    printf("sum = %.2lf",sum);
    return 0;
}

习题2-6 求阶乘序列前N项和

#include <stdio.h>
double fact(int n){
    double sum = 1;
    for(int i=1;i<=n;i++){
        sum=sum * i;
    }
    return sum;
}
int main(){
    int n;
    double sum = 0;
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        sum=sum + fact(i);
    }
    printf("%.0lf",sum);
    return 0;
}

练习3-2 计算符号函数的值

#include <stdio.h>
int main (){
    int n,result;
    scanf("%d",&n);
    if(n<0){
        result = -1;
    }else if (n==0){
        result = 0;
    }else{
        result = 1;
    }
    printf("sign(%d) = %d",n,result);
    return 0;
}

练习3-3 统计学生平均成绩与及格人数

#include <stdio.h>
int main(){
    int n,count=0,i;
    float sum=0,grade=0;
    scanf("%d",&n);
    if(n!=0){
        for(i=0;i<n;i++){
            scanf("%f",&grade);
            sum=sum+grade;
            if(grade>=60){
                count++;
            }
        }
        printf("average = %.1f\ncount = %d",sum/n,count);
    }else{
        printf("average = 0.0\ncount = 0");
    }
    
    return 0;
}

练习3-4 统计字符

#include <stdio.h>
int main(){
    int letter=0,blank=0,digit=0,other=0;
    char c;
    for(int i=0;i<10;i++){
        c=getchar();
        if((c>='a'&&c<='z')||(c>='A'&&c<='Z')){
            letter++;
        }else if(c==' '||c=='\n'){
            blank++;
        }else if (c>='0'&&c<='9'){
            digit++;
        }else{
            other++;
        }
    }
    printf("letter = %d, blank = %d, digit = %d, other = %d",letter,blank,digit,other);
    return 0;
}

练习3-5 输出闰年

#include<stdio.h>
int main(void)
{
    int i, year;
    
    scanf("%d", &year);  
    if ( year > 2003 && year <= 2100 )//注意这里要小于等于21世纪的上届
    {
        for ( i = 2004; i <= year; i++ )
        {
            if ( i % 4 == 0 && i % 100 != 0)
                printf("%d\n", i);            
        }
    }
    else if ( year > 2000 && year <2004)            
        printf("None");
    else 
        printf("Invalid year!");
    
    return 0;
}

练习3-7 成绩转换

#include <stdio.h>
int main(){
    float grade;
    char level;
    scanf("%f",&grade);
    if(grade>=90){
        level = 'A';
    }else if(grade>=80&&grade<90){
        level = 'B';
    }else if(grade>=70&&grade<80){
        level = 'C';
    }else if(grade>=60&&grade<70){
        level = 'D';
    }else{
        level = 'E';
    }
    printf("%c",level);
    return 0;
}

练习3-8 查询水果价格

#include <stdio.h>
int main(){
    float a[4]={3.00,2.50,4.10,10.20};
    int num;
    printf("[1] apple\n[2] pear\n[3] orange\n[4] grape\n[0] exit\n");
    for(int i=0;i<5;i++){
        scanf("%d",&num);
        if(num==0){
            break;
        }else if (num>=1&&num<=4){
            printf("price = %.2f\n",a[num-1]);
        }else{
            printf("price = 0.00\n");
        }
    }
    return 0;
}

习题3-1 比较大小

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

习题3-2 高速公路超速处罚

#include <stdio.h>
int main(){
    float speed,limit;
    float x;
    scanf("%f%f",&speed,&limit);
    x=(speed-limit)/limit * 100;
    if(x>=10&&x<50){
        printf("Exceed %.0f%%. Ticket 200",x);//%%在输出中将被替换为一个单独的%字符
    }else if(x>=50){
        printf("Exceed %.0f%%. License Revoked",x);
    }else{
        printf("OK");
    }
    return 0;
}

习题3-3 出租车计价

#include <stdio.h>
int main(){
    float distance,wait;
    float cost=0;
    scanf("%f%f",&distance,&wait);
    if(distance<=3){
        cost = 10;
    }else if (distance >3 && distance<=10){
        cost = 10+(distance-3)*2;
    }else{
        cost = 24+(distance-10)*3;
    }

    if(wait>=5){
        cost =cost + ((int)wait/5)*2;
    }

    printf("%.0f",round(cost));
    return 0;
}

习题3-4 统计学生成绩

#include <stdio.h>
int main(){
    int personNum[5]={0};
    float grade;
    int i,n;
    scanf("%d",&n);
    for(i=0;i<n;i++){
        scanf("%f",&grade);
        if(grade>=90){
            personNum[0]++;
        }else if(grade>=80&&grade<90){
            personNum[1]++;
        }else if(grade>=70&&grade<80){
            personNum[2]++;
        }else if(grade>=60&&grade<70){
            personNum[3]++;
        }else{
            personNum[4]++;
        }
    }
    for(i=0;i<4;i++){
        printf("%d ",personNum[i]);
    }
    printf("%d",personNum[i]);
    return 0;
}

习题3-5 三角形判断

#include <stdio.h>
#include <math.h>
 
int main()
{
    double x1,y1,x2,y2,x3,y3;
    double a,b,c,l,s;
    scanf("%lf %lf %lf %lf %lf %lf",&x1,&y1,&x2,&y2,&x3,&y3);
    a=sqrt(pow((x1-x2),2)+pow((y1-y2),2) );
    b=sqrt(pow((x1-x3),2)+pow((y1-y3),2) );
    c=sqrt(pow((x3-x2),2)+pow((y3-y2),2) );
    if((a+b)<=c||(a+c)<=b||(c+b)<=a){
        printf("Impossible");
    }else{
        l=(a+b+c)/2;
        s=sqrt(l*(l-a)*(l-c)*(l-b));
        printf("L = %.2f, A = %.2f",a+b+c,s ); 
    }

    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值