第三章
1、分期还款(加强版)
从银行贷款金额为d,准备每月还款额为p,月利率为r。
请编写程序输入这三个数值,
计算并输出多少个月能够还清贷款,
输出时保留1位小数。
如果无法还清,请输出“God” 计算公式如下:
输入格式
三个数,分别为货款金额、每月还款和月利率,以空格分隔,均为非负数,其中d,p,r>=0
输出格式
需要还款的月份
输入样例
50 50 0.01
输出样例
1.0
#include<stdio.h>
#include<math.h>
int main()
{
float d,p,r,m,k,n;
scanf("%f %f %f",&d,&p,&r);
if(p-d*r<0)//每月还款比要交的利率低
{
printf("God\n");
}
else if(d==0)//特殊情况要自己写出来,结果保留最后一位小数点。
{
printf("0.0");
}
else
{
k=log(p/(p-d*r));
n=log(1+r);
m=k/n;
printf("%.1f",m);
}
return 0;
}
第四章
1、前序和后续字符
编写程序,输入一个数字字符,输出其前一个和后一个的数字字符,如果输入的是0前一个输出
“first”,9后一个则输出“last”,输入的不是数学字符,输出“error”
输入样例
0
输出样例
first 1
#include<stdio.h>
int main()
{
char n;
scanf("%c",&n);
if(n=='0')
{
printf("first %c",n+1);
}
else if(n=='9')
{
printf("%c last",n-1);
}
else if(n>'0' && n<'9')
{
printf("%c %c",n-1,n+1);
}
else
{
printf("error");
}
return 0;
}
反思:
这个题目引申出来一些知识点。
(1)C语言怎样把字符1变成数字1?直接使用字符1减去字符0即可,如:‘1’ - ‘0’
这样做可行是因为字符度0到字符9在ascii编码时是连续的,字符0的ascii值是48,字符1的ascii值是49,其他数字字回符依次往后排,而ascii值实际上就是char型整数,所以可以用答两个字符相减得到结果。本题的字符数字转化成字符数字也可以加一减一来进行。
2、20秒后的时间
编写程序,输入三个整数变量hour(小时)、minute(分钟)、
second(秒)代表一个时间, 输出该时间20秒以后的时间。
*输入格式*
一行三个整数,分别代表小时、分钟、秒,中间使用冒号分隔
*输出格式*
输出一个时间,数字间用冒号分隔
小时、分钟、秒均占两个数字位,不足位用0补足
*输入样例*
15:30:41
*输出样例*
15:31:01
#include<stdio.h>
#include<string.h>
int main()
{
int hour,minute,second;
scanf("%d:%d:%d",&hour,&minute,&second);//记得里面要写冒号且要用英文冒号
second=second+20;
if(second>=60)//定秒的条件
{
second=second-60;
minute=minute+1;
}
if(minute>=60)//定分钟的条件
{
minute=minute-60;
hour=hour+1;
}
if(hour>=24)//定小时条件
{
hour=hour-24;
}
printf("%02d:%02d:%02d",hour,minute,second);
//02d表示两位整数,前面没有的补0 .同理03d表示三位整数 */
return 0;
}