《程序设计》编程题|031-040

习题3-5 三角形判断 – 浙大版《C语言程序设计(第4版)》题目集

#include <stdio.h>
#include <math.h>

int main(){
    // 输入
    double point[3][2];
    for(int i=0;i<3;++i){
        for(int j=0;j<2;++j){
            scanf("%lf",&point[i][j]);
        }
    }
    // 处理:求三边长
    double dis[3];
    for(int i=0;i<3;++i){
        int j=(i+1)%3;
        dis[i]=sqrt(pow(point[i][0]-point[j][0],2)
                    +pow(point[i][1]-point[j][1],2));
    }
    // 输出
    if(dis[0]+dis[1]>dis[2]
      && dis[1]+dis[2]>dis[0]
      && dis[2]+dis[0]>dis[1]){
        // 能构成三角形
        double peri=0;
        for(int i=0;i<3;++i){
            peri+=dis[i];
        }
        double periHalf=peri/2;
        double area=sqrt(periHalf*(periHalf-dis[0])*(periHalf-dis[1])*(periHalf-dis[2]));
        printf("L = %.2f, A = %.2f\n",peri,area);
    }else{
        // 不能构成三角形
        printf("Impossible\n");        
    }
    
    return 0;
}

练习4-3 求给定精度的简单交错序列部分和 – 浙大版《C语言程序设计(第4版)》题目集

#include <stdio.h>

int main(){
    // 输入
    double eps;
    scanf("%lf",&eps);
    // 处理:计算部分和
    double sum=1.0;
    double cur=1.0;
    int flag=1;
    for(int i=1;cur>eps;++i){
        flag*=-1;
        cur=1.0/(1+3*i);
        sum+=flag*cur;
    }
    // 输出
    printf("sum = %f\n",sum);
    
    return 0;
}

练习4-6 猜数字游戏 – 浙大版《C语言程序设计(第4版)》题目集

#include <stdio.h>

int main(){
    // 输入
    int target,maxTimes;
    scanf("%d %d",&target,&maxTimes);
    // 处理:猜数字游戏
    int cnt=1;
    while(cnt<=maxTimes){
        int cur;
        scanf("%d",&cur);
        if(cur<0){
            printf("Game Over");
            return 0;
        } 
        if(cur<target) printf("Too small\n");
        else if(cur>target) printf("Too big\n");
        else break;
        ++cnt;
    }
    // 输出
    if(cnt>maxTimes){
        printf("Game Over\n");
    }else{
        if(cnt==1) printf("Bingo!\n");
        else if(cnt<=3) printf("Lucky You!\n");
        else printf("Good Guess!\n");
    }
    
    return 0;
}

练习4-7 求e的近似值 – 浙大版《C语言程序设计(第4版)》题目集

#include <stdio.h>

// 返回:非负整数->n的阶乘 负整数->-1
double fact(int n){
    if(n<0) return -1;
    if(n==0 || n==1) return 1;
    double result=1;
    for(int i=2;i<=n;++i){
        result*=i;
    }
    return result;
}

int main(){
    // 输入
    int n;
    scanf("%d",&n);
    // 处理:求e的近似值
    double sum=0;
    for(int i=0;i<=n;++i){
        sum+=1.0/fact(i);
    }
    // 输出
    printf("%.8f\n",sum);
    
    return 0;
}

练习4-10 找出最小值 – 浙大版《C语言程序设计(第4版)》题目集

#include <stdio.h>
#include <limits.h>
#include <math.h>

int main(){
    // 输入
    int n;
    scanf("%d",&n);
    // 处理:找出最小值
    int min=INT_MAX;
    for(int i=0;i<n;++i){
        int cur;
        scanf("%d",&cur);
        min=fmin(min,cur);
    }
    // 输出
    printf("min = %d\n",min);
    
    return 0;
}

练习4-11 统计素数并求和 – 浙大版《C语言程序设计(第4版)》题目集

#include <stdio.h>
#include <math.h>
#include <stdbool.h>

// 返回:素数->true 否则->false
bool isPrime(int num){
    if(num<=1) return false;
    else if(num==2) return true;
    // 检查该数是否有除本身以外的其他因数
    int limit=sqrt(num)+1;
    for(int i=2;i<=limit;++i){
        if(num%i==0){
            return false;
        }
    }
    return true;
}

int main(){
    // 输入
    int lower,upper;
    scanf("%d %d",&lower,&upper);
    // 处理:统计素数并求和
    int cnt=0,sum=0;
    for(int i=lower;i<=upper;++i){
        if(isPrime(i)){
            sum+=i;
            ++cnt;
        }
    }
    // 输出
    printf("%d %d\n",cnt,sum);
    
    return 0;
}

习题4-1 求奇数和 – 浙大版《C语言程序设计(第4版)》题目集

#include <stdio.h>

int main(){
    // 输入
    int n;
    scanf("%d",&n);
    // 处理:求奇数和
    int sum=0;
    while(n>0){
        if(n%2==1){
            sum+=n;
        }
        scanf("%d",&n);
    }
    // 输出
    printf("%d\n",sum);
    
    return 0;
}

习题4-2 求幂级数展开的部分和 – 浙大版《C语言程序设计(第4版)》题目集

#include <stdio.h>

int main(){
    // 输入
    double x;
    scanf("%lf",&x);
    // 处理:求部分和
    double sum=1.0;
    double deno=1.0;
    double numr=1.0;
    double cur=1.0;
    double n=1.0;
    while(cur>=0.00001){
        deno*=n;
        numr*=x;
        cur=numr/deno;
        sum+=cur;
        ++n;
    }
    // 输出
    printf("%.4f\n",sum);
    
    return 0;
}

习题4-3 求分数序列前N项和 – 浙大版《C语言程序设计(第4版)》题目集

#include <stdio.h>

int main(){
    // 输入
    int n;
    scanf("%d",&n);
    // 处理:计算前n项和
    double sum=0.0;
    double numr=2.0;
    double deno=1.0;
    for(int i=1;i<=n;++i){
        sum+=numr/deno;
        double tmp=numr;
        numr+=deno;
        deno=tmp;
    }
    // 输出
    printf("%.2f\n",sum);
    
    return 0;
}

习题4-4 特殊a串数列求和 – 浙大版《C语言程序设计(第4版)》题目集

#include <stdio.h>

// 返回:n个a组成的数字
int fn(int a,int n){
    int result=0;
    for(int i=1;i<=n;++i){
        result=result*10+a;
    }
    return result;
} 

int main(){
    // 输入
    int a,n;
    scanf("%d %d",&a,&n);
    // 处理:特殊a串数列求和
    int sum=0;
    for(int i=1;i<=n;++i){
        sum+=fn(a,i);
    }
    // 输出
    printf("s = %d\n",sum);

    
    return 0;
}

发表评论