《程序设计》编程题|021-030

练习3-2 计算符号函数的值 – 浙大版《C语言程序设计(第4版)》题目集

#include <stdio.h>

// 返回:正数->1 负数->-1 零->0
int sign(int num){
    if(num>0) return 1;
    else if(num<0) return -1;
    return 0;
}

int main(){
    // 输入
    int n;
    scanf("%d",&n);
    // 输出
    printf("sign(%d) = %d\n",n,sign(n));

    return 0;
}

练习3-3 统计学生平均成绩与及格人数 – 浙大版《C语言程序设计(第4版)》题目集

#include <stdio.h>

int main(){
    // 输入
    int n;
    scanf("%d",&n);
    // 处理:无需开辟数组
    int sum=0,cnt=0;
    for(int i=1;i<=n;++i){
        int cur;
        scanf("%d",&cur);
        sum+=cur;
        if(cur>=60){
            ++cnt;
        }
    }
    double average=0;
    if(n!=0){    // 易错点
        average=(double)sum/n;        
    }
    // 输出
    printf("average = %.1f\n",average);
    printf("count = %d\n",cnt);
    
    return 0;
}

练习3-4 统计字符 – 浙大版《C语言程序设计(第4版)》题目集

#include <stdio.h>
#include <ctype.h>

int main(){
    const int size=10;
    // 处理:统计字符个数
    int cnt[4]={0};
    char cur;
    for(int i=1;i<=10;++i){
        cur=getchar();
        if(isalpha(cur)) ++cnt[0];
        else if(cur==' '|| cur=='\n') ++cnt[1];
        else if(isdigit(cur)) ++cnt[2];
        else ++cnt[3];
    }
    // 输出
    printf("letter = %d, blank = %d, digit = %d, other = %d\n"
          ,cnt[0],cnt[1],cnt[2],cnt[3]);
    return 0;
}

练习3-5 输出闰年 – 浙大版《C语言程序设计(第4版)》题目集

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

// 返回:闰年->true 否则->false
bool isLeapYear(int n){
    return (n%4==0 && n%100!=0) || n%400==0;
}

int main(){
    // 输入
    int endYear;
    scanf("%d",&endYear);
    // 边界处理
    if(endYear<=2000 || endYear>=2101){
        printf("Invalid year!\n");
        return 0;
    }
    // 处理 输出[2001,endYear]中的闰年
    bool isExist=false;
    for(int i=2001;i<=endYear;++i){
        if(isLeapYear(i)){
            printf("%d\n",i);
            isExist=true;
        }
    }
    // 输出
    if(!isExist){
        printf("None\n");
    }
    
    return 0;
}

练习3-7 成绩转换 – 浙大版《C语言程序设计(第4版)》题目集

#include <stdio.h>

// 返回:百分制成绩->五分制成绩
char score2level(int score){
    if(score>=90) return 'A';
    else if(score>=80 && score<90) return 'B';
    else if(score>=70 && score<80) return 'C';
    else if(score>=60 && score<70) return 'D';
    return 'E';
}

int main(){
    // 输入
    int score;
    scanf("%d",&score);
    // 输出
    printf("%c\n",score2level(score));
    
    return 0;
}

练习3-8 查询水果价格 – 浙大版《C语言程序设计(第4版)》题目集

#include <stdio.h>

#define APPLE 3.00
#define PEAR 2.50
#define ORANGE 4.10
#define GRAPE 10.20

int main(){
    // 输入
    int order;
    scanf("%d",&order);
    // 输出:
    // 菜单
    printf("[1] apple\n");
    printf("[2] pear\n");
    printf("[3] orange\n");
    printf("[4] grape\n");
    printf("[0] exit\n");
    // 查询水果价格
    for(int i=0;i<5 && order!=0;++i){
        switch(order){
            case 1:
                printf("price = %.2f\n",APPLE);
                break;
            case 2:
                printf("price = %.2f\n",PEAR);
                break;
            case 3:
                printf("price = %.2f\n",ORANGE);
                break;
            case 4:
                printf("price = %.2f\n",GRAPE);
                break;
            default:
                printf("price = 0.00\n");
        }
        scanf("%d",&order);
    }
    
    return 0;
}

习题3-1 比较大小 – 浙大版《C语言程序设计(第4版)》题目集

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

int main(){
    // 输入
    int nums[3];
    for(int i=0;i<3;++i){
        scanf("%d",&nums[i]);
    }
    // 处理:
    // 找出最小值 最大值 总和
    int max=INT_MIN;
    int min=INT_MAX;
    int sum=0;
    for(int i=0;i<3;++i){
        sum+=nums[i];
        max=fmax(max,nums[i]);
        min=fmin(min,nums[i]);
    }
    // 找出中间值
    int mid=sum-max-min;
    // 输出
    printf("%d->%d->%d\n",min,mid,max);
    
    return 0;
}

习题3-2 高速公路超速处罚 – 浙大版《C语言程序设计(第4版)》题目集

#include <stdio.h>

int main(){
    // 输入
    double speed,limit;
    scanf("%lf %lf",&speed,&limit);
    // 处理:计算超速百分比
    double ex=100*(speed-limit)/limit;
    if(ex<10){
        printf("OK\n");
    }else if(ex>=10 && ex<50){
        printf("Exceed %.0f%%. Ticket 200\n",ex);
    }else{
        printf("Exceed %.0f%%. License Revoked\n",ex);
    }
    
    return 0;
}

习题3-3 出租车计价 – 浙大版《C语言程序设计(第4版)》题目集

#include <stdio.h>

int main(){
    // 输入
    double distance,time;
    scanf("%lf %lf",&distance,&time);
    // 处理:总费用=等待时间计费+里程计费
    double sum=0;
    // 等待时间计费:
    sum+=2*(int)(time/5);
    // 里程阶梯计费:
    // 起步价
    sum+=10;
    if(distance>3 && distance<=10){
    // 3-10公里
        sum+=2*(distance-3);
    }else if(distance>10){
    // 10公里以上
        sum+=14;
        sum+=3*(distance-10);
    }
    // 输出
    printf("%.0f\n",sum);
    
    return 0;
}

习题3-4 统计学生成绩 – 浙大版《C语言程序设计(第4版)》题目集

#include <stdio.h>

// 返回:百分制成绩->五分制成绩
char score2level(int score){
    if(score>=90) return 'A';
    else if(score>=80 && score<90) return 'B';
    else if(score>=70 && score<80) return 'C';
    else if(score>=60 && score<70) return 'D';
    return 'E';
}

int main(){
    // 输入
    int n;
    scanf("%d",&n);
    // 统计学生成绩
    int cnt[5]={0};
    for(int i=0;i<n;++i){
        int cur;
        scanf("%d",&cur);
        switch (score2level(cur)){   
            case 'A':
                ++cnt[0];
                break;
            case 'B':
                ++cnt[1];
                break;
            case 'C':
                ++cnt[2];
                break;
            case 'D':
                ++cnt[3];
                break;
            case 'E':
                ++cnt[4];
                break;
        }
    }
    // 输出
    for(int i=0;i<5;++i){
        printf("%d",cnt[i]);
        if(i<4){
            printf(" ");
        }
    }
     printf("\n");
    
    return 0;
}

发表评论