SCAUoj教材习题第三、四章


一、教材习题第三章

1.从银行贷款金额为d,准备每月还款额为p,月利率为r。请编写程序输入这三个数值,计算并输出多少个月能够还清贷款,输出时保留1位小数。如果无法还清,请输出“God”
在这里插入图片描述

输入格式 三个数,分别为货款金额、每月还款和月利率,以空格分隔,均为非负数,其中d,p,r>=0
输出格式 需要还款的月份
输入样例 50 50 0.01
输出样例 1.0

代码如下(示例):

#include<stdio.h>
#include<math.h>
int main()
{
    int d,p;
    double r,month;
    scanf("%d%d%lf",&d,&p,&r);//这道题有点坑,关键就是if,else if,else括号内语句的顺序
    if(d==0)//就是我没有也不可能并且不想贷款
    {
        month = 0.0;
        printf("%.1f\n",month);
    }
    else if(p<=r*d)//每个月还款额小于r*d就不可能还完
    {
        printf("God\n");
    }
//    else if(r==0)//可以不用的
//    {
//        month = d/p;
//        printf("%.1f\n",month);
//    }
    else
    {
        month = log(p/(p-d*r))/log(1+r);//题目给的公式
        printf("%.1f\n",month);
    }
    return 0;
}

二、教材习题第四章

1.根据如下数学公式,编写程序输入x,计算并输出y的值,保留两位小数
在这里插入图片描述

输入格式 输入一个实数x
输出格式 输出函数值
输入样例 0
输出样例 0.00

代码如下(示例):

#include<stdio.h>
int main()
{
    double x=0,y=0; //实数x要为double型哦
    scanf("%lf",&x);
    if(x<1)
    {
        y=x;
        printf("%.2lf\n",y);
    }
    else if(x<10)//意思是排除了x<1的情况,即1<=x且x<10
    {
        y = 2*x-1;
        printf("%.2lf\n",y);
    }
    else
    {
        y = 3*x-11;
        printf("%.2lf\n",y);
    }
    return 0;
}

2.编写程序,由键盘输入3个整数,输出其中最大的数。
输入格式 三个整数,空格分隔
输出格式 最大的数
输入样例 3 6 4
输出样例 6

代码如下(示例):

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

3.编写程序,由键盘输入一个百分制的整数成绩,要求输出对应的成绩等级。90分以上为A,80到89分为B,70到79分为C,60到69分为D,60分以下为E。成绩不在0到100之间时输出“error”
输入格式 一个整数成绩
输出格式 输出对应的等级或error
输入样例 99
输出样例 A

代码如下(示例):

#include<stdio.h>
int main()
{
    int grade;
    scanf("%d",&grade);
    if(grade>=0 && grade<=100)
    {
        switch(grade/10)
        {
        case 10:
        case 9:
            printf("A\n");
            break;
        case 8:
            printf("B\n");
            break;
        case 7:
            printf("C\n");
            break;
        case 6:
            printf("D\n");
            break;
        case 5:
        case 4:
        case 3:
        case 2:
        case 1:
        case 0:
            printf("E\n");
            break;
        }//如果把下面的else改成default放在switch语句中会出错,如果-1/10=0,会输出E
    }
    else
    {
        printf("error\n");
    }
    return 0;
}

4.编写程序,输入一个数字字符,输出其前一个和后一个的数字字符,如果输入的是0前一个输出“first”,9后一个则输出“last”,输入的不是数学字符,输出“error”
输入格式 一个字符
输出格式 输出结果
输入样例 0
输出样例 first 1

代码如下(示例):

#include<stdio.h>
int main()
{
    char ch;
    scanf("%c",&ch);
    if(ch>='0'&&ch<='9')
    {
        if(ch=='0')
        {
            printf("first 1\n");
        }
        else if(ch=='9')
        {
            printf("8 last\n");
        }
        else
        {
            printf("%c %c\n",ch-1,ch+1);
        }
    }
    else
    {
        printf("error\n");
    }
    return 0;
}

切,题目要求都写得不清不楚,一道啥比题目罢了

5.编写程序,输入三个整数变量hour(小时)、minute(分钟)、second(秒)代表一个时间,输出该时间20秒以后的时间。
输入格式
一行三个整数,分别代表小时、分钟、秒,中间使用冒号分隔
输出格式
输出一个时间,数字间用冒号分隔
小时、分钟、秒均占两个数字位,不足位用0补足
输入样例
15:30:41
输出样例
15:31:01

代码如下(示例):

#include<stdio.h>
int main()
{
    int hour,minute,second;
    scanf("%d:%d:%d",&hour,&minute,&second);
    if(second+20>=60)
    {
        second = second + 20 - 60;
        if(minute+1==60)
        {
            minute = 0;
            if(hour+1==24)
            {
                hour=0;
            }
            else
                hour = hour + 1;
        }
        else
            minute = minute + 1;
    }
    else
        second = second + 20;
    printf("%02d:%02d:%02d\n",hour,minute,second);
    return 0;
}

标程如下:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int h,m,s;
    scanf("%d:%d:%d", &h,&m,&s);
    s=s+20;
    if(s>59)
    {
        s=s%60;
        m++;
        if(m>59)
        {
            m=m%60;
            h++;
            if(h>23)
                h=0;
        }
    }
    printf("%02d:%02d:%02d\n", h, m, s);
    return 0;
}

总结

码字码累了,在线找个能帮我码字的对象hhh……(bushi~~)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值